Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Support

Pages: 1 ... 52 53 [54] 55 56 ... 59
796
General Discussions / SBHTTPD
« on: January 25, 2008, 11:36:36 PM »
To install ScriptBasic (scriba & sbhttpd) on a CentOS 5 (Red Hat recompile), place the Linux files in the following directories.
Code: [Select]

/usr/bin
-rwxr-xr-x 1 root root 508070 Jan 25 21:30 sbhttpd
-rwxr-xr-x 1 root root 482077 Jan 24 19:21 scriba

/usr/lib/scriba
-rwxr-xr-x 1 root root   43894 May 11  2006 cgi.so
-rwxr-xr-x 1 root root 2016573 May 16  2006 curl.so
-rwxr-xr-x 1 root root   18328 May 11  2006 dbg.so
-rwxr-xr-x 1 root root  738419 May 11  2006 gd.so
-rwxr-xr-x 1 root root   11024 May 11  2006 hash.so
-rwxr-xr-x 1 root root   22367 Jul 24  2007 mt.so
-rwxr-xr-x 1 root root   21646 Jan 17 23:18 mysql.so
-rwxr-xr-x 1 root root  454982 May 11  2006 odbc.so
-rwxr-xr-x 1 root root   31223 May 16  2006 pgsql.so
-rwxr-xr-x 1 root root  358109 May 11  2006 psql.so
-rwxr-xr-x 1 root root   51669 May 11  2006 re.so
-rwxr-xr-x 1 root root   10581 May 11  2006 t.so
-rwxr-xr-x 1 root root    2772 May 11  2006 ux.so
-rwxr-xr-x 1 root root  595207 May 11  2006 zlib.so

/usr/include/scriba
-rw-r--r-- 1 root root 5438 May 11  2006 cgi.bas
-rw-r--r-- 1 root root  731 May 16  2006 curl.bas
-rw-r--r-- 1 root root  721 May 11  2006 dbg.bas
-rw-r--r-- 1 root root 8331 May 11  2006 error.bas
-rw-r--r-- 1 root root 2274 May 11  2006 gd.bas
-rw-r--r-- 1 root root 2028 May 11  2006 hash.bas
-rw-r--r-- 1 root root  214 May 11  2006 heb.bas
-rw-r--r-- 1 root root 9968 May 11  2006 modinst.bas
-rw-r--r-- 1 root root 1178 Jul 24  2007 mt.bas
-rw-r--r-- 1 root root   10 May 11  2006 my.bas
-rw-r--r-- 1 root root 1709 May 11  2006 mysql.bas
-rw-r--r-- 1 root root  590 May 11  2006 odbc.bas
-rw-r--r-- 1 root root 1592 May 16  2006 pgsql.bas
-rw-r--r-- 1 root root 2119 May 11  2006 re.bas
-rw-r--r-- 1 root root  945 May 11  2006 t.bas
-rw-r--r-- 1 root root  578 May 11  2006 time.bas
-rw-r--r-- 1 root root  551 May 11  2006 ux.bas
-rw-r--r-- 1 root root  997 May 11  2006 zlib.bas

/etc/scriba
-rw-r--r-- 1 root root 1682 Jan 25 20:37 basic.conf
-rw-r--r-- 1 root root 1102 Jan 25 20:35 basic.conf.txt

/var/log/scriba
-rw-r--r-- 1 root root 1626 Jan 25 21:32 app.log
-rw-r--r-- 1 root root    0 Jan 25 20:34 err.log
-rw-r--r-- 1 root root  976 Jan 25 21:33 hit.log
-rw-r--r-- 1 root root    0 Jan 25 20:30 panic.log
-rw-r--r-- 1 root root    5 Jan 25 21:32 pid.txt
-rw-r--r-- 1 root root    0 Jan 25 20:34 start.log

Note: Create empty log files to get started.


Here is a 'bare bones' basic.conf file for both scriba and sbhttp under CentOS 5.
Code: [Select]

dll ".so"
module "/usr/lib/scriba/"
include "/usr/include/scriba/"
preproc (
  internal (
    dbg "/usr/lib/scriba/dbg.so"
   )
 )
