Παρουσίαση glade

21
Παρουσίαση Glade Παρουσίαση Glade Νίκος Δεληγιάννης Α.Μ.: 1052

Upload: vesta

Post on 21-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

Παρουσίαση Glade. Νίκος Δεληγιάννης Α.Μ.: 1052. Τι είναι το Glade;. Εφαρμογή για την αυτοματοποίηση της σχεδίασης ενός γραφικού περιβάλλοντος χρήστη (GUI). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Παρουσίαση Glade

Παρουσίαση GladeΠαρουσίαση Glade

Νίκος Δεληγιάννης

Α.Μ.: 1052

Page 2: Παρουσίαση Glade

Τι είναι το Glade;Τι είναι το Glade;

Εφαρμογή για την αυτοματοποίηση της σχεδίασης ενός γραφικού περιβάλλοντος χρήστη (GUI).

Τα στοιχεία που απαρτίζουν το GUI (παράθυρα, φόρμες, κουμπιά κλπ.) θα απεικονιστούν με τη βοήθεια της βιβλιοθήκης GTK.

Δύο τρόποι εργασίας:

1. Αυτόματη παραγωγή του σχετικού με το GUI πηγαίου κώδικα.

2. Αποθήκευση του project σε αρχείο XML από το οποίο μπορεί να απεικονιστεί το GUI με τη χρήση της βιβλιοθήκης libglade.

Page 3: Παρουσίαση Glade

ΠλεονεκτήματαΠλεονεκτήματα

Μικρό σε μέγεθος.Χαμηλές απαιτήσεις σε πόρους.

Είναι ένα πραγματικό RAD (Rapid Application Developement) εργαλείο, αφού επιτρέπει στον προγραμματιστή να αφιερώσει τον περισσότερο χρόνο του στην ανάπτυξη του backend της εφαρμόγης.

Συμβατότητα με πολλές πλατφόρμες: Παρέχεται προς εγκατάσταση σε πολλά UNIX, UNIX-like περιβάλλοντα και σε Microsoft Windows. Είναι γραμμένο σε C και ανοιχτού κώδικα, οπότε είναι και απόλυτα μεταφέρσιμο.

Επεκτάσιμο με custom widgets

Page 4: Παρουσίαση Glade

ΜειονεκτήματαΜειονεκτήματα

Δεν είναι ολοκληρωμένο IDE (Integrated Developement Environment) σε αντίθεση με πιο γνωστές εμπορικές λύσεις από Microsoft, Borland κ.ά. Χρησιμοποιείται σε συνδυασμό με ένα υπάρχον IDE. Παράδειγμα: Σε Linux συνεργάζεται με το Anjuta IDE.

Σε σχέση με τις λύσεις που αναφέρθηκαν παραπάνω, θεωρείται πιο δύσχρηστο (έλλειψη wizards και λοιπών αυτοματισμών).

Στην έκδοση 3, αφαιρέθηκε η δυνατότητα αυτόματης παραγωγής κώδικα.

Page 5: Παρουσίαση Glade

Περιβάλλον χρήσηςΠεριβάλλον χρήσης

Κύριο παράθυρο:

Παράθυρο ιδιοτήτων(Properties Window):

Page 6: Παρουσίαση Glade

Περιβάλλον χρήσηςΠεριβάλλον χρήσης

Παλέττα(Pallette):

Tα βασικότερα widgets:

Page 7: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Για τη δημιουργία ενός παραθύρου: -πατάμε το κουμπί ”GTK window” και αμέσως ανοίγει ένα παράθυρο με όνομα window1.Την ύπαρξη του δηλώνει και το Glade main window.

Page 8: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project Χρησιμοποιούμε τα κουμπιά

”Ηorizontal Box” & ”Vertical Box” για να χωρίσουμε το παράθυρο σε τόσα οριζόντια και κάθετα μέρη(containers) όσα στοιχεία θέλουμε να εισάγουμε. 'Οπως το παράδειγμα:Σε ορισμένες περιπτώσεις έχει σημασία η σειρά με την οποία θα τοποθετήσουμε τα widgets. π.χ τα frames...

Aν σε κάποιο container θέλουμε να δημιουργήσουμε κάποιο frame μέσα στο οποίο θα έχουμε άλλα containers τότε θα ενεργήσω με αντίστοιχη σειρά

Page 9: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

'Ετσι επιλέγουμε τα containers στα οποία θέλουμε να εισάγουμε τα widgets. Επιλέγουμε από την παλέττα το κουμπί ”Text Entry” και με το ποντίκι επιλέγουμε το container στο οποίο θέλουμε να το τοποθετήσουμε.Σε αυτά ο χρήστης θα εισάγει τα δεδομένα του προγράμματος. Όμοια με το κουμπί ”Radio Button” εισάγουμε δύο κουμπιά ”συνθήκης” τα οποία δίνουν τα αντίστοιχα αποτελέσματα.

Page 10: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Στην περίπτωση που θέλουμε να εισάγουμε περισσότερα από ένα widgets σε ένα container...Επιλέγουμε το κουμπί ”Fixed position” προτού να επιλέξουμε το widget που θέλουμε και στη συνέχεια ”σέρνουμε” με το ποντίκι το widget στον καμβά του παραθύρου που δημιουργούμε.

Εφόσον έχουμε ορίσει τις θέσεις πάνω στο παράθυρό μας...αυτές δεν θα αλλάξουν αν κάνουμε resize το παράθυρο, είτε αυτο σημαίνει maximize είτε minimize.

Page 11: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Τέλος μπορούμε να εισάγουμε ένα button (απλό ή με pressed/depressed εμφάνιση) που θα εκτελεί το αντίστοιχο τμήμα κώδικα του backend με την προυπόθεση ότι έχει εισαχθεί το απαραίτητο input για τους υπολογισμούς .

Page 12: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Χρήση του Properties Window: κάνοντας κλικ σε ένα από τα widgets εμφανίζεται στο P.W. ένα σύνολο από ρυθμίσεις.

Βασικές αλλαγές: -αλλαγή του name και του label καθώς και των signals και των handlers

Το name:Eίναι το όνομα του widget το οποίο δεν φαίνεται στο παράθυρο που δημιουργούμε αλλά στον κώδικα που θα δημιουργήσουμε.

Το label:Είναι ο τίτλος που θα εμφανίζεται στο παράθυρο που δημιουργήσαμε.

Τα signals:είναι μια σειρά από default επιλογές για οποιοδήποτε τύπο widget και δηλώνουν το αίτιο το οποίο θα προκαλέσει την αποστολή σήματος στον κώδικα που θα εκτελεστεί.

Page 13: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Page 14: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project Τέλος για να προσθέσουμε κώδικα σε

αυτό το frontend πρέπει να καθορίσουμε ποια widgets θέλουμε να συνδεθούν με callback functions που θα εκτελεστούν όταν σταλεί ένα σήμα.Αυτή τη δουλειά την καθορίζουν οι handlers.

Oι handlers:είναι μια σειρά από default Oι handlers:είναι μια σειρά από default επιλογές ονομάτων συναρτήσεων.επιλογές ονομάτων συναρτήσεων.

Στην περίπτωση των buttons Στην περίπτωση των buttons επιλέγουμε συνήθως τις επιλέγουμε συνήθως τις προκαθορισμένες callback functions προκαθορισμένες callback functions που μας δίνει το Properties Window.Αν που μας δίνει το Properties Window.Αν π.χ. είναι κουμπί εξόδου του π.χ. είναι κουμπί εξόδου του προγράμματος τότε επιλέγουμε την προγράμματος τότε επιλέγουμε την gtk_main_quit gtk_main_quit

Page 15: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Αφού προσθέσουμε και Αφού προσθέσουμε και τους handlers πατάμε τους handlers πατάμε AddAdd για ενεργοποίηση των για ενεργοποίηση των επιλογών. επιλογών.

'Ομοια επιλέγουμε τις 'Ομοια επιλέγουμε τις ρυθμίσεις για όλα τα ρυθμίσεις για όλα τα widgets και έχουμε: widgets και έχουμε:

