Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
A question about GTK ( GIMP Toolkit)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Greek
View previous topic :: View next topic  
Author Message
bravewic
n00b
n00b


Joined: 03 Apr 2005
Posts: 4

PostPosted: Sun Apr 03, 2005 5:50 pm    Post subject: A question about GTK ( GIMP Toolkit) Reply with quote

Geia sas eimai arxarios se GUI kai mathainw to GTK. Tha ithela na sas kanw mia erwtisi sxetika me to GTK.
Ftiaxnw ena programmataki kai tha tha ithela na me voithisete. Mesa stin main dimioyrgw ena kainoyrgio parathiro ena vbox kai mesa se ayto vazw ena widget text editable ena allo oxi editable kai ena koympaki . O xristis tha prepei na eisagei stoixeia sto prwto text widget kai patwntas to koympi to programma na ta epeksergazetai kai na vgazei kapoio apotelesma sto katw text widget opote
exw ta eksis g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(calculation),(gpointer) 1st_textwidget) ;
to apotelesma apothikeyetai se ena struct stin sinartisi calculation. An to struct to kanw global varibletha doylepsei? Me pion tropo mporw na dw to apotelsma stin main kai na to xrisimopoiisw ws input sto 2o textwidget? Morw na kanw tin CALLBACK sinartisi na peistrefei px tructure pointer kai an nai pws tha parw ta dedomena? Eyxaristw !
Back to top
View user's profile Send private message
parapente
Tux's lil' helper
Tux's lil' helper


Joined: 28 Jul 2003
Posts: 139
Location: Greece

PostPosted: Sun Apr 03, 2005 9:10 pm    Post subject: Reply with quote

Και γιατί δεν κάνεις το άλλο: να βάλεις ότι επεξεργασία θέλεις να γίνεται στα δεδομένα μέσα στην αντίστοιχη callback συνάρτηση η οποία τελικά θα αναλαμβάνει να εμφανίσει και το αποτέλεσμα στο δεύτερο widget; Με global μεταβλητή σίγουρα θα δουλέψει αλλά είναι γενικά άκομψο να γεμίζεις τον κώδικά σου global μεταβλητές και έπειτα θα πρέπει μετά σε κάθε αρχείο που θέλεις να τις χρησιμοποιήσεις και δεν τις έχεις δηλωμένες εκεί μέσα να τις δηλώνεις ως external.
Back to top
View user's profile Send private message
bravewic
n00b
n00b


Joined: 03 Apr 2005
Posts: 4

PostPosted: Mon Apr 04, 2005 12:30 am    Post subject: Reply with quote

Parapente ennoeis na perasw kai to 2otextwidget san metavliti stin callback(pws tha to kanw ayto afoy to teleytai argument einai (gpointer) data) i na dimioyrgisw mesa to widget alla tha prepei kapws na to vgalw stin main :).
Episis skeftika na kanw ena struct poy tha exei 2 Widgets (ta 2 text) kai na perasw to struct san argument alla den kserw an ginetai ayto kai to epitrepei to GTK . Alliws an ksereis kati tha ithela na moy peis enan tropo giati pros to paron exw eksantlisei oles tis idees . :) Eyxaristw
Back to top
View user's profile Send private message
parapente
Tux's lil' helper
Tux's lil' helper


Joined: 28 Jul 2003
Posts: 139
Location: Greece

PostPosted: Mon Apr 04, 2005 1:05 pm    Post subject: Reply with quote

Ο gpointer είναι απλά ένας δείκτης τύπου void* που σημαίνει ότι μπορεί να αποθηκεύσει οποιονδήποτε άλλο δείκτη. Έτσι μπορείς κάλλιστα να φτιάξεις μια δομή που να περιέχει ότι δεδομένα θέλεις να περάσεις στην συνάρτηση και μέσα στην callback ορίζοντας ξανά την ίδια δομή να κάνεις την επεξεργασία των δεδομένων. Συνήθως δεν σου χρειάζεται τίποτα παραπάνω από ένα άλλο widget οπότε πολύ απλά του περνάς σαν δεύτερο όρισμα το widget και στα αρχεία callback.c και callback.h ορίζει την αντίστοιχη συνάρτηση ότι δέχεται δεύτερο όρισμα τύπου ίδιου με το widget που θέλουμε να περάσουμε. Αυτό γίνεται και μέσα από το glade.
Back to top
View user's profile Send private message
menace
n00b
n00b


