glade-wizard to auto create empty project with gla
Oct 25, 2011 13:38:07 GMT 1
Post by vroby on Oct 25, 2011 13:38:07 GMT 1
hi
i have written this simple program that process a glade file
and generate a bac program empty but with signal connected
this is the code
' GLADE-WIZARD
SPLIT CHOP$(ARGUMENT$) BY " " TO args$ SIZE amount
filename$=args$[1]
PRINT "file processed: " , filename$
OPEN filename$ FOR READING AS Gfile
OPEN CONCAT$(LEFT$(filename$,LEN(filename$)-6),".bac") FOR WRITING AS Bfile
WRITELN "' " TO Bfile
WRITELN "' Bacon Glade and GTK. " TO Bfile
WRITELN "' make with glade-wizard " TO Bfile
WRITELN "' " TO Bfile
WRITELN "' Improved August 18, 2009 - PvE. " TO Bfile
WRITELN "' Improved February 20, 2010 - PvE. " TO Bfile
WRITELN "' " TO Bfile
WRITELN " " TO Bfile
WRITELN "' Get functions from GLADE " TO Bfile
WRITELN "INCLUDE \"glade.bac\" " TO Bfile
WRITELN "INCLUDE \"gtk.bac\" " TO Bfile
WRITELN " " TO Bfile
WRITELN "' Setup GUI " TO Bfile
WRITELN "gtk_init(0, 0) " TO Bfile
WRITELN "glade_init " TO Bfile
WRITELN " " TO Bfile
WRITELN "' Get Glade file " TO Bfile
WRITELN CONCAT$("xml = glade_xml_new(\"./",args$[1],"\", 0, 0) ") TO Bfile
WRITELN "glade_xml_signal_autoconnect(xml) " TO Bfile
WRITELN " " TO Bfile
WHILE NOT(ENDFILE(Gfile)) DO
READLN txt$ FROM Gfile
IF INSTR(txt$,"<widget class") THEN
startid=INSTR(txt$,"id=")+4
endid=INSTR(txt$,"\"",startid)-startid
id$=MID$(txt$,startid,endid)
PRINT "id:",id$
END IF
IF INSTR(txt$,"<widget class=\"GtkWindow\"") THEN
WRITELN "' Get main window ID and connect signal " TO Bfile
WRITELN CONCAT$(id$," = glade_xml_get_widget(xml, \"",id$,"\") ") TO Bfile
WRITELN CONCAT$("g_signal_connect_data(",id$,", \"delete-event\", ADDRESS(exit_prog), 0, 0, 0) ") TO Bfile
WRITELN "' Callback for closing window " TO Bfile
WRITELN "SUB exit_prog " TO Bfile
WRITELN " gtk_exit(0) " TO Bfile
WRITELN "END SUB " TO Bfile
WRITELN " " TO Bfile
END IF
IF INSTR(txt$,"<signal") THEN
startname=INSTR(txt$,"name=")+6
endname=INSTR(txt$," ",startname)-startname-1
name$=MID$(txt$,startname,endname)
starthandler=INSTR(txt$,"handler=",startname+endname)+9
endhandler=INSTR(txt$," ",starthandler)-starthandler-1
handler$=MID$(txt$,starthandler,endhandler)
WRITELN "' connect signal code" TO Bfile
WRITELN CONCAT$(id$,"=glade_xml_get_widget(xml, \"",id$,"\")") TO Bfile
WRITELN CONCAT$("g_signal_connect_data(",id$,", \"",name$,"\", ADDRESS(",handler$,"), 0, 0, 0)") TO Bfile
WRITELN CONCAT$("SUB ",handler$," ") TO Bfile
WRITELN "' enter code here " TO Bfile
WRITELN "END SUB " TO Bfile
WRITELN " " TO Bfile
PRINT "name:",name$
PRINT "handler:",handler$
END IF
WEND
WRITELN "' Endless event handling by GTK" TO Bfile
WRITELN "gtk_main" TO Bfile
CLOSE FILE Bfile
CLOSE FILE Gfile
glade file reqired can be created with glade-gtk2
and save as libglade file
i have written this simple program that process a glade file
and generate a bac program empty but with signal connected
this is the code
' GLADE-WIZARD
SPLIT CHOP$(ARGUMENT$) BY " " TO args$ SIZE amount
filename$=args$[1]
PRINT "file processed: " , filename$
OPEN filename$ FOR READING AS Gfile
OPEN CONCAT$(LEFT$(filename$,LEN(filename$)-6),".bac") FOR WRITING AS Bfile
WRITELN "' " TO Bfile
WRITELN "' Bacon Glade and GTK. " TO Bfile
WRITELN "' make with glade-wizard " TO Bfile
WRITELN "' " TO Bfile
WRITELN "' Improved August 18, 2009 - PvE. " TO Bfile
WRITELN "' Improved February 20, 2010 - PvE. " TO Bfile
WRITELN "' " TO Bfile
WRITELN " " TO Bfile
WRITELN "' Get functions from GLADE " TO Bfile
WRITELN "INCLUDE \"glade.bac\" " TO Bfile
WRITELN "INCLUDE \"gtk.bac\" " TO Bfile
WRITELN " " TO Bfile
WRITELN "' Setup GUI " TO Bfile
WRITELN "gtk_init(0, 0) " TO Bfile
WRITELN "glade_init " TO Bfile
WRITELN " " TO Bfile
WRITELN "' Get Glade file " TO Bfile
WRITELN CONCAT$("xml = glade_xml_new(\"./",args$[1],"\", 0, 0) ") TO Bfile
WRITELN "glade_xml_signal_autoconnect(xml) " TO Bfile
WRITELN " " TO Bfile
WHILE NOT(ENDFILE(Gfile)) DO
READLN txt$ FROM Gfile
IF INSTR(txt$,"<widget class") THEN
startid=INSTR(txt$,"id=")+4
endid=INSTR(txt$,"\"",startid)-startid
id$=MID$(txt$,startid,endid)
PRINT "id:",id$
END IF
IF INSTR(txt$,"<widget class=\"GtkWindow\"") THEN
WRITELN "' Get main window ID and connect signal " TO Bfile
WRITELN CONCAT$(id$," = glade_xml_get_widget(xml, \"",id$,"\") ") TO Bfile
WRITELN CONCAT$("g_signal_connect_data(",id$,", \"delete-event\", ADDRESS(exit_prog), 0, 0, 0) ") TO Bfile
WRITELN "' Callback for closing window " TO Bfile
WRITELN "SUB exit_prog " TO Bfile
WRITELN " gtk_exit(0) " TO Bfile
WRITELN "END SUB " TO Bfile
WRITELN " " TO Bfile
END IF
IF INSTR(txt$,"<signal") THEN
startname=INSTR(txt$,"name=")+6
endname=INSTR(txt$," ",startname)-startname-1
name$=MID$(txt$,startname,endname)
starthandler=INSTR(txt$,"handler=",startname+endname)+9
endhandler=INSTR(txt$," ",starthandler)-starthandler-1
handler$=MID$(txt$,starthandler,endhandler)
WRITELN "' connect signal code" TO Bfile
WRITELN CONCAT$(id$,"=glade_xml_get_widget(xml, \"",id$,"\")") TO Bfile
WRITELN CONCAT$("g_signal_connect_data(",id$,", \"",name$,"\", ADDRESS(",handler$,"), 0, 0, 0)") TO Bfile
WRITELN CONCAT$("SUB ",handler$," ") TO Bfile
WRITELN "' enter code here " TO Bfile
WRITELN "END SUB " TO Bfile
WRITELN " " TO Bfile
PRINT "name:",name$
PRINT "handler:",handler$
END IF
WEND
WRITELN "' Endless event handling by GTK" TO Bfile
WRITELN "gtk_main" TO Bfile
CLOSE FILE Bfile
CLOSE FILE Gfile
glade file reqired can be created with glade-gtk2
and save as libglade file