~ubuntu-branches/ubuntu/raring/geany/raring-proposed

« back to all changes in this revision

Viewing changes to src/about.c

  • Committer: Bazaar Package Importer
  • Author(s): Damián Viano
  • Date: 2008-05-02 11:37:45 UTC
  • mfrom: (1.2.1 upstream) (9 hardy)
  • mto: (3.2.1 squeeze)
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: james.westby@ubuntu.com-20080502113745-xzp4g6dmovrpoj17
Tags: 0.14-1
New upstream release (Closes: #478126)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 *      about.c - this file is part of Geany, a fast and lightweight IDE
3
3
 *
4
 
 *      Copyright 2006 Enrico Troeger <enrico.troeger@uvena.de>
 
4
 *      Copyright 2005-2008 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
 
5
 *      Copyright 2006-2008 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
5
6
 *
6
7
 *      This program is free software; you can redistribute it and/or modify
7
8
 *      it under the terms of the GNU General Public License as published by
17
18
 *      along with this program; if not, write to the Free Software
18
19
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
20
 *
20
 
 * $Id: about.c 834 2006-09-26 14:00:30Z kretek $
 
21
 * $Id: about.c 2498 2008-04-18 11:37:37Z frlan $
 
22
 */
 
23
 
 
24
/*
 
25
 * About dialog and credits.
21
26
 */
22
27
 
23
28
#include "about.h"
34
39
#define INFO "<span size=\"larger\" weight=\"bold\">%s</span>"
35
40
#define CODENAME "<span weight=\"bold\">\"" GEANY_CODENAME "\"</span>"
36
41
#define BUILDDATE "<span size=\"smaller\">%s</span>"
37
 
#define COPYRIGHT "Copyright (c)  2005-2006 \n Enrico Tröger \nAll rights reserved."
38
 
#define CREDITS \
39
 
"<span size=\"larger\" weight=\"bold\">%s</span>\n\t\
40
 
Enrico Tröger - %s\n\t\
41
 
&lt;enrico.troeger@uvena.de&gt;\n\n\t\
42
 
Nick Treleaven - %s\n\t\
43
 
&lt;nick.treleaven@btinternet.com&gt;\n\n\t\
44
 
Frank Lanitz - %s\n\t\
45
 
&lt;frank@frank.uvena.de&gt;\n\n\t\
46
 
\n<span size=\"larger\" weight=\"bold\">%s</span>\n\t\
47
 
\
48
 
Yura Semashko - <language> be_BY\n\t\
49
 
&lt;yurand2@gmail.com&gt;\n\n\t\
50
 
Topi - <language> ca_ES\n\t\
51
 
&lt;topi@phreaker.net&gt;\n\n\t\
52
 
Petr Messner - <language> cs_CZ \n\t\
53
 
&lt;messa@messa.cz&gt;\n\n\t\
54
 
Frank Lanitz - <language> de_DE\n\t\
55
 
&lt;frank@frank.uvena.de&gt;\n\n\t\
56
 
Damián Viano - <language> es\n\t\
57
 
&lt;debian@damianv.com.ar&gt;\n\n\t\
58
 
Kurt De Bree - <language> nl\n\t\
59
 
&lt;kdebree@telenet.be&gt;\n\n\t\
60
 
Jacek Wolszczak - <language> pl_PL\n\t\
61
 
&lt;shutdownrunner@o2.pl&gt;\n\n\t\
62
 
Alexandre Moreira - <language> pt_BR\n\t\
63
 
&lt;alexandream@gmail.com&gt;\n\n\t\
64
 
brahmann_ - <language> ru_RU\n\t\
65
 
&lt;brahmann@mthr.net.ru&gt;\n\n\t\
66
 
Clytie Siddall - <language> vi_VN\n\t\
67
 
&lt;clytie@riverland.net.au&gt;"
 
42
#define COPYRIGHT "Copyright (c)  2005-2008\nEnrico Tröger\nNick Treleaven\nFrank Lanitz\nAll rights reserved."
 
43
 
 
44
const gchar *translators[][2] = {
 
45
        { "be_BY", "Yura Semashko &lt;yurand2@gmail.com&gt;" },
 
46
        { "bg", "Dilyan Rusev &lt;dilyanrusev@gmail.com&gt;" },
 
47
        { "ca_ES", "Toni Garcia-Navarro &lt;topi@elpiset.net&gt;" },
 
48
        { "cs_CZ", "Petr Messner &lt;messa@messa.cz&gt;" },
 
49
        { "de_DE", "Enrico Tröger &lt;enrico.troeger@uvena.de&gt;\nFrank Lanitz &lt;frank@frank.uvena.de&gt;" },
 
50
        { "el", "Stavros Temertzidis &lt;bullgr@gmail.com&gt;" },
 
51
        { "en_GB", "Jeff Bailes &lt;thepizzaking@gmail.com&gt;" },
 
52
        { "es", "Damián Viano &lt;debian@damianv.com.ar&gt;\nNacho Cabanes &lt;ncabanes@gmail.com&gt;" },
 
53
        { "fi_FI", "Harri Koskinen &lt;harri@fastmonkey.org&gt;" },
 
54
        { "fr", "Jean-Philippe Moal &lt;skateinmars@skateinmars.net&gt;" },
 
55
        { "hu", "Gabor Kmetyko &lt;kg_kilo@freemail.hu&gt;" },
 
56
        { "it", "Max Baldinelli &lt;m.baldinelli@agora.it&gt;,\nDario Santomarco &lt;dariello@yahoo.it&gt;" },
 
57
        { "ja", "Tarot Osuji &lt;tarot@sdf.lonestar.org&gt;\nChikahiro Masami &lt;cmasa.z321@gmail.com&gt;" },
 
58
        { "nl", "Kurt De Bree &lt;kdebree@telenet.be&gt;" },
 
59
        { "pl_PL", "Jarosław Foksa &lt;jfoksa@gmail.com&gt;" },
 
60
        { "pt_BR", "Alexandra Moreire &lt;alexandream@gmail.com&gt;\nAdrovane Marques Kade &lt;adrovane@gmail.com&gt;" },
 
61
        { "ro", "Alex Eftimie &lt;alex@rosedu.org&gt;" },
 
62
        { "ru_RU", "brahmann_ &lt;brahmann@pisem.net&gt;,\nNikita E. Shalaev &lt;nshalaev@eu.spb.ru&gt;" },
 
63
        { "sv", "Tony Mattsson &lt;superxorn@gmail.com&gt;" },
 
64
        { "uk", "Boris Dibrov &lt;dibrov.bor@gmail.com&gt;" },
 
65
        { "vi_VN", "Clytie Siddall &lt;clytie@riverland.net.au&gt;" },
 
66
        { "zh_CN", "Dormouse Young &lt;dormouse.young@gmail.com&gt;" },
 
67
        { "zh_TW", "KoViCH &lt;kovich.ian@gmail.com&gt;" }
 
68
};
 
69
static const gint translators_len = G_N_ELEMENTS(translators);
 
70
 
 
71
const gchar *prev_translators[][2] = {
 
72
        { "pl_PL", "Jacek Wolszczak &lt;shutdownrunner@o2.pl&gt;" },
 
73
};
 
74
static const gint prev_translators_len = G_N_ELEMENTS(prev_translators);
 
75
 
68
76
 
69
77
static void header_eventbox_style_set(GtkWidget *widget);
70
78
static void header_label_style_set(GtkWidget *widget);
71
79
static void homepage_clicked(GtkButton *button, gpointer data);
72
80
 
73
81
 
 
82
#define ROW(text, row, col, x_align, y_padding, col_span) \
 
83
        label = gtk_label_new((text)); \
 
84
        gtk_table_attach(GTK_TABLE(table), label, (col), (col) + (col_span) + 1, (row), (row) + 1, \
 
85
                        (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, (y_padding)); \
 
86
        gtk_label_set_use_markup(GTK_LABEL(label), TRUE); \
 
87
        gtk_misc_set_alignment(GTK_MISC(label), (x_align), 0);
 
88
 
 
89
 
74
90
static GtkWidget *create_dialog(void)
75
91
{
76
92
        GtkWidget *dialog;
82
98
        GtkWidget *url_button;
83
99
        GtkWidget *cop_label;
84
100
        GtkWidget *label;
85
 
        GtkWidget *credits_label;
86
101
        GtkWidget *license_textview;
87
102
        GtkWidget *notebook;
88
103
        GtkWidget *box;
89
104
        GtkWidget *credits_scrollwin;
 
105
        GtkWidget *table;
90
106
        GtkWidget *license_scrollwin;
91
107
        GtkWidget *info_box;
92
108
        GtkWidget *button;
97
113
        gchar *license_text = NULL;
98
114
        gchar buffer[512];
99
115
        gchar buffer2[128];
100
 
        gchar *credits;
 
116
        gint i, row = 0;
101
117
 
102
118
        dialog = gtk_dialog_new();
103
119
 
104
 
        //configure dialog
105
 
        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
 
120
        /* configure dialog */
106
121
        gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(app->window));
107
122
        gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT);
108
123
        gtk_window_set_title(GTK_WINDOW(dialog), _("About Geany"));
 
124
        gtk_widget_set_name(dialog, "GeanyDialog");
109
125
        button = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
 
126
        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
110
127
        gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
111
128
        g_signal_connect(G_OBJECT(dialog), "key-press-event", G_CALLBACK(gb_on_key_pressed), NULL);
112
129
 
113
 
        // create header
 
130
        /* create header */
114
131
        header_eventbox = gtk_event_box_new();
115
132
        gtk_widget_show(header_eventbox);
116
133
        header_hbox = gtk_hbox_new(FALSE, 12);
121
138
        gtk_box_pack_start(GTK_BOX(header_hbox), header_image, FALSE,FALSE,0);
122
139
        header_label = gtk_label_new(NULL);
123
140
        gtk_label_set_use_markup(GTK_LABEL(header_label), TRUE);
124
 
        // print the subversion revision if it is available
125
 
        g_snprintf(buffer, sizeof(buffer), HEADER, (utils_strcmp(REVISION, "-1")) ? "" : " (" REVISION ")");
 
141
        /* print the subversion revision generated by ./configure if it is available */
 
142
        g_snprintf(buffer, sizeof(buffer), HEADER,
 
143
                (utils_str_equal(REVISION, "-1")) ? "" : "svn >= " REVISION);
126
144
        gtk_label_set_markup(GTK_LABEL(header_label), buffer);
127
145
        gtk_widget_show(header_label);
128
146
        gtk_box_pack_start(GTK_BOX(header_hbox), header_label, FALSE,FALSE,0);
132
150
        g_signal_connect_after(G_OBJECT(header_label), "style_set", G_CALLBACK(header_label_style_set), NULL);
133
151
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), header_eventbox, FALSE, FALSE, 0);
134
152
 
135
 
        // set image
 
153
        /* set image */
136
154
        icon = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO, FALSE);
137
155
        gtk_image_set_from_pixbuf(GTK_IMAGE(header_image), icon);
138
156
        gtk_window_set_icon(GTK_WINDOW(dialog), icon);
 
157
        g_object_unref(icon);   /* free our reference */
139
158
 
140
 
        // create notebook
 
159
        /* create notebook */
141
160
        notebook = gtk_notebook_new();
142
161
        gtk_widget_show(notebook);
143
162
        gtk_container_set_border_width(GTK_CONTAINER(notebook), 2);
144
163
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook, TRUE, TRUE, 0);
145
164
 
146
 
        // create "Info" tab
 
165
        /* create "Info" tab */
147
166
        info_box = gtk_vbox_new(FALSE, 0);
148
 
        //gtk_container_set_border_width(GTK_CONTAINER(info_box), 6);
 
167
        gtk_container_set_border_width(GTK_CONTAINER(info_box), 6);
149
168
        gtk_widget_show(info_box);
150
169
 
151
170
        label_info = gtk_label_new(NULL);
158
177
        gtk_widget_show(label_info);
159
178
        gtk_box_pack_start(GTK_BOX(info_box), label_info, FALSE, FALSE, 0);
160
179
 
161
 
        // Codename label
 
180
        /* Codename label */
162
181
        codename_label = gtk_label_new(NULL);
163
182
        gtk_label_set_justify(GTK_LABEL(codename_label), GTK_JUSTIFY_CENTER);
164
183
        gtk_label_set_selectable(GTK_LABEL(codename_label), TRUE);
168
187
        gtk_widget_show(codename_label);
169
188
        gtk_box_pack_start(GTK_BOX(info_box), codename_label, FALSE, FALSE, 0);
170
189
 
171
 
        // build date label
 
190
        /* build date label */
172
191
        builddate_label = gtk_label_new(NULL);
173
192
        gtk_label_set_justify(GTK_LABEL(builddate_label), GTK_JUSTIFY_CENTER);
174
193
        gtk_label_set_selectable(GTK_LABEL(builddate_label), TRUE);
175
194
        gtk_label_set_use_markup(GTK_LABEL(builddate_label), TRUE);
176
 
        g_snprintf(buffer2, sizeof(buffer2), _("(built on %s)"), __DATE__);
 
195
        g_snprintf(buffer2, sizeof(buffer2), _("(built on or after %s)"), __DATE__);
177
196
        g_snprintf(buffer, sizeof(buffer), BUILDDATE, buffer2);
178
197
        gtk_label_set_markup(GTK_LABEL(builddate_label), buffer);
179
198
        gtk_misc_set_padding(GTK_MISC(builddate_label), 2, 2);
193
212
        gtk_widget_show(box);
194
213
        gtk_box_pack_start(GTK_BOX(info_box), box, FALSE, FALSE, 10);
195
214
 
196
 
        // copyright label
 
215
        /* copyright label */
197
216
        cop_label = gtk_label_new(NULL);
198
217
        gtk_label_set_justify(GTK_LABEL(cop_label), GTK_JUSTIFY_CENTER);
199
218
        gtk_label_set_selectable(GTK_LABEL(cop_label), FALSE);
202
221
        gtk_misc_set_padding(GTK_MISC(cop_label), 2, 10);
203
222
        gtk_widget_show(cop_label);
204
223
        gtk_box_pack_start(GTK_BOX(info_box), cop_label, FALSE, FALSE, 0);
205
 
        //gtk_container_add(GTK_CONTAINER(info_box), cop_label);
 
224
        /*gtk_container_add(GTK_CONTAINER(info_box), cop_label); */
206
225
 
207
226
        label = gtk_label_new(_("Info"));
208
227
        gtk_widget_show(label);
209
228
        gtk_widget_show_all(info_box);
210
229
        gtk_notebook_append_page(GTK_NOTEBOOK(notebook), info_box, label);
211
230
 
212
 
        // create "Credits" tab
 
231
        /* create "Credits" tab */
213
232
        credits_scrollwin = gtk_scrolled_window_new(NULL, NULL);
214
 
        gtk_container_set_border_width(GTK_CONTAINER(credits_scrollwin), 6);
215
 
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(credits_scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
216
 
        credits_label = gtk_label_new(NULL);
217
 
        gtk_label_set_selectable(GTK_LABEL(credits_label), TRUE);
218
 
        gtk_label_set_use_markup(GTK_LABEL(credits_label), TRUE);
219
 
        credits = g_strdup_printf(CREDITS, _("Developers"), _("Maintainer"), _("developer"),
220
 
                                                         _("translation maintainer"), _("Translators"));
221
 
        credits = utils_str_replace(credits, "<language>", _("language"));
222
 
        gtk_label_set_markup(GTK_LABEL(credits_label), credits);
223
 
        gtk_misc_set_alignment(GTK_MISC(credits_label), 0.0, 0.0);
224
 
        gtk_widget_show(credits_label);
225
 
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(credits_scrollwin), credits_label);
226
 
        gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_widget_get_parent(credits_label)), GTK_SHADOW_NONE);
 
233
        gtk_container_set_border_width(GTK_CONTAINER(credits_scrollwin), 10);
 
234
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(credits_scrollwin),
 
235
                GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 
236
 
 
237
        table = gtk_table_new(14 + translators_len + prev_translators_len, 3, FALSE);
 
238
        gtk_table_set_col_spacings(GTK_TABLE(table), 10);
 
239
 
 
240
        row = 0;
 
241
        g_snprintf(buffer, sizeof(buffer),
 
242
                "<span size=\"larger\" weight=\"bold\">%s</span>", _("Developers"));
 
243
        label = gtk_label_new(buffer);
 
244
        gtk_table_attach(GTK_TABLE(table), label, 0, 2, row, row + 1,
 
245
                                        (GtkAttachOptions) (GTK_FILL),
 
246
                                        (GtkAttachOptions) (0), 0, 5);
 
247
        gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
 
248
        gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
 
249
        row++;
 
250
 
 
251
        g_snprintf(buffer, sizeof(buffer), "Enrico Tröger - %s", _("maintainer"));
 
252
        ROW(buffer, row, 0, 0, 0, 1);
 
253
        row++;
 
254
        ROW("&lt;enrico.troeger@uvena.de&gt;", row, 0, 0, 0, 1);
 
255
        row++;
 
256
        ROW("", row, 0, 0, 0, 0);
 
