/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 <gtk/gtk.h>
/* 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>
|