Blame platform-demos/el/spinner.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="spinner.c" xml:lang="el">
Packit 1470ea
  <info>
Packit 1470ea
    <title type="text">Μετρητής (Spinner)(C)</title>
Packit 1470ea
    <link type="guide" xref="c#display-widgets"/>
Packit 1470ea
    <link type="seealso" xref="togglebutton.c"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-14" 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/spinner.png"/>
Packit 1470ea
  

Αυτός ο μετρητής σταματά και ξεκινά πατώντας το πλήκτρο διαστήματος.

Packit 1470ea
Packit 1470ea
      
Packit 1470ea
#include <gtk/gtk.h>
Packit 1470ea
 
Packit 1470ea
Packit 1470ea
Packit 1470ea
 /*Καθολική μεταβλητή που χρησιμοποιείται για να δείξει την ενεργή κατάσταση του 
Packit 1470ea
μετρητή. TRUE = active, FALSE = not-active. Αυτό συμβαίνει επειδή 
Packit 1470ea
δεν υπάρχει μια τρέχουσα συνάρτηση για την C που το κάνει για μας */
Packit 1470ea
gboolean active;  
Packit 1470ea
 
Packit 1470ea
Packit 1470ea
Packit 1470ea
/*Αυτή είναι η συνάρτηση επανάκλησης . Είναι μια συνάρτηση χειρισμού 
Packit 1470ea
που αντιδρά στο σήμα. Σε αυτήν την περίπτωση, θα προκαλέσει 
Packit 1470ea
την εκκίνηση και παύση του μετρητή ανάλογα με το πόσες φορές ο χρήστης 
Packit 1470ea
πατά το πλήκτρο διαστήματος.*/ 
Packit 1470ea
static gboolean
Packit 1470ea
key_pressed_event (GtkWidget *widget,
Packit 1470ea
                   GdkEvent  *event,
Packit 1470ea
                   gpointer   user_data)
Packit 1470ea
{
Packit 1470ea
  GtkWidget *spinner = user_data;
Packit 1470ea
  guint keyval;
Packit 1470ea
  
Packit 1470ea
  /*Εξάγει την keyval από ένα συμβάν και την αποθηκεύει στη μεταβλητή 
Packit 1470ea
  "keyval" (δίνουμε στη συνάρτηση τη διεύθυνση). Σε αυτήν την περίπτωση, το 
Packit 1470ea
  συμβά είναι GdkEventKey, ένα συμβάν πατήματος πλήκτρου*/
Packit 1470ea
  gdk_event_get_keyval (event, &keyval);  
Packit 1470ea
Packit 1470ea
  /*Λήψη της τιμής Μπουλ από τονμετρητή*/
Packit 1470ea
  g_object_get (GTK_SPINNER (spinner), "active", &active, NULL);
Packit 1470ea
  
Packit 1470ea
  if (keyval == GDK_KEY_space) {
Packit 1470ea
     if (active) {
Packit 1470ea
         gtk_spinner_stop (GTK_SPINNER (spinner));
Packit 1470ea
     }
Packit 1470ea
     else {
Packit 1470ea
         gtk_spinner_start (GTK_SPINNER (spinner));
Packit 1470ea
     } 
Packit 1470ea
  }
Packit 1470ea
  
Packit 1470ea
return TRUE;
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
  GtkWidget *window;
Packit 1470ea
  GtkWidget *spinner;
Packit 1470ea
 
Packit 1470ea
  /*Δημιουργία παραθύρου με τίτλο, πλάτος περιγράμματος και προεπιλεγμένο μέγεθος*/
Packit 1470ea
  window = gtk_application_window_new (app);
Packit 1470ea
 
Packit 1470ea
  gtk_window_set_title (GTK_WINDOW (window), "Spinner Example");
Packit 1470ea
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
Packit 1470ea
  gtk_container_set_border_width (GTK_CONTAINER(window), 30);
Packit 1470ea
 
Packit 1470ea
  /*Δημιουργία ενός μετρητή, με πρόσθετο οριζόντιο και κάθετο χώρο*/
Packit 1470ea
  spinner = gtk_spinner_new ();
Packit 1470ea
  gtk_spinner_start (GTK_SPINNER (spinner));
Packit 1470ea
  
Packit 1470ea
  gtk_container_add (GTK_CONTAINER (window), spinner);
Packit 1470ea
 
Packit 1470ea
  /*Σύνδεση του σήματος key-press-event με τη συνάρτηση επανάκλησης*/
Packit 1470ea
  g_signal_connect (GTK_WINDOW (window), "key-press-event", 
Packit 1470ea
                    G_CALLBACK (key_pressed_event), spinner);
Packit 1470ea
 
Packit 1470ea
  gtk_widget_show_all (window);
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
  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/3.4/GtkApplication.html">GtkApplication</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/3.4/GtkWindow.html">GtkWindow</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gobject/stable/gobject-The-Base-Object-Type.html#g-object-get">GObject</link>

</item>
Packit 1470ea
  <item>

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

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