# GMenu (Python)

Tiffany Antopolski
tiffany.antopolski@gmail.com 2012
Marta Maria Casetti
mmcasetti@gmail.com 2012
Μια απλή εφαρμογή του GMenuModel

# GMenu

Μια GtkApplication με ένα απλό GMenu και SimpleActions

Χρειάζεται να τρέξετε το Gtk3.4 ή μεταγενέστερο για αυτή τη δουλειά

# Ο χρησιμοποιούμενος κώδικας για παραγωγή αυτού παραδείγματος

# Χρήσιμες μέθοδοι για μια GSimpleAction και ένα GMenu

Χρήσιμες μέθοδοι για μια GSimpleAction:

Για τη δημιουργία μιας νέας ενέργειας που είναι χωρίς κατάσταση, δηλαδή, μια ενέργεια που δεν κρατά ή εξαρτάται από τη δεδομένη κατάσταση από την ίδια την ενέργεια, χρησιμοποιήστε

action = Gio.SimpleAction.new("name", parameter_type)

όπου `"name"` είναι το όνομα της ενέργειας και `parameter_type` είναι ο τύπος των παραμέτρων που δέχεται η ενέργεια όταν ενεργοποιείται. Αυτό μπορεί να είναι `None`, ή `GLib.VariantType.new('s')` εάν η παράμετρος είναι ο τύπος `str`, ή στη θέση του `'s'` ένας χαρακτήρας όπως περιγράφεται εδώ. Για τη δημιουργία μιας νέας ενέργειας με κατάσταση (δηλαδή όχι χωρίς κατάσταση), χρησιμοποιήστε

action = Gio.SimpleAction.new_stateful("name", parameter_type, initial_state)

όπου `initial_state` ορίζεται ως μια GVariant - για παράδειγμα `Glib.Variant.new_string('start')`; για μια λίστα δυνατοτήτων δείτε εδώ.

`set_enabled(True)` ορίζει την ενέργεια ως ενεργή· μια ενέργεια πρέπει να είναι ενεργή για να ενεργοποιηθεί ή για να έχει την κατάσταση της αλλαγμένη από εξωτερικές κλήσεις . Αυτό πρέπει να καλείται μόνο από την εφαρμογή της ενέργειας. Οι χρήστες της ενέργειας δεν πρέπει να προσπαθούν να τροποποιήσουν την ενεργή σημαία του.

`set_state(state)`, όπου `state` είναι μια GVariant, που ορίζει την κατάσταση της ενέργειας, ενημερώνοντας την ιδιότητα 'state' στη δεδομένη τιμή. Αυτή πρέπει να καλείται μόνο από τον εκτελεστή της ενέργειας· Οι χρήστες της ενέργειας πρέπει να καλούν `change_state(state)` (όπου `state` είναι όπως πιο πάνω) για να ζητούν την αλλαγή.

Χρήσιμες μέθοδοι για ένα GMenu:

Για εισαγωγή ενός στοιχείου στο μενού στη θέση `position`, χρησιμοποιήστε `insert(position, label, detailed_action)`, όπου `label` είναι η ετικέτα που θα εμφανιστεί στο μενού και `detailed_action` είναι μια συμβολοσειρά αποτελούμενη από το όνομα της ενέργειας στην οποία προτάσσουμε το πρόθεμα `app.`. Μια πιο λεπτομερής συζήτηση αυτού μπορεί να βρεθεί στο .

Για προσάρτηση ή πρόταξη ενός στοιχείου στο μενού χρησιμοποιήστε αντίστοιχα `append(label, detailed_action)` και `prepend(label, detailed_action)`.

Ένας άλλος τρόπος προσθήκης στοιχείων στο μενού είναι η δημιουργία τους ως `GMenuItem` και η χρήση `insert_item(position, item)`, `append_item(item)`, ή `prepend_item(item)`; έτσι για παράδειγμα πρέπει να έχουμε:

about = Gio.MenuItem.new("About", "app.about") menu.append_item(about)

Μπορούμε επίσης να προσθέσουμε μια ολόκληρη υποενότητα σε ένα μενού χρησιμοποιώντας `insert_section(position, label, section)`, `append_section(label, section)`, ή `prepend_section(label, section)`, όπου `label` είναι ο τίτλος της υποενότητας.

Για να προσθέσουμε ένα υπομενού που θα επεκταθεί και θα συμπτυχθεί, χρησιμοποιήστε `insert_submenu(position, label, section)`, `append_submenu(label, section)`, ή `prepend_submenu(label, section)`, όπου `label` είναι ο τίτλος της υποενότητας.

Για την αφαίρεση ενός στοιχείου από το μενού, χρησιμοποιήστε `remove(postion)`.

Για ορισμό μιας ετικέτας για το μενού, χρησιμοποιήστε `set_label(label)`.

# Αναφορές API

Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:

GMenu

GSimpleAction

GVariantType

GVariant