File: aboutdialog.c.page

package info (click to toggle)
gnome-devel-docs 40.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 79,188 kB
  • sloc: javascript: 2,514; xml: 2,407; ansic: 2,229; python: 1,854; makefile: 805; sh: 499; cpp: 131
file content (199 lines) | stat: -rw-r--r-- 7,426 bytes parent folder | download
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
<?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="aboutdialog.c" xml:lang="sv">
  <info>
    <title type="text">AboutDialog (C)</title>
    <link type="guide" xref="c#windows"/>
    <link type="seealso" xref="dialog.c"/>
    <link type="seealso" xref="messagedialog.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>Visa information om ett program</desc>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Sebastian Rasmussen</mal:name>
      <mal:email>sebras@gmail.com</mal:email>
      <mal:years>2019</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Anders Jonsson</mal:name>
      <mal:email>anders.jonsson@norsjovallen.se</mal:email>
      <mal:years>2021</mal:years>
    </mal:credit>
  </info>

  <title>AboutDialog</title>

  <media type="image" mime="image/png" src="media/aboutdialog_GMenu.png"/>
  <p>Ett AboutDialog-exempel som använder Gtk.ApplicationWindow och Menu</p>
  <note><p><em style="bold">Du måste köra Gtk3.4 eller senare för att detta ska fungera</em></p></note>

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

/* Återanropsfunktion vilken reagerar på ”response”-signalen från användaren i
 * meddelandedialogfönstret.
 * Denna funktion används för att förstöra dialogfönstret.
 */
static void
on_close (GtkDialog *dialog,
          gint       response_id,
          gpointer   user_data)
{
  /* Detta kommer att förorsaka att dialogen förstörs */
  gtk_widget_destroy (GTK_WIDGET (dialog));
}

/* Återanropsfunktion för svarssignalen ”activate” relaterad till SimpleAction
 * "about_action".
 * Denna funktion används för att se till att dialogfönstret visas.
 */
static void
about_cb (GSimpleAction *simple,
          GVariant      *parameter,
          gpointer       user_data)
{
  GtkWidget *about_dialog;

  about_dialog = gtk_about_dialog_new ();

  /* Listor med upphovsmän/dokumentatörer som används senare, måste
   * initieras som en null-terminerad vektor av strängar.
   */
  const gchar *authors[] = {"GNOME:s dokumentationsgrupp", NULL};
  const gchar *documenters[] = {"GNOME:s dokumentationsgrupp", NULL};

  /* Vi fyller i informationen för om-dialogen */
  gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), "AboutDialog-exempel");
  gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), "Copyright \xc2\xa9 2012 GNOME:s dokumentationsgrupp");
  gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);
  gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);
  gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), "GNOME:s utvecklarwebbplats");
  gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), "http://developer.gnome.org");

  /* Vi vill inte visa titeln, vilken i detta fall skulle varit ”AboutDialog-exempel”.
   * Vi måste återställa titeln för meddelandedialogfönstret efter att ha satt
   * programnamnet.
   */
  gtk_window_set_title (GTK_WINDOW (about_dialog), "");

  /* För att stänga om-dialogen när ”close” klickas på ansluter vi svarssignalen
   * till on_close
   */
  g_signal_connect (GTK_DIALOG (about_dialog), "response",
                    G_CALLBACK (on_close), NULL);

  /* Visa om-dialogen */
  gtk_widget_show (about_dialog);
}

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

  GSimpleAction *about_action;

  /* Skapa ett fönster med en titel och en standardstorlek */
  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "AboutDialog-exempel");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

  /* Skapa en ny åtgärd, ge den parametertypen NULL. Den kommer
   * alltid att vara NULL för åtgärder som anropas från en meny. (t.ex. genom att klicka på
   * knapparna ”ok” eller ”avbryt”)
   */
  about_action = g_simple_action_new ("about", NULL);

  /* Anslut ”activate”-signalen till en lämplig återanropsfunktion.
   * Den kommer att indikera att åtgärden nyss aktiverats.
   */
  g_signal_connect (about_action, "activate", G_CALLBACK (about_cb),
                    GTK_WINDOW (window));

  /* Lägger till about_action till den övergripande åtgärdsmappningen. En åtgärdsmappning
   * är ett gränssnitt som innehåller ett antal namngivna GAction-instanser
   * (så som about_action)
   */
  g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));

  gtk_widget_show_all (window);
}

/* Återanropsfunktion för svarssignalen ”activate” från ”quit”-åtgärden
 * hittad i funktionen strax nedanför.
 */
static void
quit_cb (GSimpleAction *simple,
         GVariant      *parameter,
         gpointer       user_data)
{
  GApplication *application = user_data;

  g_application_quit (application);
}

/* Uppstartsfunktion för menyn vi skapar i detta exempel */
static void
startup (GApplication *app,
         gpointer      user_data)
{
  GMenu *menu;
  GSimpleAction *quit_action;

  /* Initiera GMenu, och lägg till ett menyobjekt med etiketten ”Om” och åtgärden
   * ”win.about”. Lägg också till ett annat menyobjekt med etiketten ”Avsluta” och åtgärden
   * ”app.quit”
   */
  menu = g_menu_new ();
  g_menu_append (menu, "Om", "win.about");
  g_menu_append (menu, "Avsluta", "app.quit");

  /* Skapa en ny enkel åtgärd för programmet. (I detta fall är det
   * åtgärden ”quit”.
   */
  quit_action = g_simple_action_new ("quit", NULL);

  /* Säkerställ att menyn vi nyss skapat är inställd för det övergripande programmet */
  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));
}

/* Uppstartsfunktion för programmet */
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>I detta exempel använde vi följande:</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/GtkAboutDialog.html">GtkAboutDialog</link></p></item>
  <item><p><link href="http://developer.gnome.org/gio/stable/GMenu.html">GMenu</link></p></item>
  <item><p><link href="http://developer.gnome.org/gio/stable/GActionMap.html">GActionMap</link></p></item>
</list>
</page>