Page 16: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Στο Main Window του Glade επιλέγουμε το παράθυρο που δημιουργήσαμε και θέτουμε τις ρυθμίσεις

Στη συνέχεια πατάμε στο Project-Options...

Page 17: Παρουσίαση Glade

Δημιουργία projectΔημιουργία project

Ρυθμίζουμε το Project Directory:

/home/<username>/Projects/country

Επιλέγουμε τη γλώσσα στην οποία θα γράψουμε τον κώδικα.

OK-Save

Page 18: Παρουσίαση Glade

Σύνδεση κώδικαΣύνδεση κώδικα

Στο Project Directory

/home/<username>/Projects/country

Δημιουργήθηκε ένας υποκατάλογος με το όνομα src.Μέσα σε αυτόν τον κατάλογο υπάρχουν τέσσερα

αρχεία ” .c”. Ενα από αυτά είναι το callbacks.c

Σε έναν editor ”φορτώνουμε”:

/home/<username>/Projects/country/src/callbacks.c

Εδώ συντάσουμε τον κώδικα που θέλουμε να εκτελέσουμε μετά την αποστολή κάποιου σήματος.Οι συναρτήσεις που θα δημιουργήσουμε στον κώδικα θα είναι αυτές που ορίσαμε στους handlers.

Page 19: Παρουσίαση Glade

Σύνδεση κώδικαΣύνδεση κώδικα

gboolean gb_currency=TRUE;gboolean gb_capital=FALSE;

voidon_rad_currency_toggled (GtkToggleButton *togglebutton, gpointer user_data){ gb_currency=TRUE; gb_capital=FALSE;}voidon_rad_capital_toggled (GtkToggleButton *togglebutton, gpointer user_data){ gb_currency=FALSE; gb_capital=TRUE;}

Page 20: Παρουσίαση Glade

Σύνδεση κώδικαΣύνδεση κώδικαvoidon_ok_button_clicked (GtkButton *button, gpointer user_data){ GtkWidget *entry = lookup_widget(GTK_WIDGET(button), "entry1"); GtkWidget *info_entry = lookup_widget (GTK_WIDGET(button), "info_entry"); GtkWidget *rad_currency = lookup_widget(GTK_WIDGET(button), "rad_currency"); GtkWidget *rad_capital = lookup_widget(GTK_WIDGET(button), "rad_capital"); GtkWidget *info_label = lookup_widget(GTK_WIDGET(button), "info_label"); gchar *entry_text = gtk_entry_get_text(GTK_ENTRY(entry)); gchar *countries[2], *capitals[2], *currencies[2]; GtkWidget *dialog, *dg_label, *dg_OK; gint x; countries [0] = "India"; countries [1] = "France"; capitals [0] = "Delhi"; capitals [1] = "Paris"; currencies [0] = "Rupees"; currencies [1] = "Francs"; for (x=0; x<2; x++) { if(!strcmp(entry_text, countries[x]) == 1) { gtk_widget_show (info_entry); gtk_widget_show (info_label); if (gb_currency == TRUE) { gtk_entry_set_text (GTK_ENTRY(info_entry), currencies[x]); gtk_label_set_text(GTK_LABEL(info_label), "Currency:"); } if (gb_capital == TRUE) { gtk_entry_set_text (GTK_ENTRY(info_entry), capitals[x]); gtk_label_set_text(GTK_LABEL(info_label), "Capital:"); } break; }

Page 21: Παρουσίαση Glade

Σύνδεση κώδικαΣύνδεση κώδικα

if(!strcmp(entry_text, countries[x]) == 0 && x == 1){ dialog = gtk_dialog_new(); dg_label = gtk_label_new ("Entry not found!"); dg_OK = gtk_button_new_with_label("OK"); gtk_signal_connect_object(GTK_OBJECT (dg_OK), "clicked", gtk_widget_destroy, GTK_OBJECT(dialog)); gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), dg_OK); gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), dg_label); gtk_widget_show_all (dialog); gtk_widget_grab_focus(dialog); } }}