Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Anistasius
Anmeldungsdatum: 18.01.2006 Beiträge: 37
|
Verfasst am: 26.07.2006, 10:21 Titel: GTK und Refresh |
|
|
Normalerweise baut man beim GTK den Bildschirm _einmalig_ auf und gibt dann die Kontrolle an das GTK ab.
Zurück bekommt man sie erst als "Callback" wieder, wenn der Anwender etwas gemacht hat. Dann kann man auch ggf. die Bildschirminhalte ändern.
Nun habe ich aber eine Situation, wo ich es umgekehrt brauche. Das Programm soll Daten konvertieren und dabei die aktuellen
Sätze in einem Label anzeigen. Das einzige was vom Anwender erwartet wird ist ein eventueller Abbruch.
Bei Xbasic gab es dafür eine Basisfunktion, die beim Ablauf ständig aufgerufen wird. Man brauchte da nur seine eigenen Funktionsbäume eintragen.
Bei VB gibt´s den Refresh Befehl, aber wie macht man das beim GTK?
Fragende Grüße
Anistasius |
|
Nach oben |
|
|
Anistasius
Anmeldungsdatum: 18.01.2006 Beiträge: 37
|
Verfasst am: 20.08.2006, 15:58 Titel: |
|
|
Hat sich erledigt.
Wer das gleiche Problem hat, die Funktion heißt:
gtk_timeout_add
Viele Grüße
Anistasius |
|
Nach oben |
|
|
Anistasius
Anmeldungsdatum: 18.01.2006 Beiträge: 37
|
Verfasst am: 05.08.2007, 14:43 Titel: |
|
|
Tja, in der Theorie und bei den Tests funktioniert´s gut.
Aber in einer echten Anwendung macht es die Gretsche...
mit gtk_timeout_add wird ihm ein Zeitintervall und eine Funktion übergeben die nach diesem Intervall durchlaufen werden soll.
steht in dieser Funktion z.B. Vergleiche Zeit mit gespeicherter Zeit und falls geändert zeige Zeit und speichere sie,
hat man eine kleine Uhr im Fenster. Oder Zeige Bild an, warte ein paar Sekunden dann lade nächstes Bild...
hat man eine Dia-Show.
Soweit so gut.
Aber diese Intervallscheiben haben keinen Einfluß auf ablaufende FB Funktionen.
In meinem Fall sieht das etwa so aus:
Funktion
ipstat$="Beginne mit Datenexport"
Exportiere Bewegungsdaten
ipstat$="Exportiere "+Rechnungsnummer
wiederhole bis Ende
ipstat$="Export abgeschlossen"
Funktion Ende
Die von "timeout_add" aufegrufene Funktion macht folgendes:
Function fuGTK_Events () As Integer
if ipstat$ <> altipstat$ then
fuGTK_SetText (anzeigeFenster ,anzeigeLabel,ipstat$)
Print ipstat$
altipstat$=ipstat$
end if
End Function
Das einzige was er im Fensterlabel bringt ist:
"Export abgeschlossen"...natürlich erst am Ende der Konvertierung
In der Shell hingegen, wo das Programm gestartet wurde,
werden über den 'Print ipstat$' alle Informationen gezeigt.
selbst wenn ich fuGTK_SetText () direkt in die Exportfunktion schreibe,
wird das ignoriert, bis der Export abgeschlossen ist
Hat jemand eine Idee wie ich GTK dazu bringe die Informationen ebenfalls anzuzeigen?
....Als kleinen Anreiz für die Problemfindung, habe ich mal den GTK Wrapper (noch ultraprealpha!!!)auf meiner HP hinterlegt.
Diese GUI Abstraktionsschicht vereinfacht die Handhabung mit dem GTK auf geradezu dramatische Weise.
Statt für jeden Label irgendwie eine halbe Seite unübersichtlichen Programmcode reinzufummeln, reicht eine einzige Zeile. - Ist besonders schön wenn man ein Programm nach drei Jahren ändern muß. Und nervige Pointer bleiben auch draußen
Wenn ich meine Programmkonvertierung abgeschlossen habe, wollte ich die Funktionen von fuGTK auf fuGUI umtaufen und das Ding auch mit dem Win API nachbauen. Dann kann man viele GUI Programme ohne Quelltextänderungen unter Windows und Linux kompilieren, ohne dem Win Anwender GTK aufzwingen zu müssen.
....Vorausgesetzt solche Feinheiten wie der sch... Refresh funktionieren auch....
Datei: http://anistasius.de/gtkwrapper.zip
Inhalt:
fugtk1.bas die Include Lib
fugtktest.bas ein vollkommen sinnbefreites Beispielprogramm
fugtktest das Programm als binary, falls es sich nicht kompilieren läßt
Viele Grüße,
ein verzweifelnder Anistasius |
|
Nach oben |
|
|
Eternal_pain
Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 30.08.2007, 09:02 Titel: |
|
|
Hi,
wenn das ganze noch aktuell ist, und ich das Problem richtig verstanden habe... was sich so anhoert als kommen sich da mehrere Threads in die quere... dann koennte Dir evtl. das hier weiterhelfen wo es um etwas aehnliches geht...
http://forum.qbasic.at/viewtopic.php?t=4547 _________________
|
|
Nach oben |
|
|
Anistasius
Anmeldungsdatum: 18.01.2006 Beiträge: 37
|
Verfasst am: 05.09.2007, 18:32 Titel: |
|
|
Hallo!
Ja, das ist noch brandaktuell :-/
Vielen Dank für den Hinweis.
Ich bin gerade dabei Wrapper-Lib u. Demo an FB0.17 anzupassen.
Ein büschen hakelt es noch mit den Signalen. Entweder das File-Fenster funktioniert nicht richtig oder ich bekomme in Eingabezeile und Block keinen Schreibcursor <grübel>
....wenn ich mir vorstelle ich hätte das GTK direkt mit meiner Faktura KF verarbeitet und müßte das nun im ganzen Quelltext korrigieren, wäre ich reif für die Sauerstoffdusche. Aber so muß ich das Problem nur einmal im Wrapper beseitigen
..sobald es angepaßt ist, lade ich das Päckchen nochmal hoch.
Viele Grüße
Anistasius |
|
Nach oben |
|
|
Eternal_pain
Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 08.09.2007, 07:24 Titel: |
|
|
zwischen 0.17 und der neusten 0.18.1b liegen zwar keine Welten (wie bei 0.16 und 0.17b) aber dennoch wurde das eine oder andere noch geaendert/verbessert bzw behoben... waere also ratsam nochmal upzudaten
Hoffe aber das dieses Projekt ansonsten gut vorran kommt, hoert sich naemlich recht interessant an _________________
|
|
Nach oben |
|
|
|