Joined: 25 Dec 2003
Posts: 47

PostPosted: Tue Apr 05, 2005 9:43 pm    Post subject: Reply with quote

Αν το GUI το έφτιαξες με GLADE τότε το glade βάζει μερικες λειτουργίες δικές του που λύνουν το πρόβλημα σου (αν το κατάλαβα καλά δηλαδή). (πρέπει να το πείς να βγάζει τα support functions)

εχει το macro GLADE_HOOKUP_OBJECT και GLADE_HOOKUP_OBJECT_NO_REF που αναλαμβάνουν να αποθηκέυσουν pointers για όλα τα widgets. Αυτη την δουλειά την κάνει μονο του το GLADE στο interface.c

Και στο support.c σου βάζει την function lookup_widget με την οποία μπορείς να βρείς τον pointer για οποιοδήποτε widget θέλεις ζητόντας το με το όνομά του. Πολύ χρησιμο :)

η lookup_widget θέλει ένα poiner για το root widget (η το widget που χρησιμοποιήσες στο GLADE_HOOPUP_OBJECT() που συνήθως είναι το root window) και ενα strign με το όνομα του widget που θέλεις. Οπότε σαν παράμετρο στα callbacks μπορείς να έχεις το root widget (πχ window1) και μετά με αυτό να βρίσκεις ότι θέλεις.

Πχ απο το callbacks.c στην calculate() (ή όπως την λές)
GtkWidget *2nd_textwidget;
2nd_textwidget = lookup_widget(window1,"2nd_textwidget");

Και μετά μέσα στην callback κάνεις update τα περιεχόμενα του δέυτερου widget (αφού πλέον έχεις pointer για όποιο widget θέλεις)
Back to top
View user's profile Send private message
bravewic
n00b
n00b


Joined: 03 Apr 2005
Posts: 4

PostPosted: Wed Apr 06, 2005 2:29 am    Post subject: Reply with quote

Menace se eyxaristw gia tis simboyles itan katatopistikes kai katafera na lisw to problima moy me arketa akrovatika. Epeidi eixa to GLADE egkatestimeno alla to sigekrimeno GUI to ekana xeiropoiito. Opote ayto poy kanw einai na antigrapsw ta defines kai tin sinartisi lookup_widget() apo to support.h kai .c ston kwdika moy. Fisiko epakoloytho itan na min doyleiei opote ekana include kai to configure.h apo to glade directory moy.
Poli skoypidi alla . . . to kaname kai ayto :lol:
Den eixa vevaia provlima kai to programma etrekse apsoga. Sygnvmi an ginomai koyrastikos alla mipws exeis kamia idea gia to pws na ilopoiithei ayti i sinartisi mesa sto programma? Kai kal tin sinartisi tin vriskv kai pragmatika den einai tipota alla to macro gnwrizeis ti kanei kai pws tha mporoys an to aneksartitopoiisw i toylaxiston poia defines kai includes na kanw (to na kanw include olo to configure.h toy glade den einai oti kalitero :lol: )

Me sigxvreitai an ginomai koyrastikos kai sas Eyxaristw oloys gia tis protaseis sas !!!!
Back to top
View user's profile Send private message
menace
n00b
n00b


Joined: 25 Dec 2003
Posts: 47

PostPosted: Wed Apr 06, 2005 7:41 pm    Post subject: Reply with quote

Το τι κανουν τα macros μπορείς να το δείς στο interface.c στην αρχή, μιας και εκεί ορίζονται.

Θα δείς οτι καλούν functions τη glib. (το gobject είναι μερος της glib)

Την glib την κάνεις implicitly include όταν κάνεις include το gtk.h
Εδώ είναι το documentation του Gobject
http://developer.gnome.org/doc/API/2.0/gobject/

Για παράδειγμα το g_object_set_data_full είναι εδώ:
http://developer.gnome.org/doc/API/2.0/gobject/gobject-The-Base-Object-Type.html#g-object-set-data-full
Back to top
View user's profile Send private message
bravewic
n00b
n00b


Joined: 03 Apr 2005
Posts: 4

PostPosted: Wed Apr 06, 2005 10:45 pm    Post subject: Reply with quote

Sas eyxaristw oloys poli gia tin boitheia . :)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Greek All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum