# Εργαλειοθήκη (Vala)

Tiffany Antopolski
tiffany.antopolski@gmail.com 2012
Γραμμή κουμπιών
Δημήτρης Σπίγγος
dmtrs32@gmail.com 2012, 2013

# Εργαλειοθήκη

Η εργαλειοθήκη μπορεί να περιέχει είτε κείμενο ή εικονίδια παρακαταθήκης. Σε αυτό το παράδειγμα χρησιμοποιούμε εικονίδια παρακαταθήκης. Αυτό το παράδειγμα έχει λειτουργικότητα πλήρους οθόνης.

Αυτό το παράδειγμα χρησιμοποιεί SimpleActions (παράθυρο και εφαρμογή). Οι ενέργειες της εφαρμογής μπορούν εύκολα να προστεθούν στο μενού της εφαρμογής.

/* Αυτό είναι το παράθυρο */ class MyWindow : Gtk.ApplicationWindow {

/* Μεταβλητές στιγμιότυπου που ανήκει στο παράθυρο */ Gtk.Toolbar toolbar; Gtk.ToolButton new_button; Gtk.ToolButton open_button; Gtk.ToolButton undo_button; Gtk.ToolButton fullscreen_button; Gtk.ToolButton leave_fullscreen_button;

/* Κατασκευαστής */ internal MyWindow (MyApplication app) { Object (application: app, title: "Toolbar Example");

this.set_default_size (400, 200); var grid = new Gtk.Grid (); this.add (grid); grid.show ();

create_toolbar (); toolbar.set_hexpand (true); grid.attach (toolbar, 0, 0, 1, 1); toolbar.show ();

/* Δημιουργία της ενέργειας παραθύρου "undo" */ var undo_action = new SimpleAction ("undo", null); undo_action.activate.connect (undo_callback); this.add_action (undo_action);

/* Δημιουργία της ενέργειας παραθύρου "fullscreen" */ var fullscreen_action = new SimpleAction ("fullscreen", null); fullscreen_action.activate.connect (fullscreen_callback); this.add_action (fullscreen_action); }

/* Αυτή η συνάρτηση δημιουργεί την εργαλειοθήκη, τα κουμπιά εργαλείων της * και εκχωρεί τα ονόματα ενεργειών στα κουμπιά εργαλείων.*/ void create_toolbar () { toolbar = new Gtk.Toolbar (); toolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);

new_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW); new_button.is_important = true; //decides whether to show the label toolbar.add (new_button); new_button.show (); new_button.action_name = "app.new";

open_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN); open_button.is_important = true; toolbar.add (open_button); open_button.show (); open_button.action_name = "app.open";

undo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO); undo_button.is_important = true; toolbar.add (undo_button); undo_button.show (); undo_button.action_name = "win.undo";

fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN); fullscreen_button.is_important = true; toolbar.add (fullscreen_button); fullscreen_button.show (); fullscreen_button.action_name = "win.fullscreen";

leave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN) ; leave_fullscreen_button.is_important = true; toolbar.add (leave_fullscreen_button);

leave_fullscreen_button.action_name = "win.fullscreen"; }

void undo_callback (SimpleAction simple, Variant? parameter) { print ("You clicked \"Undo\".\n"); }

void fullscreen_callback (SimpleAction simple, Variant? parameter) { if ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) { this.unfullscreen (); leave_fullscreen_button.hide (); fullscreen_button.show (); } else { this.fullscreen (); fullscreen_button.hide (); leave_fullscreen_button.show (); } } }

/* Αυτή είναι η εφαρμογή */ class MyApplication : Gtk.Application { protected override void activate () { new MyWindow (this).show (); }

protected override void startup () { base.startup ();

/* Δημιουργία της ενέργειας "new" και προσθήκη της στην εφαρμογή*/ var new_action = new SimpleAction ("new", null); new_action.activate.connect (new_callback); this.add_action (new_action);

/* Δημιουργία της ενέργειας "open", και προσθήκη της στην εφαρμογή */ var open_action = new SimpleAction ("open", null); open_action.activate.connect (open_callback); this.add_action (open_action);

/* Μπορείτε επίσης να προσθέσετε την ενέργεια στο μενού εφαρμογών * αν θέλετε. */ //var menu = new Menu (); //menu.append ("New", "app.new"); //this.app_menu = menu; }

void new_callback (SimpleAction action, Variant? parameter) { print ("You clicked \"New\".\n"); }

void open_callback (SimpleAction action, Variant? parameter) { print ("You clicked \"Open\".\n"); } }

/* Η κύρια συνάρτηση δημιουργεί την εφαρμογή και την εκτελεί. */ int main (string[] args) { return new MyApplication ().run (args); }

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

Gtk.Toolbar

Gtk.Toolbutton

Gtk.Stock