This file is indexed.

/usr/share/help/cs/gnome-devel-demos/messagedialog.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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<?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="messagedialog.c" xml:lang="cs">
  <info>
    <title type="text">MessageDialog (C)</title>
    <link type="guide" xref="c#windows"/>
    <link type="seealso" xref="dialog.c"/>
    <revision version="0.2" date="2012-08-07" status="draft"/>

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

    <desc>Okno se zprávou</desc>
  </info>

  <title>MessageDialog</title>

  <media type="image" mime="image/png" src="media/messagedialog.png"/>
  <p>Modální dialogové okno se zprávou, které způsobí, že svět vybuchne.</p>
  <note><p>Když chcete aplikaci otestovat, stačí po jejím spuštění kliknout na nabídku <gui>Message Dialog</gui>, která se objeví v horní liště obrazovky.</p></note>

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



/* Funkce zpětného volání reagující na signál "response" od uživatele
 * v dialogovém okně se zprávou
 * Tato funkce se používá ke komunikaci s uživatelem v terminálu
 */
static void
on_response (GtkDialog *dialog,
             gint       response_id,
             gpointer   user_data)
{
  /* Když kliknutí tlačítko odpoví OK (response_id je -5) */
  if (response_id == GTK_RESPONSE_OK) 
     g_print ("*boom*\n");

  /* Když kliknuté tlačítko odpoví CANCEL (response_id je -6) */
  else if (response_id == GTK_RESPONSE_CANCEL)
     g_print ("good choice\n");

  /* Když je dialogové okno zrušeno (například zmáčknutím Esc) */
  else if (response_id == GTK_RESPONSE_DELETE_EVENT)
     g_print ("dialog closed or cancelled\n");

  /* Zlikviduje dialogové okno po té, co se uskutečnila jedna z akcí výše */
  gtk_widget_destroy (GTK_WIDGET (dialog));

}



/* Funkce zpětného volání pro signál "activate" náležející widgetu
 * SimpleAction message_action
 * Tato funkce se použije ke zobrazení dialogového okna se zprávou
 */
static void
message_cb (GSimpleAction *simple,
            GVariant      *parameter,
            gpointer       user_data)
{
   /* Proměnná parent v tomto případě představuje okno */
   GtkWidget *message_dialog;
   GtkWindow *parent = user_data;
   
   /* Vytvoří nové dialogové okno se zprávou a nastaví jeho parametry následovně:
    * příznaky - zajistí modální režim
    * (modální okno brání v interakci s ostatními okny aplikace)
    * typ zprávy - nekritická varovná zpráva
    * typ tlačítek - použije tlačítka OK a Cancel
    * zpráva - text, který uživatel v dialogovém okně uvidí
    */
   message_dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, 
                                            GTK_MESSAGE_WARNING, 
                                            GTK_BUTTONS_OK_CANCEL, 
                                            "This action will cause the universe to stop existing.");

   gtk_widget_show_all (message_dialog);

   g_signal_connect (GTK_DIALOG (message_dialog), "response", 
                    G_CALLBACK (on_response), NULL);

}



static void
activate (GtkApplication *app,
          gpointer        user_data)
{
  GtkWidget *window;
  GtkWidget *label;

  GSimpleAction *message_action;

  /* Vytvoří okno s názvem a výchozí velikostí */
  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "GMenu Example");
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);

  /* Vytvoří popisek a přidá jej do okna */
  label = gtk_label_new ("This application goes boom!");
  gtk_container_add (GTK_CONTAINER (window), label);

  /* Vytvoří novou jednoduchou akci, jako parametr type ji předá NULL. Ten
   * bude vždy NULL pro akce vyvolané z nabídky (například kliknutí na tlačítko
   * "ok"  nebo "cancel")
   */
  message_action = g_simple_action_new ("message", NULL); 

  /* Napojí signál "activate" na příslušnou funkci zpětného volání */
  g_signal_connect (message_action, "activate", G_CALLBACK (message_cb), 
                    GTK_WINDOW (window));

  /* Přidá message_action do celkové mapy akcí. Mapa akcí je rozhraní, které
   * obsahuje řadu pojmenovaných instancí GAction (jako je message_action) 
   */
  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (message_action));

  gtk_widget_show_all (window);
}



/* Funkce zpětného volání pro signál "activate" od akce "quit"
 * ve funkci hned za touto
 */ 
static void
quit_cb (GSimpleAction *simple,
         GVariant      *parameter,
         gpointer       user_data)
{
  GApplication *application = user_data;

  g_application_quit (application);
}



/* Spouštěcí funkce pro nabídku, kterou vytváříme v této ukázce */
static void
startup (GApplication *app,
         gpointer      user_data)
{
  GMenu *menu;
  GSimpleAction *quit_action;

  /* Inicializuje GMenu a přidá do něj položku s textem "Message" a akcí
   * "win.message". Přidá také další položku s textem "Quit" a akcí
   * "app.quit" 
   */
  menu = g_menu_new ();
  g_menu_append (menu, "Message", "win.message");
  g_menu_append (menu, "Quit", "app.quit");

  /* Vytvoří novou jednoduchou akci pro aplikaci (v tomto případě do je
   * akce "quit"
   */
  quit_action = g_simple_action_new ("quit", NULL);

  /* Zajistí, že právě vytvořená nabídka bude bude pro celou aplikaci */
  gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));

  g_signal_connect (quit_action, 
                    "activate", 
                    G_CALLBACK (quit_cb), 
                    app);

  g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));

}



/* Spouštecí funkce aplikace */
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);
  g_signal_connect (app, "startup", G_CALLBACK (startup), 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/gio/stable/GApplication.html">GApplication</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/GtkMessageDialog.html">GtkMessageDialog</link></p></item>
  <item><p><link href="http://developer.gnome.org/gio/stable/GSimpleAction.html#g-simple-action-new">GSimpleAction</link></p></item>
  <item><p><link href="http://developer.gnome.org/gio/stable/GActionMap.html">GActionMap</link></p></item>
  <item><p><link href="http://developer.gnome.org/gio/stable/GMenu.html">GMenu</link></p></item>
  
</list>
</page>