Blame platform-demos/el/toolbar.c.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="toolbar.c" xml:lang="el">
Packit 1470ea
  <info>
Packit 1470ea
    <title type="text">Εργαλειοθήκη (C)</title>
Packit 1470ea
    <link type="guide" xref="c#menu-combo-toolbar"/>
Packit 1470ea
    <link type="seealso" xref="menubar.c"/>
Packit 1470ea
    <link type="seealso" xref="grid.c"/>
Packit 1470ea
    <revision version="0.1" date="2012-08-19" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Monica Kochofar</name>
Packit 1470ea
      <email its:translate="no">monicakochofar@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Γραμμή κουμπιών</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Ελληνική μεταφραστική ομάδα GNOME</mal:name>
Packit 1470ea
      <mal:email>team@gnome.gr</mal:email>
Packit 1470ea
      <mal:years>2012-2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Δημήτρης Σπίγγος</mal:name>
Packit 1470ea
      <mal:email>dmtrs32@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2012, 2013</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Μαρία Θουκιδίδου</mal:name>
Packit 1470ea
      <mal:email>marablack3@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Θάνος Τρυφωνίδης</mal:name>
Packit 1470ea
      <mal:email>tomtryf@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014, 2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Εργαλειοθήκη</title>
Packit 1470ea
Packit 1470ea
  <media type="image" mime="image/png" src="media/toolbar.png"/>
Packit 1470ea
  

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

Packit 1470ea
  

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

Packit 1470ea
Packit 1470ea
      
Packit 1470ea
#include <gtk/gtk.h>
Packit 1470ea
Packit 1470ea
/* Δήλωση αυτών των δύο κουμπιών εργαλείων, καθώς θα χρησιμοποιηθούν και στην
Packit 1470ea
 * ενέργεια επανάκλησης πλήρους οθόνης καθώς και στη συνάρτηση ενεργοποίησης.
Packit 1470ea
 */
Packit 1470ea
GtkToolItem *fullscreen_button;
Packit 1470ea
GtkToolItem *leavefullscreen_button;
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
/* Η συνάρτηση ανάκλησης για την ενέργεια της αναίρεσης */
Packit 1470ea
static void
Packit 1470ea
undo_callback (GSimpleAction *simple,
Packit 1470ea
               GVariant      *parameter,
Packit 1470ea
               gpointer       user_data)
Packit 1470ea
{
Packit 1470ea
  g_print ("You clicked \"Undo\".\n");
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
/* Η συνάρτηση επανάκλησης για την ενέργεια πλήρους οθόνης */
Packit 1470ea
static void
Packit 1470ea
fullscreen_callback (GSimpleAction *simple,
Packit 1470ea
                     GVariant      *parameter,
Packit 1470ea
                     gpointer       user_data)
Packit 1470ea
{
Packit 1470ea
  GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));
Packit 1470ea
Packit 1470ea
  GdkWindowState current_state = gdk_window_get_state (window);
Packit 1470ea
Packit 1470ea
  /* Αν το παράθυρο είναι προς το παρόν σε κατάσταση πλήρους οθόνης */
Packit 1470ea
  if ( (current_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)
Packit 1470ea
    {
Packit 1470ea
      /* Ελαχιστοποίηση του παραθύρου και αλλαγή στο κουμπί πλήρους οθόνης */
Packit 1470ea
      gdk_window_unfullscreen (window);
Packit 1470ea
      gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));
Packit 1470ea
      gtk_widget_show (GTK_WIDGET(fullscreen_button));
Packit 1470ea
    }
Packit 1470ea
  else
Packit 1470ea
    {
Packit 1470ea
      /* Μεγιστοποίηση του παραθύρου, και αλλαγή σε κουμπί μη πλήρους οθόνης */
Packit 1470ea
      gdk_window_fullscreen (window);
Packit 1470ea
      gtk_widget_hide (GTK_WIDGET (fullscreen_button));
Packit 1470ea
      gtk_widget_show (GTK_WIDGET (leavefullscreen_button));
Packit 1470ea
    }
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
static void
Packit 1470ea
activate (GtkApplication *app,
Packit 1470ea
          gpointer        user_data)
Packit 1470ea
{
Packit 1470ea
  /* Αρχικοποίηση μεταβλητών */
Packit 1470ea
  GtkWidget *window;
Packit 1470ea
  GtkWidget *grid;
Packit 1470ea
  GtkWidget *toolbar;
Packit 1470ea
Packit 1470ea
  GtkToolItem *new_button;
Packit 1470ea
  GtkToolItem *open_button;
Packit 1470ea
  GtkToolItem *undo_button;
Packit 1470ea
Packit 1470ea
  GtkStyleContext *style_context;
Packit 1470ea
Packit 1470ea
  GSimpleAction *undo_action;
Packit 1470ea
  GSimpleAction *fullscreen_action;
Packit 1470ea
  GSimpleAction *leavefullscreen_action;
Packit 1470ea
Packit 1470ea
  /* Δημιουργία παραθύρου με τίτλο και προεπιλεγμένο μέγεθος */
Packit 1470ea
  window = gtk_application_window_new (app);
Packit 1470ea
  gtk_window_set_title (GTK_WINDOW (window), "Toolbar Example");
Packit 1470ea
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);
Packit 1470ea
Packit 1470ea
  /* Εδώ αρχίζει η δημιουργία της εργαλειοθήκης */
Packit 1470ea
  toolbar = gtk_toolbar_new ();
Packit 1470ea
  /* Ορισμός της εργαλειοθήκης να είναι η πρωτογενής εργαλειοθήκη της εφαρμογής */
Packit 1470ea
  style_context = gtk_widget_get_style_context (toolbar);
Packit 1470ea
  gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
Packit 1470ea
Packit 1470ea
  /* Δημιουργία κουμπιού για την ενέργεια "new", με μια έτοιμη εικόνα */
Packit 1470ea
  new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);
Packit 1470ea
  /* Εμφάνιση της ετικέτας του κουμπιού "new" */
Packit 1470ea
  gtk_tool_item_set_is_important (new_button, TRUE);
Packit 1470ea
  /* Εισαγωγή του κουμπιού στην επιθυμητή θέση μες την εργαλειοθήκη */
Packit 1470ea
  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);
Packit 1470ea
  /* Εμφάνιση του κουμπιού */
Packit 1470ea
  gtk_widget_show (GTK_WIDGET (new_button));
Packit 1470ea
  /* Ορισμός του ονόματος ενέργειας για την ενέργεια "new". Χρήση του "app.new"
Packit 1470ea
   * για να δείξει ότι η ενέργεια ελέγχει την εφαρμογή.
Packit 1470ea
   */
Packit 1470ea
  gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), "app.new");
Packit 1470ea
Packit 1470ea
  /* Επανάληψη των ίδιων βημάτων για την ενέργεια "open" */
Packit 1470ea
  open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);
Packit 1470ea
  gtk_tool_item_set_is_important (open_button, TRUE);
Packit 1470ea
  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);
Packit 1470ea
  gtk_widget_show (GTK_WIDGET (open_button));
Packit 1470ea
  gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), "app.open");
Packit 1470ea
Packit 1470ea
  /* Επανάληψη των ίδιων βημάτων για την ενέργεια "undo" */
Packit 1470ea
  undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);
Packit 1470ea
  gtk_tool_item_set_is_important (undo_button, TRUE);
Packit 1470ea
  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);
Packit 1470ea
  gtk_widget_show (GTK_WIDGET (undo_button));
Packit 1470ea
  /* Σε αυτήν την περίπτωση, χρησιμοποιείται "win.undo" για να δείξει ότι
Packit 1470ea
   * η ενέργεια ελέγχει μόνο το παράθυρο
Packit 1470ea
   */
Packit 1470ea
  gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), "win.undo");
Packit 1470ea
Packit 1470ea
  /* Επανάληψη των ίδιων βημάτων για την ενέργεια "fullscreen" */
Packit 1470ea
  fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);
Packit 1470ea
  gtk_tool_item_set_is_important (fullscreen_button, TRUE);
Packit 1470ea
  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);
Packit 1470ea
  gtk_widget_show (GTK_WIDGET (fullscreen_button));
Packit 1470ea
  gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),
Packit 1470ea
                                  "win.fullscreen");
Packit 1470ea
Packit 1470ea
  /*Επανάληψη των ίδιων βημάτων για την ενέργεια "leavefullscreen" */
Packit 1470ea
  leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);
Packit 1470ea
  gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);
Packit 1470ea
  gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);
Packit 1470ea
  /* Η μόνη διαφορά εδώ είναι ότι δεν εμφανίζουμε το κουμπί εξόδου από την πλήρη οθόνη,
Packit 1470ea
   * επειδή θα αντικαταστήσει αργότερα το κουμπί πλήρους οθόνης.
Packit 1470ea
   */
Packit 1470ea
  gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),
Packit 1470ea
                                  "win.leavefullscreen");
Packit 1470ea
Packit 1470ea
  /* Μόλις δημιουργήσουμε τον σκελετό της εργαλειοθήκης, εξασφαλίζουμε ότι
Packit 1470ea
   * έχει αρκετό οριζόντιο χώρο.
Packit 1470ea
   */
Packit 1470ea
  gtk_widget_set_hexpand (toolbar, TRUE);
Packit 1470ea
  gtk_widget_show (toolbar);
Packit 1470ea
Packit 1470ea
  /* Προσάρτηση της εργαλειοθήκης στο πλέγμα και προσθήκη της στο συνολικό παράθυρο */
Packit 1470ea
  grid = gtk_grid_new ();
Packit 1470ea
  gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);
Packit 1470ea
  gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));
Packit 1470ea
  gtk_widget_show (GTK_WIDGET (grid));
Packit 1470ea
Packit 1470ea
  /* Χρησιμοποιήστε τα ονόματα ενεργειών για τη δημιουργία των ενεργειών που ελέγουν
Packit 1470ea
   * το παράθυρο και σύνδεσή τους με τις κατάλληλες συναρτήσεις επανάκλησης.
Packit 1470ea
   */
Packit 1470ea
  undo_action = g_simple_action_new ("undo", NULL);
Packit 1470ea
  g_signal_connect (undo_action, "activate", G_CALLBACK (undo_callback),
Packit 1470ea
                    GTK_WINDOW (window));
Packit 1470ea
  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));
Packit 1470ea
Packit 1470ea
  fullscreen_action = g_simple_action_new ("fullscreen", NULL);
Packit 1470ea
  g_signal_connect (fullscreen_action, "activate", G_CALLBACK (fullscreen_callback),
Packit 1470ea
                    GTK_WINDOW (window));
Packit 1470ea
  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));
Packit 1470ea
Packit 1470ea
  leavefullscreen_action = g_simple_action_new ("leavefullscreen", NULL);
Packit 1470ea
  g_signal_connect (leavefullscreen_action, "activate", G_CALLBACK (fullscreen_callback),
Packit 1470ea
                    GTK_WINDOW (window));
Packit 1470ea
  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));
Packit 1470ea
Packit 1470ea
  gtk_widget_show (window);
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
/* Η συνάρτηση επανάκλησης για την νέα ενέργεια */
Packit 1470ea
static void
Packit 1470ea
new_callback (GSimpleAction *simple,
Packit 1470ea
              GVariant      *parameter,
Packit 1470ea
              gpointer       user_data)
Packit 1470ea
{
Packit 1470ea
  g_print ("You clicked \"New\".\n");
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
/* Η συνάρτηση επανάκλησης για την ενέργεια άνοιγμα */
Packit 1470ea
static void
Packit 1470ea
open_callback (GSimpleAction *simple,
Packit 1470ea
               GVariant      *parameter,
Packit 1470ea
               gpointer       user_data)
Packit 1470ea
{
Packit 1470ea
  g_print ("You clicked \"Open\".\n");
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
/* Σε αυτήν την συνάρτηση, δημιουργούμε τις ενέργειες που ελέγχουν το παράθυρο
Packit 1470ea
 * και συνδέουν τα σήματά τους με την κατάλληλη συνάρτηση επανάκλησης.
Packit 1470ea
 */
Packit 1470ea
static void
Packit 1470ea
startup (GApplication *app,
Packit 1470ea
         gpointer      user_data)
Packit 1470ea
{
Packit 1470ea
  GSimpleAction *new_action;
Packit 1470ea
  GSimpleAction *open_action;
Packit 1470ea
Packit 1470ea
  new_action = g_simple_action_new ("new", NULL);
Packit 1470ea
  g_signal_connect (new_action, "activate", G_CALLBACK (new_callback), app);
Packit 1470ea
  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));
Packit 1470ea
Packit 1470ea
  open_action = g_simple_action_new ("open", NULL);
Packit 1470ea
  g_signal_connect (open_action, "activate", G_CALLBACK (open_callback), app);
Packit 1470ea
  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
/* Η συνάρτηση έναρξης για την εφαρμογή */
Packit 1470ea
int
Packit 1470ea
main (int argc, char **argv)
Packit 1470ea
{
Packit 1470ea
  GtkApplication *app;
Packit 1470ea
  int status;
Packit 1470ea
Packit 1470ea
  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
Packit 1470ea
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
Packit 1470ea
  g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
Packit 1470ea
  status = g_application_run (G_APPLICATION (app), argc, argv);
Packit 1470ea
  g_object_unref (app);
Packit 1470ea
Packit 1470ea
  return status;
Packit 1470ea
}
Packit 1470ea
Packit 1470ea

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

Packit 1470ea
<list>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkToolbar.html">GtkToolbar</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkToolButton.html">GtkToolbutton</link>

</item>
Packit 1470ea
</list>
Packit 1470ea
</page>