257
        row++;
 
258
 
 
259
        g_snprintf(buffer, sizeof(buffer), "Nick Treleaven - %s", _("developer"));
 
260
        ROW(buffer, row, 0, 0, 0, 1);
 
261
        row++;
 
262
        ROW("&lt;nick.treleaven@btinternet.com&gt;", row, 0, 0, 0, 1);
 
263
        row++;
 
264
        ROW("", row, 0, 0, 0, 0);
 
265
        row++;
 
266
 
 
267
        g_snprintf(buffer, sizeof(buffer), "Frank Lanitz - %s", _("translation maintainer"));
 
268
        ROW(buffer, 7, 0, 0, 0, 1);
 
269
        row++;
 
270
        ROW("&lt;frank@frank.uvena.de&gt;", row, 0, 0, 0, 1);
 
271
        row++;
 
272
        ROW("", row, 0, 0, 0, 0);
 
273
        row++;
 
274
 
 
275
        g_snprintf(buffer, sizeof(buffer),
 
276
                "<span size=\"larger\" weight=\"bold\">%s</span>", _("Translators"));
 
277
        label = gtk_label_new(buffer);
 
278
        gtk_table_attach(GTK_TABLE(table), label, 0, 2, row, row + 1,
 
279
                                        (GtkAttachOptions) (GTK_FILL),
 
280
                                        (GtkAttachOptions) (0), 0, 5);
 
281
        gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
 
282
        gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 
283
        row++;
 
284
 
 
285
        for (i = 0; i < translators_len; i++)
 
286
        {
 
287
                ROW(translators[i][0], row, 0, 1, 4, 0);
 
288
                ROW(translators[i][1], row, 1, 0, 4, 0);
 
289
                row++;
 
290
        }
 
291
 
 
292
        ROW("", row, 0, 0, 0, 0);
 
293
        row++;
 
294
 
 
295
        g_snprintf(buffer, sizeof(buffer),
 
296
                "<span size=\"larger\" weight=\"bold\">%s</span>", _("Previous Translators"));
 
297
        label = gtk_label_new(buffer);
 
298
        gtk_table_attach(GTK_TABLE(table), label, 0, 2, row, row + 1,
 
299
                                        (GtkAttachOptions) (GTK_FILL),
 
300
                                        (GtkAttachOptions) (0), 0, 5);
 
301
        gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
 
302
        gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 
303
        row++;
 
304
 
 
305
        for (i = 0; i < prev_translators_len; i++)
 
306
        {
 
307
                ROW(prev_translators[i][0], row, 0, 1, 4, 0);
 
308
                ROW(prev_translators[i][1], row, 1, 0, 4, 0);
 
309
                row++;
 
310
        }
 
311
 
 
312
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(credits_scrollwin), table);
 
313
        gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_widget_get_parent(table)), GTK_SHADOW_NONE);
 
314
        gtk_widget_show_all(table);
227
315
        label = gtk_label_new(_("Credits"));
228
316
        gtk_widget_show(label);
229
317
        gtk_notebook_append_page(GTK_NOTEBOOK(notebook), credits_scrollwin, label);
230
318
 
231
 
        // create "License" tab
 
319
        /* create "License" tab */
232
320
        license_scrollwin = gtk_scrolled_window_new(NULL, NULL);
233
321
        gtk_container_set_border_width(GTK_CONTAINER(license_scrollwin), 6);
234
 
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(license_scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
322
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(license_scrollwin),
 
323
                GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
235
324
        license_textview = gtk_text_view_new();
236
325
        gtk_text_view_set_editable(GTK_TEXT_VIEW(license_textview), FALSE);
237
326
        gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(license_textview), FALSE);
245
334
        g_file_get_contents(buffer, &license_text, NULL, NULL);
246
335
        if (license_text == NULL)
247
336
        {
248
 
                license_text = g_strdup("License text could not be found, please google for GPLv2");
 
337
                license_text = g_strdup(
 
338
                        _("License text could not be found, please visit http://www.gnu.org/licenses/gpl-2.0.txt to view it online."));
249
339
        }
250
340
        tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(license_textview));
251
341
        gtk_text_buffer_set_text(tb, license_text, strlen(license_text));
252
342
 
253
 
        g_free(credits);
254
343
        g_free(license_text);
255
344
 
256
345
        gtk_notebook_append_page(GTK_NOTEBOOK(notebook), license_scrollwin, label);