|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 04.02.2011, 16:03 Titel: gtk-gui/glade/wie label verändern |
|
|
Hallo,
ich erstelle meine GUIs mit GTK / Glade.
Ich möchte ein Label verändern während das Program läuft, was ja normalerweise (wenn man die GUI ohne Glade erstellt) mit gtk_label_set_text funktioniert.
Wenn ich Glade benutze, bekomme ich aber beim kompilieren eine Fehlermeldung, dass label nicht gefunden werden kann.
Die glade xml Datei ist selbstverständlich eingebunden.
Hoffe mir kann jemand helfen, so schwer kann es ja eigentlich nicht sein.
Vielen Dank!
Zuletzt bearbeitet von worldwidetrekking am 15.02.2011, 18:37, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 05.02.2011, 16:52 Titel: |
|
|
ich habe keinerlei ahnung von glade, aber ich versuche mal trotzdem zu helfen:
die glade-datei kannst du nicht in deinen FB-code "einbinden", z.B. mit #include.
du kannst sie höchstens mit glade_lade_xml_datei() laden. das interessiert den compiler aber herzlich wenig, er weiß nix über die labels die du lädst (zumal das ja erst zur laufzeit bekannt ist)
ich schätze, glade bietet irgendeine funktion, dir den handle des objekts mit dem namen "foo" zurückzuliefern. diesen musst du dann an die gtk-lib weitergeben.
ODER aber, vielleicht bietet glade selbst so eine funktion zum ändern von sachen?
wiegesagt, ich hab keine ahnung davon, aber vielleicht weißt du jetzt, wonach du in den docs suchen musst _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 06.02.2011, 03:12 Titel: |
|
|
Zuerst einmal würde ich von libglade abraten, und lieber GtkBuilder zum laden der Interface-Definition verwenden. libglade ist als veraltet anzusehen und soll von GtkBuilder ersetzt werden. Mit dem GTK-Header von TJF ist das nutzen von GtkBuilder kein Problem, sofern du mit Glade auch im GtkBuilder-Format speicherst.
Da mein normaler Rechner gerade nicht geht, bin ich mir nicht 100%ig sicher, aber das hier sollte klappen, sofern du GtkBuilder nutzt (was du tun solltest):
Code: | gtk_label_set_text(gtk_builder_get_object (builder, "Name des Labels"), "zu setzender Text") |
builder ist die Referenz auf dein GtkBuilder-Objekt, dass du brauchst um das Interface zu laden usw.
Der Vollständigkeit halber hier auch die libglade-Version:
Code: | gtk_label_set_text(glade_xml_get_widget(xml, "Name des Labels"), "zu setzender Text")) |
_________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 07.02.2011, 16:50 Titel: |
|
|
Vielen Dank euch beiden.
Die Fehlermeldung beim Kompilieren habe ich nicht mehr.
Dafür einige andere Probleme. Ich bin noch dabei zu versuchen das Problem zu lösen. Ich poste heut Abend oder morgen Vormittag mal den Code.
Bis dahin...
[edit] 17:07
Ich kann die Labels jetzt mit einem beliebigen Text versehen, so lange ich das mache bevor
Code: | gtk_widget_show_all () |
und
Code: | glade_xml_signal_autoconnect (xml) |
ausgeführt wird.
Danach, also im Hauptprogramm oder einer Sub will es irgendwie noch nicht funktionieren.
[edit]
Zuletzt bearbeitet von worldwidetrekking am 07.02.2011, 18:44, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 07.02.2011, 18:16 Titel: funktioniert |
|
|
Endlich funktioniert alles wie ich es mir vorgestellt hab!
Auch im Hauptprogramm und in den Subs kann ich jetzt die vorhandenen Label ansprechen.
Den Code poste ich morgen!
Bis dahin...
wünsche einen schönen Abend!
[edit] 17:42
Einziges Problem ist noch, dass ich nicht den Inhalt einer Variablen an das Label übergeben kann.
Momentan gehe ich folgendermaßen vor:
Code: | gtk_label_set_text(label05, "hier steht der zu übergebende Text") |
label05 ist hier der Name des Labels.
Ich kann somit den Text zwischen den " ans Label übergeben, bekomme aber eine Fehlermeldung wenn ich den Inhalt einer Variablen verwenden möchte.
[edit] |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 08.02.2011, 21:40 Titel: der code |
|
|
Hier ist mit einiger Verspätung der versprochene Code.
Zumindest der aktuelle Stand.
Das Userinterface ist noch nicht fertig, der Code ist noch etwas unübersichtlich und wenig komentiert. Ich denke einiges kann noch zusammengefasst werden.
Das werde ich aber erst machen, wenn ich das Programm fertig habe.
[edit] 09.02.2011 14:42
code aktualisiert
[edit]
Code: | '* ---------------------------------------------------------------------------
'* Program shell generated by utility 'glade2bas'
'* Dieser Programmrahmen wurde generiert durch das Werkzeug 'glade2bas'
'*
'* Generated at / Generierung am 03.02.2011 13:37
'* ---------------------------------------------------------------------------
'******************************************************************************
'* Program name: robot_control
'*
'* Version: x.x
'*
'* Author: xxx
'*
'* Description / Beschreibung:
'* --------------------------
'*
'* xxx
'*
'* License / Lizenz:
'* ----------------
'*
'* Please prefer the GNU GENERAL PUBLIC LICENSE to support free software
'* For more information please visit: http://www.fsf.org
'*
'* Bitte bevorzugen Sie die GNU GENERAL PUBLIC LICENSE und unterstuetzen
'* Sie mit Ihrem Programm die freie Software
'* Mehr Informationen finden Sie unter: http://www.fsf.org
'*
'*
'*
'******************************************************************************
'*
'* H I N T / H I N W E I S
'*
'* If the final application shall only show the GUI and not the command window,
'* compile the application with "fbc -s gui <progname>.bas"
'*
'* Wenn die fertige Anwendung nur im GUI-Modus laufen soll (ohne zusaetzliches
'* cmd-Fenster), einfach mit "fbc -s gui <programm>.bas" umwandeln
'*
'******************************************************************************
'* Include to be compatible with some VB commands / Ermoeglichen VB Befehle
'******************************************************************************
#include "vbcompat.bi"
'******************************************************************************
'* Includes for Gtk / Definitionen fuer Gtk
'******************************************************************************
#include "gtk/gtk.bi"
#include "gtk/libglade/glade-xml.bi"
#define NULL 0
#define G_THREADS_ENABLED
'******************************************************************************
'* Subroutines (callbacks) or 'events' in Visual Basic notation
'* Definition der Unterprogramme bzw. 'events' in Visual Basic notation
'******************************************************************************
'1) corresponding to the signals in the glade xml file / analog zu den Signalen
' in der glade xml Datei
#include "robot_control.decl"
'2) own routines / Eigene Routinen
''declare sub xxx()
Declare Sub SendeDaten (ByVal Daten As String) 'Senderoutine COM-Port
Declare Sub Fehler 'Fehlerzähler
Declare Sub Zeitausgabe
Declare Sub Beenden
'******************************************************************************
'* Data definitions / Datendefinitionen
'******************************************************************************
dim shared xml as GladeXML ptr
dim shared slash as string
dim shared robot_control_1_0 as GtkWidget ptr
dim shared Info as GtkWidget ptr
dim shared Einstellungen as GtkWidget ptr
dim shared label01 as GtkLabel ptr
dim shared label02 as GtkLabel ptr
dim shared label03 as GtkLabel ptr
dim shared label04 as GtkLabel ptr
dim shared label05 as GtkLabel ptr
dim shared label06 as GtkLabel ptr
dim shared label07 as GtkLabel ptr
dim shared label08 as GtkLabel ptr
dim shared label09 as GtkLabel ptr
dim shared label10 as GtkLabel ptr
dim shared label11 as GtkLabel ptr
dim shared label12 as GtkLabel ptr
dim shared label13 as GtkLabel ptr
dim shared label14 as GtkLabel ptr
dim shared label15 as GtkLabel ptr
dim shared label16 as GtkLabel ptr
dim shared label17 as GtkLabel ptr
dim shared label18 as GtkLabel ptr
dim shared label19 as GtkLabel ptr
dim shared label20 as GtkLabel ptr
dim shared layout1 as GtkLayout ptr
dim shared layout2 as GtkLayout ptr
dim shared layout3 as GtkLayout ptr
dim shared menubar1 as GtkMenuBar ptr
dim shared menu1 as GtkMenu ptr
dim shared menu2 as GtkMenu ptr
dim shared menu3 as GtkMenu ptr
dim shared eventbox01 as GtkEventBox ptr
dim shared eventbox02 as GtkEventBox ptr
dim shared eventbox03 as GtkEventBox ptr
dim shared eventbox04 as GtkEventBox ptr
dim shared eventbox05 as GtkEventBox ptr
dim shared eventbox06 as GtkEventBox ptr
dim shared eventbox07 as GtkEventBox ptr
dim shared eventbox08 as GtkEventBox ptr
dim shared eventbox09 as GtkEventBox ptr
dim shared eventbox10 as GtkEventBox ptr
dim shared textview1 as GtkWidget ptr
dim shared widgetbuff as GtkTextBuffer ptr
dim shared Farbe as GdkColor
dim shared parent as GtkWindow ptr
dim shared answer as Integer
dim shared messagedialog as GtkWidget ptr
Const COMPort = "COM2:19200,N,8,1,ME,CS0,DS0,RS" 'COM2 ggf. durch andere Portnummer ersetzen
dim shared BytesGesendet As Integer = 0
dim shared FehlerAnz As Byte = 0 'als Zählervariable für die Anzahl der aufgetretenen Fehler seit Programmstart
dim shared Zeit as String
dim shared outbuff as String
'******************************************************************************
'*
'* =========================
'* START OF THE MAIN PROGRAM
'* BEGINN DES HAUPTPROGRAMMS
'* =========================
'*
'******************************************************************************
'******************************************************************************
'* Choose correct slash for the OS / Betriebssystemabhängiger Pfadbezeichner
'******************************************************************************
slash = "/"
#ifdef __FB_WIN32__
'...instructions only for Win32...
slash = "\"
#endif
'******************************************************************************
'* Initialize Gtk / GUI (Gtk) initialisieren
'******************************************************************************
'g_thread_init( NULL)
'gdk_threads_init()
'gdk_threads_enter()
gtk_init( NULL, NULL )
'******************************************************************************
'* Specify the windows to be shown / Anzuzeigende Fenster spezifizieren
'******************************************************************************
xml = glade_xml_new( "robot_control.glade", NULL, NULL )
'******************************************************************************
'* Reference some widgets / Fenster+Felder referenzieren
'******************************************************************************
robot_control_1_0 = glade_xml_get_widget( xml, "robot_control_1_0" )
Info = glade_xml_get_widget( xml, "Info" )
Einstellungen = glade_xml_get_widget( xml, "Einstellungen" )
label01 = glade_xml_get_widget( xml, "label01")
label02 = glade_xml_get_widget( xml, "label02")
label03 = glade_xml_get_widget( xml, "label03")
label04 = glade_xml_get_widget( xml, "label04")
label05 = glade_xml_get_widget( xml, "label05")
label06 = glade_xml_get_widget( xml, "label06")
label07 = glade_xml_get_widget( xml, "label07")
label08 = glade_xml_get_widget( xml, "label08")
label09 = glade_xml_get_widget( xml, "label09")
label10 = glade_xml_get_widget( xml, "label10")
label11 = glade_xml_get_widget( xml, "label11")
label12 = glade_xml_get_widget( xml, "label12")
label13 = glade_xml_get_widget( xml, "label13")
label14 = glade_xml_get_widget( xml, "label14")
label15 = glade_xml_get_widget( xml, "label15")
label16 = glade_xml_get_widget( xml, "label16")
label17 = glade_xml_get_widget( xml, "label17")
label18 = glade_xml_get_widget( xml, "label18")
label19 = glade_xml_get_widget( xml, "label19")
label20 = glade_xml_get_widget( xml, "label20")
layout1 = glade_xml_get_widget( xml, "layout1")
layout2 = glade_xml_get_widget( xml, "layout2")
layout3 = glade_xml_get_widget( xml, "layout3")
menubar1 = glade_xml_get_widget( xml, "menubar1")
menu1 = glade_xml_get_widget( xml, "menu1")
menu2 = glade_xml_get_widget( xml, "menu2")
menu3 = glade_xml_get_widget( xml, "menu3")
eventbox01 = glade_xml_get_widget( xml, "eventbox01")
eventbox02 = glade_xml_get_widget( xml, "eventbox02")
eventbox03 = glade_xml_get_widget( xml, "eventbox03")
eventbox04 = glade_xml_get_widget( xml, "eventbox04")
eventbox05 = glade_xml_get_widget( xml, "eventbox05")
eventbox06 = glade_xml_get_widget( xml, "eventbox06")
eventbox07 = glade_xml_get_widget( xml, "eventbox07")
eventbox08 = glade_xml_get_widget( xml, "eventbox08")
eventbox09 = glade_xml_get_widget( xml, "eventbox09")
eventbox10 = glade_xml_get_widget( xml, "eventbox10")
textview1 = glade_xml_get_widget( xml, "textview1")
widgetbuff = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview1))
' Initialize r/g/b components, they are 16-bit values
' 8 bit RGB Werte mit 257 multipliziert ergibt den 16 bit Wert,
' weil 255 * 257 = 65535
Farbe.red = 155 * 257
Farbe.green = 238 * 257
Farbe.blue = 62 * 257
gtk_widget_modify_bg (menubar1, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 140 * 257
Farbe.green = 208 * 257
Farbe.blue = 0 * 257
gtk_widget_modify_bg (layout1, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 255 * 257
Farbe.green = 255 * 257
Farbe.blue = 102 * 257
gtk_widget_modify_bg (layout2, GTK_STATE_NORMAL, @ Farbe)
Farbe.red = 255 * 257
Farbe.green = 254 * 257
Farbe.blue = 153 * 257
gtk_widget_modify_bg (layout3, GTK_STATE_NORMAL, @ Farbe)
Farbe.red = 206 * 257
Farbe.green = 222 * 257
Farbe.blue = 254 * 257
gtk_widget_modify_base (textview1, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 255 * 257
Farbe.green = 254 * 257
Farbe.blue = 76 * 257
gtk_widget_modify_bg (menu1, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 255 * 257
Farbe.green = 254 * 257
Farbe.blue = 76 * 257
gtk_widget_modify_bg (menu2, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 255 * 257
Farbe.green = 254 * 257
Farbe.blue = 76 * 257
gtk_widget_modify_bg (menu3, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox01, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox02, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox03, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox04, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox05, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox06, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox07, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox08, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox09, GTK_STATE_NORMAL, @Farbe)
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox10, GTK_STATE_NORMAL, @Farbe)
'******************************************************************************
'* Display main window(s) / Hauptfenster anzeigen
'******************************************************************************
gtk_widget_show_all( robot_control_1_0)
gtk_widget_hide ( Einstellungen)
gtk_widget_hide ( Info)
glade_xml_signal_autoconnect( xml )
'******************************************************************************
'* The main GUI loop starts / Hier beginnt die eigentliche GUI-Verarbeitung
'* ------------------------------------------------------------------------
'*
'* I M P O R T A N T / W I C H T I G :
'*
'* gtk_main can only be terminated by function gtk_main_quit(), so remember to
'* define a signal to quit the application and call gtk_main_quit() in the
'* associated SUB - e.g. by signal on_xxx_delete_event (xxx = window name)
'*
'* gtk_main kann nur durch die Funktion gtk_main_quit() beendet werden, daher
'* nicht vergessen, ein Signal zum Beenden der Anwendung zu definieren und
'* in der zugehörigen SUB die Funktion gtk_main_quit() aufzurufen - z.B. durch
'* das Signal on_xxx_delete_event (xxx = Name des Fensters)
'*
'******************************************************************************
gtk_main( )
'******************************************************************************
'* Wrap up / Abschliessende Schritte
'******************************************************************************
' a) unattach xml reference / xml Referenz abbauen
g_object_unref( xml )
' b) Finish program with return code 0 / Programm mit Returncode 0 beenden
end 0
'******************************************************************************
'*
'* =======================
'* END OF THE MAIN PROGRAM
'* ENDE DES HAUPTPROGRAMMS
'* =======================
'*
'******************************************************************************
'------------------------------------------------------------------------------
' now the SUB programs start ... / ab hier Unterprogramme (SUB's) ...
'------------------------------------------------------------------------------
sub on_robot_control_1_0_delete_event cdecl alias "on_robot_control_1_0_delete_event" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_robot_control_1_0_delete_event
'******************************************************************************
Beenden
end sub
sub on_go_clicked cdecl alias "on_go_clicked" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_go_clicked
'******************************************************************************
'Zeitausgabe
Farbe.red = 173 * 257
Farbe.green = 255 * 257
Farbe.blue = 47 * 257
gtk_widget_modify_bg (eventbox01, GTK_STATE_NORMAL, @Farbe)
gtk_label_set_text(label01, "running")
Zeitausgabe
outbuff = outbuff + Zeit + " button pressed [go]" + chr(13) + chr(10)
gtk_text_buffer_set_text (widgetbuff, outbuff, -1)
gtk_widget_modify_font (textview1, widgetbuff)
If (Open Com ( COMPort For Binary As #1 ) <> 0 ) Then
'Print "Fehler: Der Port konnte nicht geoeffnet werden!"
Else
'Print "COM-Port geoeffnet"
'Sleep 100
SendeDaten ("go"+chr(10)) 'NT mit anschliessendem <LF>
'Print TIME & " Insgesamt bisher " & BytesGesendet & " Bytes gesendet."
'Sleep 200
Close #1
'Print "COM-Port geschlossen"
End If
end sub
sub on_stop_clicked cdecl alias "on_stop_clicked" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_stop_clicked
'******************************************************************************
Farbe.red = 255 * 257
Farbe.green = 10 * 257
Farbe.blue = 0 * 257
gtk_widget_modify_bg (eventbox01, GTK_STATE_NORMAL, @Farbe)
gtk_label_set_text(label01, "stopped")
Zeitausgabe
outbuff = outbuff + Zeit + " button pressed [stop]" + chr(13) + chr(10)
gtk_text_buffer_set_text (widgetbuff, outbuff, -1)
gtk_widget_modify_font (textview1, widgetbuff)
If (Open Com ( COMPort For Binary As #1 ) <> 0 ) Then
'Print "Fehler: Der Port konnte nicht geoeffnet werden!"
Else
'Print "COM-Port geoeffnet"
'Sleep 100
SendeDaten ("stop"+chr(10)) 'NT mit anschliessendem <LF>
'Print TIME & " Insgesamt bisher " & BytesGesendet & " Bytes gesendet."
'Sleep 200
Close #1
'Print "COM-Port geschlossen"
End If
end sub
sub on_imagemenuitem_Beenden_activate cdecl alias "on_imagemenuitem_Beenden_activate" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_imagemenuitem_Beenden_activate
'******************************************************************************
Beenden
end sub
sub on_imagemenuitem_Einstellungen_activate cdecl alias "on_imagemenuitem_Einstellungen_activate" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_imagemenuitem_Einstellungen_activate
'******************************************************************************
Fehler
'xml = glade_xml_new( "robot_control.glade", NULL, NULL )
'Einstellungen = glade_xml_get_widget( xml, "Einstellungen" )
gtk_widget_show_all( Einstellungen)
'glade_xml_signal_autoconnect( xml )
end sub
sub on_imagemenuitem_Verbinden_activate cdecl alias "on_imagemenuitem_Verbinden_activate" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_imagemenuitem_Verbinden_activate
'******************************************************************************
Fehler
'xml = glade_xml_new( "robot_control.glade", NULL, NULL )
'Einstellungen = glade_xml_get_widget( xml, "Einstellungen" )
gtk_widget_show_all( Einstellungen)
'glade_xml_signal_autoconnect( xml )
end sub
sub on_imagemenuitem_Trennen_activate cdecl alias "on_imagemenuitem_Trennen_activate" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_imagemenuitem_Trennen_activate
'******************************************************************************
Fehler
'xml = glade_xml_new( "robot_control.glade", NULL, NULL )
'Einstellungen = glade_xml_get_widget( xml, "Einstellungen" )
gtk_widget_show_all( Einstellungen)
'glade_xml_signal_autoconnect( xml )
end sub
sub on_imagemenuitem_Info_activate cdecl alias "on_imagemenuitem_Info_activate" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_imagemenuitem_Info_activate
'******************************************************************************
'xml = glade_xml_new( "robot_control.glade", NULL, NULL )
'Info = glade_xml_get_widget( xml, "Info" )
gtk_widget_show_all( Info)
'glade_xml_signal_autoconnect( xml )
end sub
sub on_Info_delete_event cdecl alias "on_Info_delete_event" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_Info_delete_event
'******************************************************************************
gtk_widget_hide_on_delete( Info)
end sub
sub on_button1_clicked cdecl alias "on_button1_clicked" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_button1_clicked
'******************************************************************************
gtk_widget_hide( Info)
end sub
sub on_Einstellungen_delete_event cdecl alias "on_Einstellungen_delete_event" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_Einstellungen_delete_event
'******************************************************************************
gtk_widget_hide_on_delete( Einstellungen)
end sub
sub on_button2_clicked cdecl alias "on_button2_clicked" (byval object as GtkObject ptr, byval user_data as gpointer) export
'******************************************************************************
'* put your code below for signal on_button2_clicked
'******************************************************************************
gtk_widget_hide( Einstellungen)
end sub
'******************************************************************************
'* put your code below for own subroutines
'******************************************************************************
sub SendeDaten (ByVal Daten As String)
Dim i As Integer
Dim Z As String
For i = 1 To Len(Daten) 'Daten zeichenweise ueber Port senden
Z = Mid(Daten,i,1)
Put #1,,Z
'Sleep 10 'ggf. kurze Pause? Vermutlich nicht noetig. Abhaengig von Gegenstelle.
Next
BytesGesendet += Len(Daten)
end Sub
sub Fehler
FehlerAnz = FehlerAnz+1 'Fehleranzahl um 1 erhöhen
gtk_label_set_text(label05, "" &FehlerAnz) 'aktuelle Fehleranzahl in GUI/label05 ausgeben
Zeitausgabe
outbuff = outbuff + Zeit + " Fehler (" &FehlerAnz & ")" + chr(13) + chr(10)
gtk_text_buffer_set_text (widgetbuff, outbuff, -1)
gtk_widget_modify_font (textview1, widgetbuff)
end sub
sub Zeitausgabe
Zeit = Time
end sub
sub Beenden
messagedialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Wollen sie wirklich beenden?")
Farbe.red = 206 * 257
Farbe.green = 222 * 257
Farbe.blue = 254 * 257
gtk_widget_modify_bg (messagedialog, GTK_STATE_NORMAL, @Farbe)
parent = GTK_WINDOW (robot_control_1_0)
gtk_window_set_transient_for (GTK_WINDOW(messagedialog), parent)
answer = gtk_dialog_run (GTK_DIALOG (messagedialog))
gtk_widget_destroy (messagedialog)
if answer = GTK_RESPONSE_YES then
gtk_main_quit () 'quits the GUI processing / beendet die GUI-Verarbeitung
else
gtk_widget_show_all( robot_control_1_0 ) 'show the destroyed window again
end if
end sub |
|
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 09.02.2011, 15:48 Titel: neues problem |
|
|
Hallo,
ich habe soeben den aktuellsten Code gepostet (im vorigen Beitrag aktualisiert).
Momentan beschäftigt mich das Problem, dass mein scrolled window nicht dazu zu bewegen ist, automatisch immer ganz nach unten zu scrollen, sobald mehr zeielen vorhanden sind, als anzuzeigen möglich sind.
Hab schon so einiges probiert aber es funktioniert nicht.
Ich hoffe ich bin nicht auf dem Holzweg wenn ich mit
Code: | gtk_scrolled_window_set_vadjustment () |
versuche die Sache zum scrollen zu bringen...
Hat irgendjemand eine andere Idee? |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 10.02.2011, 14:18 Titel: hilfe |
|
|
Hallo,
ich bekomme es einfach nicht dazu automatisch nach unten zu scrollen.
Kann mir irgend jemand helfen?
Oder einen Tip geben nach was ich in der GTK Befehlsreferenz suchen muss?
Momentan versuche ich es mit folgendem Code:
Code: | v_adj = gtk_scrolled_window_get_vadjustment(scrolledwindow1)
gtk_adjustment_get_value(v_adj)
gtk_adjustment_set_value(v_adj, 50)
|
Vielen Dank! |
|
Nach oben |
|
|
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 11.02.2011, 00:40 Titel: |
|
|
Ich kenne mich zwar nicht mit GTK aus, koennte es aber vielleicht sein das 50 auserhalb des scrollbereiches liegt, du kannst denn bereich mit
Code: | gtk_adjustment_clamp_page( adjustment, lower, upper) | bekommen |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 11.02.2011, 11:30 Titel: |
|
|
Vielen Dank für deine Idee...
Ich hab es in der Zwischenzeit gelöst. Funktioniert aber mit anderen Funktionen.
Hier mal mein Code:
Code: | mark = gtk_text_buffer_get_insert (widgetbuff)
gtk_text_buffer_get_iter_at_mark(widgetbuff, iter, mark)
gtk_text_buffer_insert(widgetbuff, iter, outbuff, -1)
gtk_text_view_scroll_mark_onscreen(gtk_TEXT_VIEW(textview1), mark) |
[edit] 11.02.2011 23:43
wobei ich wie folgt definiert habe:
dim shared iter as GtkTextIter ptr
dim shared mark as GtkTextMark ptr
outbuff, widgetbuff und textview1 sollten denke ich im oben geposteten code schon aufgeführt sein.
wenn Interesse am aktuellen Code besteht, evtl. auch an der .glade.xml datei kann ich die auch posten.
[edit] |
|
Nach oben |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 12.02.2011, 00:44 Titel: |
|
|
Dein Problem mit gtk_label_set_text liegt daran, dass der zweite Parameter kein String ist, sondern ein Zstring Pointer. Wenn du also eine Variable verwenden willst, musst du als zweiten Parameter "strptr(variable)" übergeben.
Ich würde dir aber nochmal empfehlen, libglade durch GtkBuilder zu ersetzen, da du sonst Probleme bekommen wirst, da libglade nicht korrekt mit den ganzen neuen Widgets funktioniert und auch nicht mehr weiterentwickelt wird.
GtkBuilder ist dabei kein bisschen schwerer als libglade, vorausgesetzt du hast den Gtk-Header von TJF. Ein kleines GtkBuilder-Beispiel findest du hier: http://pastebin.de/14872 _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 13.02.2011, 13:46 Titel: |
|
|
@darkinsanity:
Danke für den Hinweis mit dem ZString Pointer.
Ich werd das morgen mal ändern, dann kann ich meinen Code um einige Zeilen kürzen...
Ich werd mir demnächst auch mal die Sache mit dem gtk_builder näher anschauen.
Werde aber dieses Projekt erst so zu Ende bringen, dann evtl. noch mal mit gtk_builder aufziehen.
Danke auch für den Link! |
|
Nach oben |
|
|
worldwidetrekking
Anmeldungsdatum: 22.08.2009 Beiträge: 38
|
Verfasst am: 13.02.2011, 23:20 Titel: neue Frage |
|
|
Guten Abend,
mir stellt sich gerade noch ein neues Problem in den Weg.
Ich möchte gerne die aktuelle Uhrzeit anzeigen.
Ich würde das eigentlich mit folgendem simplen Freebasic-Code lösen:
Code: | sub Zeitausgabe
Zeit = Time
end sub |
Die Variable Zeit wird dann in einer Endlosschleife kontinuierlich ausgegeben.
Dann ist aber das restliche Programm lahmgelegt...
Im Moment nutze ich den obigen Code schon, um in meinem Textview die Log-Nachrichten mit Timestamps zu versehen.
Um eine kontinuierlich laufende Uhr anzuzeigen strebe ich momentan eine Multithread-Lösung an.
Sollte funktionieren, oder hat jemand eine einfachere Idee?
(wobei Multithread unter GTK+/GDK gar nicht so schwierig aussieht...)
[edit] 14.02.2011 09:49
Ich habe soeben mal den Threadtitel angepasst.
Wenn ich Code: |
g_thread_init( NULL)
gdk_threads_init()
gdk_threads_enter() |
schreibe bekomme ich folgende Fehlermeldung beim kompilieren:
"undefines reference to g_threads_init"
Ich hab keine Ahnung, wie ich das beheben kann. Weiß jemand die Lösung dafür oder hat das selbe Problem?
Bin über Hilfe diesbezüglich dankbar!
PS.: Wäre es evtl. sinnvoller oder einfacher die Threadfunktionen von Freebasic zu verwenden? Dort stellt sich mir kein Problem mit dem initialisieren in den Weg...
[edit]
[edit] 15.02.2011 17:40
Ich habe immer noch einige Probleme mit Funktionen bzw. Schleifen, die mir meine GUI lahmlegen.
Bin mir nicht sicher, wie man das vernünftig lösen kann - Multithreading oder Timeouts oder ganz anderst...
Damit das hier nicht zu off topic wird werde ich morgen einen neuen Thread dafür öffnen und dann auch hier verlinken.
[edit]
[edit] 16.02.2011 17:07
Hier der Link: http://forum.qbasic.at/viewtopic.php?t=7429
[edit] |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|