maxstep 0
maxlocalstep 0
maxlevel 55440
maxmem 0
servers (
  server (
    port 8080
    ip "127.0.0.1"
    protocol "http"
   )
  threads 1024
  listenbacklog 3
  home "/var/www/html/app-bin/"
  proxyip 1
  pid (
    file "/var/log/scriba/pid.txt"
    delay 10
    wait (
      period 10
      length 1
     )
   )
  errmsgdest 3
  nolog 0
  log (
    panic (
      file "/var/log/scriba/panic.log"
     )
    app (
      file "/var/log/scriba/app.log"
     )
    err (
      file "/var/log/scriba/err.log"
     )
    hit (
      file "/var/log/scriba/hit.log"
     )
    stat (
      file "/var/log/scriba/stat.log"
     )
   )
  msg404 """

Error 404 page not found

Page not found
We regretfully inform you that the page you have requested can not be found
on this server.

In case you are sure that this is a server configuration error, please
contact the site administrator.

"""
  code404 "200 OK"
 )


The ScriptBasic interpreter and application server both use the same compiled configuration file. Maintain your basic.conf.txt file in a text editor. Next convert it to the binary format ScriptBasic uses by typing the following command at a console prompt in the /etc/scriba directory.

scriba -k basic.conf.txt


At a minimal, make sure these proxy modules are enabled.
Code: [Select]

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so


Here is what I added to the end of Apache's httpd.conf file.
Code: [Select]

# ScriptBasic Application Server
ProxyPass /app-bin/ http://127.0.0.1:8080/
ProxyPassreverse /app-bin/ http://127.0.0.1:8080/


