Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

gtk-gui/glade/wie label verändern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 04.02.2011, 15:03    Titel: gtk-gui/glade/wie label verändern Antworten mit Zitat

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, 17:37, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 05.02.2011, 15:52    Titel: Antworten mit Zitat

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 zwinkern
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 06.02.2011, 02:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 07.02.2011, 15:50    Titel: Antworten mit Zitat

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, 17:44, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 07.02.2011, 17:16    Titel: funktioniert Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 08.02.2011, 20:40    Titel: der code Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 09.02.2011, 14:48    Titel: neues problem Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 10.02.2011, 13:18    Titel: hilfe Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 10.02.2011, 23:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 11.02.2011, 10:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 11.02.2011, 23:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 13.02.2011, 12:46    Titel: Antworten mit Zitat

@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... happy
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! zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
worldwidetrekking



Anmeldungsdatum: 22.08.2009
Beiträge: 38

BeitragVerfasst am: 13.02.2011, 22:20    Titel: neue Frage Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz