This file is indexed.

/usr/share/help/cs/gnome-devel-demos/scale.c.page is in gnome-devel-docs 3.28.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?xml version="1.0" encoding="utf-8"?>
<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="scale.c" xml:lang="cs">
  <info>
    <title type="text">Scale (C)</title>
    <link type="guide" xref="c#entry"/>
    <link type="seealso" xref="grid.c"/>
    <link type="seealso" xref="label.c"/>
    <revision version="0.2" date="2012-07-04" status="draft"/>

    <credit type="author copyright">
      <name>Monica Kochofar</name>
      <email its:translate="no">monicakochofar@gmail.com</email>
      <years>2012</years>
    </credit>

    <desc>Widget stupnice pro výběr hodnoty z nějakého rozsahu</desc>
  </info>

  <title>Scale</title>

  <media type="image" mime="image/png" src="media/scale2.png"/>
  <p>Jezděte po stupnici!</p>

      <code mime="text/x-csrc" style="numbered">
#include &lt;gtk/gtk.h&gt;



/* Toto je funkce zpětného volání
 * Jedná se o obslužnou funkci, která reaguje na signál 
 * V tomto případě upozorní uživatele na hodnotu na stupnici v podobě popisku
 */
static void
hscale_moved (GtkRange *range,
              gpointer  user_data)
{
   GtkWidget *label = user_data;

   /* Získá hodnotu z rozsahu a převede ji na řetězec, který bude
    * použit jako nový popisek pro vodorovnou stupnici
    * %.0f - maska pro typ double, který bude mít 0 desetinných míst
    */
   gdouble pos = gtk_range_get_value (range);
   /* Poznámka: g_strdup_printf vrací řetězec, který je třeba uvolnit
    * (což je uděláno dále)
    */
   gchar *str = g_strdup_printf ("Horizontal scale is %.0f", pos);
   gtk_label_set_text (GTK_LABEL (label), str);

   g_free(str);
}



/* Toto je druhá funkce zpětného volání. Jedná se o obslužnou funkci, která
 * reaguje na signál. Dělá stejnou věc, jako funkce výše, akorát pro svislou
 * stupnici
 */
vscale_moved (GtkRange *range,
              gpointer  user_data)
{
   GtkWidget *label = user_data;
   
   gdouble pos = gtk_range_get_value (range);
   /* %.1f - maska pro typ double, který bude mít 1 desetinné místo */
   gchar *str = g_strdup_printf ("Vertical scale is %.1f", pos);
   gtk_label_set_text (GTK_LABEL (label), str);

   
   g_free (str);
}



static void
activate (GtkApplication *app,
          gpointer        user_data)
{
  /* Deklarace proměnných */
  GtkWidget *window;
  GtkWidget *h_scale;
  GtkWidget *v_scale;
  GtkWidget *hlabel;
  GtkWidget *vlabel;
  GtkWidget *grid;

  /* Objekt Adjustment představující hodnoty, které
   * budou přiřazeny jako dolní a horní mez
   */
  GtkAdjustment *hadjustment;
  GtkAdjustment *vadjustment;

  /* Vytvoří okno s názvem do záhlaví a výchozí velikostí */
  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Scale Example");
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
  gtk_container_set_border_width (GTK_CONTAINER (window), 5);

  /* Dva popisky, které budou zobrazeny v okně */
  hlabel = gtk_label_new ("Move the scale handle...");
  vlabel = gtk_label_new ("Move the scale handle...");

   
  /* gtk_adjustment_new přebírá šest parametrů, tři z nich
   * mohou být složitější na pochopení:
   * přírůstek kroku- viditelný posun táhla při použití kurzorové šipky na klávesnici
   * přírůstek stránky - viditelný posun táhla při kliknutí mimo něj na stupnici
   * velikost stránky - zde nepoužito
   */
  hadjustment = gtk_adjustment_new (0, 0, 100, 5, 10, 0);
  vadjustment = gtk_adjustment_new (50, 0, 100, 5, 10, 0); 

  /* Vytvoří vodorovnou stupnici, zajistí že čísla nebudou mít žádná
   * desetinná místa
   */
  h_scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, hadjustment);
  gtk_scale_set_digits (GTK_SCALE (h_scale), 0); 

  /* Umožníme ji roztáhnout se vodorovně (pokud je místo) a
   * nastaví ji svislé zarovnání
   */
  gtk_widget_set_hexpand (h_scale, TRUE);
  gtk_widget_set_valign (h_scale, GTK_ALIGN_START);
  
  /* Napojí signál "value-changed" pro vodorovnou stupnici na
   * příslušnou funkci zpětného volání
   * Všimněte si, že GtkRange je součástí hierarchie objektů GtkScale
   */
  g_signal_connect (h_scale, 
                    "value-changed", 
                    G_CALLBACK (hscale_moved), 
                    hlabel);



  /* Vytvoří svislou stupnici. Tentokrát uvidíme, co se stane, když
   * čísla nejsou na začátku nastavena
   */
  v_scale = gtk_scale_new (GTK_ORIENTATION_VERTICAL, vadjustment);
  gtk_widget_set_vexpand (v_scale, TRUE);

  /* Napojí signál "value-changed" pro svislou stupnici na
   * příslušnou funkci zpětného volání
   */
  g_signal_connect (v_scale, 
                    "value-changed", 
                    G_CALLBACK (vscale_moved), 
                    vlabel);

  /* Vytvoří mřížku a vše do ní správně uspořádá */
  grid = gtk_grid_new ();
  gtk_grid_set_column_spacing (GTK_GRID (grid), 10);
  gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);
  gtk_grid_attach (GTK_GRID (grid), h_scale, 0, 0, 1, 1);
  gtk_grid_attach (GTK_GRID (grid), v_scale, 1, 0, 1, 1);
  gtk_grid_attach (GTK_GRID (grid), hlabel, 0, 1, 1, 1);
  gtk_grid_attach (GTK_GRID (grid), vlabel, 1, 1, 1, 1);
  

  gtk_container_add (GTK_CONTAINER (window), grid);

  gtk_widget_show_all (window);
}



int
main (int argc, char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}
</code>
<p>V této ukázce se používá následující:</p>
<list>
  <item><p><link href="http://developer.gnome.org/gtk3/3.4/GtkApplication.html">GtkApplication</link></p></item>
  <item><p><link href="http://developer.gnome.org/gtk3/3.4/GtkWindow.html">GtkWindow</link></p></item>
  <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkScale.html">GtkScale</link></p></item>
  <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkRange.html">GtkRange</link></p></item>
  <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkAdjustment.html">GtkAdjustment</link></p></item>
  <item><p><link href="http://developer.gnome.org/glib/stable/glib-String-Utility-Functions.html#g-strdup-printf">Funkce pro práci s řetězci</link></p></item>
</list>
</page>