You can optionally set the SCRIBACONF environment variable to the full path and filename of where your basic.conf file is located and named. (/etc/scriba/basic.conf is the default location and name if the ScriptBasic environment variable isn't set)

After restarting Apache for the proxy addition, enter the following at a console prompt.

sbhttpd -start

All requests to the /app-bin directory are sent to the ScriptBasic application server to be process.

To stop the server, kill -9 the process ID # in the pid.txt file.

John

797
General Discussions / SBHTTPD
« on: January 25, 2008, 02:32:51 PM »
Hi John,

The sibawastart.bas program I believe is part of the authorization extension to Apache and isn't needed to get the application server (sbhttpd) running. Just remove those startup lines in the basic.conf file.

I have three separate sbhttpd servers running on the scriptbasic.net server that work great.

Feel free to send me your basic.conf to have a peek at if you like.

support@scriptbasic.org

John

798
Tutorials / ScriptBasic CGI Programming Tutorial
« on: January 13, 2008, 01:16:30 AM »
Part 3 - Working With Forms

In Part 3 we will be creating a simple form that will ask for the user name. If submit is clicked without entering anything a error message will display allowing re-entry. If they type something in then the page will display "Hello user_name". If they click on the cancel button, they are taken to the ScriptBasic home page. All this in one small page of code.

sbform.bas
Code: [Select]

#! /usr/bin/scriba -c

INCLUDE cgi.bas

OPTION cgi$Method cgi::Get OR cgi::Post

err_msg = 0

IF cgi::RequestMethod() = "POST" AND cgi::PostParam("nav") = "Cancel" THEN
  cgi::Header(302, "text/html")
  PRINT "Location: /home/index.php\n"
  cgi::FinishHeader()
  END
END IF

cgi::Header(200, "text/html")
cgi::FinishHeader()

PRINT """
<html>
<header>
<title>ScriptBasic Forms</title>
<script type="text/javascript">
   function focusit() {
    var tempval=eval(document.getElementById('name'))
    tempval.focus()
    tempval.select()
  }
</script>
</header>
"""

IF cgi::RequestMethod() = "POST" THEN
  IF cgi::PostParam("my_name") > "" THEN
    PRINT "<body>\n"
    PRINT "<h2>Hello " & cgi::PostParam("my_name") & ".</h2><br>\n"
    GOTO All_Done
  ELSE
    err_msg = 1
  END IF
END IF

PRINT """
<body onLoad="javascript:focusit();">
<form action="/cgi-bin/sbform.bas" method="POST">
<h2>What is your name?</h2>
<input type="text" name="my_name" size="30" id="name"><br>
<br>
<input type="submit" name="nav" value="Submit">&nbsp;<input type="submit" name="nav" value="Cancel">
</form>
"""

IF err_msg THEN PRINT """<br><h2><font color="red">Please enter your name!</font></h2>\n"""

All_Done:

PRINT """
</body>
</html>
"""

END


Run Program

cgi::RequestMethod()
This function determines how the page was called. (Get or Post)


cgi::PostParam("my_name")
This function returns the value for the form field with a name="my_name".


PRINT "<h2>Hello " & cgi::PostParam("my_name") & ".</h2><br>\n"
This works as well.
Code: [Select]

PRINT "<h2>Hello ",cgi::PostParam("my_name"),".</h2><br>\n"


Page Redirection
Code: [Select]

cgi::Header(302, "text/html")
PRINT "Location: /home/index.php\n"
cgi::FinishHeader()


This header will redirect the page to the URL specified by "Location:".

799
What's New / ScriptBasic Developer Services Available
« on: January 09, 2008, 05:01:18 PM »
Is it time to convert that custom legacy application to a desktop GUI or a browser based solution? ScriptBasic is the fastest and most cost effect way to retain your business logic and get more out of your application. The project manager for ScriptBasic is a software developer with 30 years of experience and is available to convert your application or assist you with the task. Contact support@scriptbasic.org  for more information about this service.
  • DOS character based application conversions
  • Data migration to SQL
  • Interfaces (web services, data capture devices and shipping systems)
  • Custom programming, design and project management

John Spikowski
ScriptBasic Project Manager
www.scriptbasic.org

800
Tutorials / ScriptBasic CGI Programming Tutorial
« on: January 07, 2008, 02:24:38 AM »
Part 2 - Working with MySQL

In part 2, I'm going to show how to access MySQL and display the result set in a table. The MySQL extension is a C library interface to the database engine. This example will show you how easy it is to work with a SQL database interface.

Test Table Definition



Code: [Select]

#!/usr/bin/scriba -c

INCLUDE cgi.bas
INCLUDE mysql.bas

OPTION cgi$Method cgi::Get

dbh = mysql::RealConnect("host","user","password","database")

cgi::Header 200,"text/html"
cgi::FinishHeader

PRINT """
<HTML>
<HEAD>
<title>MySQL Tutorial</title>
</HEAD>
<BODY>
<FONT face="Verdana, Arial, Helvetica, sans-serif">
<TABLE border="1" cellpadding="3">
"""

mysql::query(dbh,"SELECT * FROM contact")
WHILE mysql::FetchHash(dbh, col_name)

PRINT "<TR>\n"
PRINT "<TD>",col_name{"ID"},"</TD>\n"
PRINT "<TD>",col_name{"NAME"},"</TD>\n"
PRINT "<TD>",col_name{"ADDRESS"},"</TD>\n"
PRINT "<TD>",col_name{"CITY"},"</TD>\n"
PRINT "<TD>",col_name{"STATE"},"</TD>\n"
PRINT "<TD>",col_name{"ZIP"},"</TD>\n"
PRINT "<TD>",col_name{"PHONE"},"</TD>\n"
PRINT "<TD>",col_name{"EMAIL"},"</TD>\n"
PRINT "<TD>",col_name{"URL"},"</TD>\n"
PRINT "</TR>\n"

WEND

PRINT """
</TABLE>
</FONT>
</BODY>
</HTML>
"""

mysql::Close(dbh)

END


Run Program

INCLUDE mysql.bas
The mysql.bas include file declares the functions to access the MySQL library.

dbh = mysql::RealConnect("host","user","password","database")
The MySQL library call makes the connection to the database. If the database is defined in the basic.conf file then you can use an abbreviated version of the function to connect to the MySQL interface.
Code: [Select]
mysql::Connect("conf_defined_name")
This moves the login information out of the program and into a binary configuration file. The dbh variable contains the connection handle and shouldn't be modified by the programmer. It is used to pass to the other mysql:: functions.

mysql::query(dbh,"SELECT * FROM contact")
This function passes your SQL statement to MySQL. If a query is passed, then you could use the AffectedRows() function to return how many rows in the record set.
Code: [Select]
number_of_rows = mysql::AffectedRows(dbh)

WHILE mysql::FetchHash(dbh, col_name)
The WHILE directive will loop through the record set until the FetchHash() function returns false. This version of fetch uses an associative array to store the row from the record set. This allows you to reference the data by the column name. (case sensitive) There are times when this may not be practicle. (like a JOIN) In this case you would use the FetchArray() function to return the row from the result set.
Code: [Select]
WHILE mysql::FetchArray(dbh, array_var)

PRINT "<TR>\n"
PRINT "<TD>",array_var[0],"</TD>\n"
PRINT "<TD>",array_var[1],"</TD>\n"
PRINT "<TD>",array_var[2],"</TD>\n"
PRINT "<TD>",array_var[3],"</TD>\n"
PRINT "<TD>",array_var[4],"</TD>\n"
PRINT "<TD>",array_var[5],"</TD>\n"
PRINT "<TD>",array_var[6],"</TD>\n"
PRINT "<TD>",array_var[7],"</TD>\n"
PRINT "<TD>",array_var[8],"</TD>\n"
PRINT "</TR>\n"

WEND



PRINT "<TD>",col_name{"ID"},"</TD>\n"
This will populate the cell with the current row "ID" column data.

WEND
This defines the end of the WHILE loop.

mysql::Close(dbh)
This explicitly closes the MySQL connection. ScriptBasic will close all database connections on it's own upon exiting the script.

801
Tutorials / ScriptBasic CGI Programming Tutorial
« on: January 06, 2008, 02:09:41 AM »
Hi Peter,

Quote from: "Peter Verhas"

I welcome anyone starting a tutorial like that. I believe that Wiki is the right place for that.


Using the forum to generate the initial tutorial allows more interaction with the other forum members. Once completed, as you say, the wiki is where this should end up.

Thanks for the feedback !

John

802
Tutorials / ScriptBasic CGI Programming Tutorial
« on: January 04, 2008, 01:10:49 AM »
Part 1 - Hello World

This thread will be an on-going tutorial on how to use ScriptBasic for your CGI scripting needs. I will start this first post with the standard "Hello World" with the minimal amount of code needed for ScriptBasic (scriba) to generate a dynamic page. It is assumed that you have ScriptBasic installed and configured correctly. (another tutorial at a later date)

Code: [Select]
#! /usr/bin/scriba -c

INCLUDE cgi.bas

OPTION cgi$Method cgi::Get

cgi::Header(200, "text/html")
cgi::FinishHeader()

a = "Hello World !"

PRINT """
<html>
<header>
<title>ScriptBasic CGI</title>
</header>
<body>
<center>
"""

PRINT "<h1>" & a & "</h1>\n"

PRINT """
</center>
</body>
</html>
"""

END

#! /usr/bin/scriba -c
The first line of your program starts the ScriptBasic interpreter and the -c option tells scriba that this is a CGI program.

INCLUDE cgi.bas
The cgi.bas include file contains both ScriptBasic code and declares to C functions in the cgi.dll (.so) shared library. Access to cgi.bas functions and variables within it's name space is accomplished by using the cgi:: reference.
(similar to Perl)

OPTION cgi$Method cgi::Get
The OPTION statement is used to define what CGI methods are valid for the page. In our example, only GET request will be allowed. The following constants are available as an a argument for the OPTION statement. You may combine values using the OR operator.
Code: [Select]
' constants for setting option cgi$Method
const None   = &H00000000
const Get    = &H00000001
const Post   = &H00000002
const Upload = &H00000006
const Put    = &H00000008
const Del    = &H00000010
const Copy   = &H00000020
const Move   = &H00000040
const Head   = &H00000080

Header() & FinishHeader() functions
These two functions build the the basic page header that all HTML pages require.

a = "Hello World !"
Here we assign a variable with a string value. Variables do not have to have their type declared or dimensioned using a DIM statement.

PRINT """   """
The PRINT statement outputs to the browser whatever is between the triple quotes verbatim as it is in your program keeping what formating you have used.

PRINT "<h1>" & a & "</h1>\n"
The & character is used to concatenate the quoted text and the string variable holding our "Hello World !" stored value. The \n causes ScriptBasic to print a new line character. (more on using the \ character later)

END
The terminates the ScriptBasic program, ending it's connection with the web server. (optional end of program keyword)

803
GTK-Server / GTK demo
« on: December 04, 2007, 03:04:20 AM »
Peter (GTK-server author) extended the GTK.bas include file by wrapping common used GTK-server command strings in ScriptBasic functions. The Dictionary program is an example of using these wrapper functions.

Function Wrapper Matrix

The GTK-server started off as a TCP/named pipe interface and then Peter created a ScriptBasic extension module (DLL / Share Object). All commands are sent as one string. You may have noticed my GUI() wrapper around the GTK::gtk(gtk_cmd) function call to the GTK-server in the "Hello World" example.  This allows me to pass normal function like arguments and the GUI() function builds the command string.

I just wanted to clear this up as it might be confusing for someone not familiar with the GTK-server software.

John

804
Round Table / Roll Call
« on: December 04, 2007, 02:35:30 AM »
Quote

I have a stock picking program implemented with ScriptBasic which I run every week. I have made this program freeware and have a user base of perhaps 20, so that's 20 additional users by extension. My ScriptBasic program has been highly maintainable, which allows me to keep up with (unnanounced) changes by my quote server.


Posted on the ScriptBasic mailing list.

805
Round Table / Roll Call
« on: December 03, 2007, 06:34:32 PM »
I thought I would post how I use ScriptBasic to accomplish some of the tasks I have to maintain on a ongoing basis.

I wrote a program that connects to a MLS (real estate) web service  passing SOAP requests, I get a list of photos that have been added or changed in a the last three hour period. The program parses the XML response and generates a 'lftp' script to download the files off the MLS FTP server. This runs as a cron job 8 times a day. It has been rock solid for over a year.

I used Aestiva's HTMLOS Basic like scripting solution for years till I was able to get the ScriptBasic application server going on the site. Converting the HTMLOS applications to SBHTTPD was much easier then anticipated and wish I have done it a long time ago. (not to mention the $800 per URL I save using ScriptBasic)

I have a many small scriba scripts I use on the server to take care of tasks that I have automated. ScriptBasic seems to fit the bill no matter what size task I challenge it with.

John

806
Round Table / Roll Call
« on: December 03, 2007, 02:47:04 PM »
Quote from: "Andrew Kingwell"

I have been and still use Scriba extensively for a suite of cross-platform (Windows and Linux) data collection and billing programmes. These handle multiple telecommunications networks across the UK.


Posted on the ScriptBasic mailing list

807
Round Table / Roll Call
« on: December 03, 2007, 12:31:41 PM »
Quote

We use an older version of Script basic, to which we added external 'C'
function libraries.  These external function libraries implement commands used by the building automation system (BAS) at the University of Toronto.
(many millions of square feet).

Scriptbasic is used in the control of a large number of building environment systems on campus.  A notable implementation is pressure control within a large atrium being served by 7 supply fans (60,000 CFM each) and 4 return fans(120,000 CFM each).  This implementation can maintain a positive pressure in the building envelope of 0.03" wc.

Scriptbasic has also been extended to communicate with our BACnet server, for the purposes of monitoring third party implementations.  BACnet is the ASHRAE standard for Building Automation and Control networks.

In doing so, we have added certain DB calls to Oracle, but they are application specific, not via ODBC or other standard.


Quote

What we also added was a novel use of gcc pre-compiler.

There were no macros, so I created 'C' macros that emit BASIC statements, and then pre-compiled our basic source code using "gcc -E".

The most important reason we chose Scriptbasic, was extensibility and portability.  We chose Basic, because it was typeless, and did not require fixed array sizes.

We can code things like this (unrealistic, but a decent example):
Code: [Select]

DO_EVERY_INIT

DO_EVERY(300) {

 On_status = get("080 AH01 VS1")
 If ( isdefined(On_status)) then
     If (On_status = "OFF" ) then
         PAM("Air handler 1 is off in error")
     else
        supply_temp = get("080 AH01 SPT")
        If ( isdefined(supply_temp)) then
           If (supply_temp > 30 ) then
              PAM("Air handler 1 supply temp is in alarm")
           Endif
    Endif
 endif

} DO_EVERY_END;

... many more DO_EVERY blocks...

DO_INTERVAL


So, our macros enable the code within to be executed every X seconds.
The do-every macros are implemented using arrays.   Since we do not have to
define array sizes, we can have as many as we like, as the macros manage the index.

The use of "is-defined" enables us to know if the "get" function was
successful: the result will be undefined on error.  All errors detected are announced by the basic extension libraries, not the basic code, to improve readability.

The typelessness of basic allows us to use the return of the get as either a string (compare to off) or a number (compare to 30). The also improves readability and use.  We do not need a special function for each return type.

In this example, PAM is the "print alarm message" function,that prints messages all over campus. The name was chosen as it is the same as an operator command.

This is a very BIG and responsible installation. Most programs in our installation are tiny control blocks similar to the above,that were implemented by parsing a report of all existing control blocks using perl, and auto-generating the scriptbasic code.

Scriptbasic was the tool that allowed us to abandon a very old Fortran based command line configured control engine.  We now have approx. 50 scriptbasic programs running on Solaris,that centrally controls the building systems for most of the campus.

I guess scriptbasic is used in the control of perhaps 6 million sq ft, in Canada's largest University.


Posted on the ScriptBasic mailing list

808
GTK-Server / GTK Glade - Hello World
« on: December 02, 2007, 11:42:42 PM »
This example is using the GTK Glade designer to create a fixed size window, apply a fixed position grid and putting a label in the center of the screen. The ScriptBasic event handler is looking for the close window system button event to exit the REPEAT loop.



hello.bas
Code: [Select]

' Glade Hello World

' GTK Interface
include gtk.bas

' GTK Interface Function
FUNCTION GUI(g0, g1, g2, g3, g4, g5, g6, g7, g8, g9)
LOCAL gtk_cmd
gtk_cmd = STR(g0) & " " & STR(g1) & " " & STR(g2) & " " & STR(g3) & " " & STR(g4) & " " & STR(g5) & " " & STR(g6) & " " & STR(g7) & " " & STR(g8) & " " & STR(g9)
GUI = GTK::gtk(gtk_cmd)
END FUNCTION

' GTK Function DEF's
GUI("/etc/gtk-server.cfg")

' Initialize GTK & Glade
GUI("gtk_init")
GUI("glade_init")

' Load and show Glade defined window
xml = GUI("glade_xml_new", "hello.glade")
GUI("glade_xml_signal_autoconnect", xml)

' Get window ID and define window close event
win = GUI("glade_xml_get_widget", xml, "window1")
GUI("gtk_server_connect", win, "delete-event", "window")

' Event Handler
REPEAT
this_event = GUI("gtk_server_callback", "WAIT")
UNTIL this_event = "window"

END


hello.glade - Glade project XML file
Code: [Select]

<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">

<glade-interface>

<widget class="GtkWindow" id="window1">
  <property name="visible">True</property>
  <property name="title" translatable="yes">Hello</property>
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
  <property name="window_position">GTK_WIN_POS_NONE</property>
  <property name="modal">False</property>
  <property name="default_width">400</property>
  <property name="default_height">350</property>
  <property name="resizable">True</property>
  <property name="destroy_with_parent">False</property>
  <property name="decorated">True</property>
  <property name="skip_taskbar_hint">False</property>
  <property name="skip_pager_hint">False</property>
  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  <property name="focus_on_map">True</property>
  <property name="urgency_hint">False</property>

  <child>
    <widget class="GtkFixed" id="fixed1">
      <property name="visible">True</property>

      <child>
<widget class="GtkLabel" id="label1">
 <property name="width_request">122</property>
 <property name="height_request">17</property>
 <property name="visible">True</property>
 <property name="label" translatable="yes">Hello World !</property>
 <property name="use_underline">False</property>
 <property name="use_markup">False</property>
 <property name="justify">GTK_JUSTIFY_LEFT</property>
 <property name="wrap">False</property>
 <property name="selectable">False</property>
 <property name="xalign">0.5</property>
 <property name="yalign">0.5</property>
 <property name="xpad">0</property>
 <property name="ypad">0</property>
 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
 <property name="width_chars">-1</property>
 <property name="single_line_mode">False</property>
 <property name="angle">0</property>
</widget>
<packing>
 <property name="x">128</property>
 <property name="y">128</property>
</packing>
      </child>
    </widget>
  </child>
</widget>

</glade-interface>


To get an idea of the types of widgets you can use in your screen design, check out the following link.

GNOME 2.20 Release Notes

GTK+ Reference Manual

809
Round Table / Roll Call
« on: December 01, 2007, 10:22:03 PM »
Quote from: "Mark"

Although not a heavy user I do use ScriptBasic some.  BASIC is my "syntax of choice" and I would hate to see ScriptBasic disappear even if not much new development happens anytime soon.

I have a new project coming up and I had not picked a platform yet but I believe ScriptBasic is a good choice and I will probably go that way.  My personal work load does not give me much spare time so being a contributor to the project can't happen as much as it could be fun.

In today's environment just about everybody is "addicted to complexity".  Too many people have grown up thinking Visual Studio is the only way.  Products like ScriptBasic don't get much attention because they don't seem "sexy" enough but in truth their simple elegance is their strength.

Now if you could compile it to run on my MacBook ..... hummmmm ..... very interesting.

Don't give up on it yet.

Thanks for the hard work to get it this far.

Mark


Posted on ScriptBasic Mailing List

810
Round Table / Roll Call
« on: December 01, 2007, 12:01:41 PM »
Quote from: "Stavros"

I have been using and am using scriptbasic for communicating with serial devices and standarizing communication protocols before writing drivers as well as writing complex control algorithms for control centers.

Developing cycle with it is much faster than C.... and since i got computerized with ZX spectrume.. it feels like home.

I think it is the only basic branch . If you have the time dont quit!


Posted on ScriptBasic Mailing List

Pages: 1 ... 52 53 [54] 55 56 ... 59