~ubuntu-branches/ubuntu/raring/notecase/raring

« back to all changes in this revision

Viewing changes to src/AboutDlg.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Nathan Handler
  • Date: 2008-12-21 13:09:58 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20081221130958-0ri77h0x7j1dclkq
Tags: 1.9.8-0ubuntu1
New upstream release (LP: #307752)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
////////////////////////////////////////////////////////////////////////////
2
 
// NoteCase notes manager project <http://notecase.sf.net>
3
 
//
4
 
// This code is licensed under BSD license.See "license.txt" for more details.
5
 
//
6
 
// File: Window class for About dialog
7
 
////////////////////////////////////////////////////////////////////////////
8
 
 
9
 
#include "AboutDlg.h"
10
 
#include "support.h"
11
 
#include "gui/GuiLanguage.h"
12
 
#include "ExecuteFile.h"
13
 
#include "config.h"
14
 
 
15
 
#include "../res/notecase.xpm"
16
 
 
17
 
#ifdef _WIN32
18
 
 #include <windows.h>
19
 
#endif
20
 
 
21
 
extern GtkWidget *window1;
22
 
extern GuiLanguage g_lang;
23
 
 
24
 
static gboolean on_website_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
25
 
static gboolean on_mail_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
26
 
 
27
 
AboutDlg::AboutDlg()
28
 
{
29
 
        Create();
30
 
}
31
 
 
32
 
AboutDlg::~AboutDlg()
33
 
{
34
 
        Destroy();
35
 
        gtk_window_present(GTK_WINDOW(window1)); //activate main window
36
 
}
37
 
 
38
 
void AboutDlg::Create()
39
 
{
40
 
        m_pDialog = create_dialog (window1);
41
 
 
42
 
}
43
 
 
44
 
GtkWidget* AboutDlg::create_dialog (GtkWidget* parent)
45
 
{
46
 
        GtkWidget *dialog;
47
 
        GtkWidget *label1;
48
 
        GtkWidget *label2;
49
 
        GtkWidget *label3;
50
 
        GtkWidget *evbox1;
51
 
        GtkWidget *label4;
52
 
        GtkWidget *evbox2;
53
 
        GtkWidget *table;
54
 
        GtkWidget *image1;
55
 
        GtkWidget *hbox3;
56
 
 
57
 
        dialog = gtk_dialog_new();
58
 
        gtk_window_set_title(GTK_WINDOW(dialog), _("About Notecase"));
59
 
        gtk_dialog_set_has_separator(GTK_DIALOG(dialog), false);
60
 
        gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
61
 
        gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
62
 
#ifndef _WIN32  //TOFIX API is buggy on Win32 (kills modal dialog state)
63
 
        gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), TRUE);
64
 
#endif
65
 
        gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog), TRUE);
66
 
        gtk_window_set_transient_for(GTK_WINDOW (dialog), GTK_WINDOW(window1));   //set parent
67
 
#if GTK_CHECK_VERSION(2,4,0) //new API TOFIX set proper version
68
 
        #ifndef _WIN32  //TOFIX API is buggy on Win32 (kills modal dialog state)
69
 
          //gtk_window_set_keep_above(GTK_WINDOW (dialog), TRUE);
70
 
        #endif
71
 
#endif
72
 
        //gtk_window_set_default_size (GTK_WINDOW(dialog), 340, 145); //set default window size
73
 
        gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
74
 
 
75
 
        hbox3 = gtk_hbox_new (FALSE, 0);
76
 
        gtk_widget_show (hbox3);
77
 
        //gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), hbox3);
78
 
        gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), hbox3, FALSE, TRUE, 10);
79
 
 
80
 
        image1 = gtk_image_new ();
81
 
        gtk_widget_show (image1);
82
 
        gtk_misc_set_alignment(GTK_MISC(image1), (float)0.7, (float)0.5); //alignment icon
83
 
        gtk_box_pack_start (GTK_BOX (hbox3), image1, TRUE, TRUE, 10);
84
 
 
85
 
        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&notecase_xpm);
86
 
        gtk_image_set_from_pixbuf (GTK_IMAGE(image1), pixbuf);
87
 
        g_object_unref (G_OBJECT (pixbuf));
88
 
 
89
 
        //version string
90
 
        std::string strMsg("<b>");
91
 
        strMsg += APP_NAME_STR;
92
 
        strMsg += _(" - Version ");
93
 
        strMsg += APP_VER_STR;
94
 
        strMsg += "</b>";
95
 
 
96
 
        label1 = gtk_label_new (strMsg.c_str());
97
 
        gtk_label_set_use_markup(GTK_LABEL(label1), true);
98
 
        gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
99
 
        gtk_box_pack_start (GTK_BOX (hbox3), label1, TRUE, TRUE, 10);
100
 
 
101
 
        table = gtk_table_new(2, 2, true);
102
 
        gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), table);
103
 
 
104
 
        //link to the web site
105
 
        std::string strMessage;
106
 
        strMessage += _("Website:");
107
 
        strMessage += " <span foreground=\"blue\"underline=\"single\">http://notecase.sourceforge.net</span>";
108
 
 
109
 
        label2 = gtk_label_new (strMessage.c_str());
110
 
        gtk_label_set_use_markup(GTK_LABEL(label2), true);
111
 
        gtk_misc_set_alignment(GTK_MISC(label2), 0.5, 0.5);
112
 
 
113
 
        //put in eventbox to handle click
114
 
        evbox1 = gtk_event_box_new();
115
 
        gtk_event_box_set_above_child (GTK_EVENT_BOX(evbox1), true);
116
 
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(evbox1), false);
117
 
        gtk_container_add(GTK_CONTAINER(evbox1), label2);
118
 
        gtk_table_attach(GTK_TABLE(table), evbox1, 0, 2, 0, 1, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), (GtkAttachOptions)0, 0, 1);
119
 
 
120
 
        //mail address link
121
 
        strMessage  = _("Report bugs to:");
122
 
        strMessage += " <span foreground=\"blue\"underline=\"single\">miroslav.rajcic@inet.hr</span>";
123
 
 
124
 
        label4 = gtk_label_new (strMessage.c_str());
125
 
        gtk_label_set_use_markup(GTK_LABEL(label4), true);
126
 
        gtk_misc_set_alignment(GTK_MISC(label4), 0.5, 0.5);
127
 
 
128
 
        //put in eventbox to handle click
129
 
        evbox2 = gtk_event_box_new();
130
 
        gtk_event_box_set_above_child (GTK_EVENT_BOX(evbox2), true);
131
 
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(evbox2), false);
132
 
        gtk_container_add(GTK_CONTAINER(evbox2), label4);
133
 
        gtk_table_attach(GTK_TABLE(table), evbox2, 0, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), (GtkAttachOptions)0, 0, 1);
134
 
 
135
 
        //locale info
136
 
        strMsg = _("Locale: ");
137
 
        strMsg += "<span foreground=\"blue\">";
138
 
        strMsg += g_lang.GetLocale();
139
 
        strMsg += "</span>";
140
 
 
141
 
        label3 = gtk_label_new (strMsg.c_str());
142
 
        gtk_label_set_use_markup(GTK_LABEL(label3), true);
143
 
        gtk_misc_set_alignment(GTK_MISC(label3), 0.5, 0.5);
144
 
        gtk_table_attach(GTK_TABLE(table), label3, 0, 2, 2, 3, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), (GtkAttachOptions)0, 0, 1);
145
 
 
146
 
#ifdef _NOKIA_MAEMO
147
 
        GtkWidget *dialog_action_area6 = GTK_DIALOG (dialog)->action_area;
148
 
        gtk_widget_show (dialog_action_area6);
149
 
        gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area6), GTK_BUTTONBOX_END);
150
 
 
151
 
        GtkWidget *cancelbutton9 = gtk_button_new_with_mnemonic (_("Close"));
152
 
        gtk_widget_show (cancelbutton9);
153
 
        gtk_dialog_add_action_widget (GTK_DIALOG (dialog), cancelbutton9, GTK_RESPONSE_CANCEL);
154
 
        GTK_WIDGET_SET_FLAGS (cancelbutton9, GTK_CAN_DEFAULT);
155
 
#endif
156
 
 
157
 
        g_signal_connect(evbox1, "button-press-event",  G_CALLBACK (on_website_link_clicked), this);
158
 
        g_signal_connect(evbox2, "button-press-event",  G_CALLBACK (on_mail_link_clicked), this);
159
 
 
160
 
 
161
 
        gtk_widget_show_all (dialog);
162
 
        return dialog;
163
 
}
164
 
 
165
 
gboolean  on_website_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
166
 
{
167
 
#ifdef _WIN32
168
 
        ShellExecute(NULL, "open", "http://notecase.sourceforge.net", "", "", SW_SHOW);
169
 
#else
170
 
        ExecuteFile("http://notecase.sourceforge.net", "", "", NULL);
171
 
#endif
172
 
 
173
 
        return true;
174
 
}
175
 
 
176
 
gboolean on_mail_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
177
 
{
178
 
#ifdef _WIN32
179
 
        ShellExecute(NULL, "open", "mailto:miroslav.rajcic@inet.hr", "", "", SW_SHOW);
180
 
#else
181
 
        ExecuteFile("mailto:miroslav.rajcic@inet.hr", "", "", NULL);
182
 
#endif
183
 
 
184
 
        return true;
185
 
}
 
1
////////////////////////////////////////////////////////////////////////////
 
2
// NoteCase notes manager project <http://notecase.sf.net>
 
3
//
 
4
// This code is licensed under BSD license.See "license.txt" for more details.
 
5
//
 
6
// File: Window class for About dialog
 
7
////////////////////////////////////////////////////////////////////////////
 
8
 
 
9
#include "AboutDlg.h"
 
10
#include "support.h"
 
11
#include "gui/GuiLanguage.h"
 
12
#include "ExecuteFile.h"
 
13
#include "config.h"
 
14
 
 
15
#include "../res/notecase.xpm"
 
16
 
 
17
#ifdef _WIN32
 
18
 #include <windows.h>
 
19
#endif
 
20
 
 
21
extern GtkWidget *window1;
 
22
extern GuiLanguage g_lang;
 
23
 
 
24
static gboolean on_website_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
 
25
static gboolean on_mail_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
 
26
 
 
27
AboutDlg::AboutDlg()
 
28
{
 
29
        Create();
 
30
}
 
31
 
 
32
AboutDlg::~AboutDlg()
 
33
{
 
34
        Destroy();
 
35
        gtk_window_present(GTK_WINDOW(window1)); //activate main window
 
36
}
 
37
 
 
38
void AboutDlg::Create()
 
39
{
 
40
        m_pDialog = create_dialog (window1);
 
41
 
 
42
}
 
43
 
 
44
GtkWidget* AboutDlg::create_dialog (GtkWidget* parent)
 
45
{
 
46
        GtkWidget *dialog;
 
47
        GtkWidget *label1;
 
48
        GtkWidget *label2;
 
49
        GtkWidget *label3;
 
50
        GtkWidget *evbox1;
 
51
        GtkWidget *label4;
 
52
        GtkWidget *evbox2;
 
53
        GtkWidget *table;
 
54
        GtkWidget *image1;
 
55
        GtkWidget *hbox3;
 
56
 
 
57
        dialog = gtk_dialog_new();
 
58
        gtk_window_set_title(GTK_WINDOW(dialog), _("About Notecase"));
 
59
        gtk_dialog_set_has_separator(GTK_DIALOG(dialog), false);
 
60
        gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
 
61
        gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
 
62
#ifndef _WIN32  //TOFIX API is buggy on Win32 (kills modal dialog state)
 
63
        gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), TRUE);
 
64
#endif
 
65
        gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog), TRUE);
 
66
        gtk_window_set_transient_for(GTK_WINDOW (dialog), GTK_WINDOW(window1));   //set parent
 
67
#if GTK_CHECK_VERSION(2,4,0) //new API TOFIX set proper version
 
68
        #ifndef _WIN32  //TOFIX API is buggy on Win32 (kills modal dialog state)
 
69
          //gtk_window_set_keep_above(GTK_WINDOW (dialog), TRUE);
 
70
        #endif
 
71
#endif
 
72
        //gtk_window_set_default_size (GTK_WINDOW(dialog), 340, 145); //set default window size
 
73
        gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
 
74
 
 
75
        hbox3 = gtk_hbox_new (FALSE, 0);
 
76
        gtk_widget_show (hbox3);
 
77
        //gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), hbox3);
 
78
        gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), hbox3, FALSE, TRUE, 10);
 
79
 
 
80
        image1 = gtk_image_new ();
 
81
        gtk_widget_show (image1);
 
82
        gtk_misc_set_alignment(GTK_MISC(image1), (float)0.7, (float)0.5); //alignment icon
 
83
        gtk_box_pack_start (GTK_BOX (hbox3), image1, TRUE, TRUE, 10);
 
84
 
 
85
        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&notecase_xpm);
 
86
        gtk_image_set_from_pixbuf (GTK_IMAGE(image1), pixbuf);
 
87
        g_object_unref (G_OBJECT (pixbuf));
 
88
 
 
89
        //version string
 
90
        std::string strMsg("<b>");
 
91
        strMsg += APP_NAME_STR;
 
92
        strMsg += _(" - Version ");
 
93
        strMsg += APP_VER_STR;
 
94
        strMsg += "</b>";
 
95
 
 
96
        label1 = gtk_label_new (strMsg.c_str());
 
97
        gtk_label_set_use_markup(GTK_LABEL(label1), true);
 
98
        gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
 
99
        gtk_box_pack_start (GTK_BOX (hbox3), label1, TRUE, TRUE, 10);
 
100
 
 
101
        table = gtk_table_new(2, 2, true);
 
102
        gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), table);
 
103
 
 
104
        //link to the web site
 
105
        std::string strMessage;
 
106
        strMessage += _("Website:");
 
107
        strMessage += " <span foreground=\"blue\"underline=\"single\">http://notecase.sourceforge.net</span>";
 
108
 
 
109
        label2 = gtk_label_new (strMessage.c_str());
 
110
        gtk_label_set_use_markup(GTK_LABEL(label2), true);
 
111
        gtk_misc_set_alignment(GTK_MISC(label2), 0.5, 0.5);
 
112
 
 
113
        //put in eventbox to handle click
 
114
        evbox1 = gtk_event_box_new();
 
115
        gtk_event_box_set_above_child (GTK_EVENT_BOX(evbox1), true);
 
116
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(evbox1), false);
 
117
        gtk_container_add(GTK_CONTAINER(evbox1), label2);
 
118
        gtk_table_attach(GTK_TABLE(table), evbox1, 0, 2, 0, 1, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), (GtkAttachOptions)0, 0, 1);
 
119
 
 
120
        //mail address link
 
121
        strMessage  = _("Report bugs to:");
 
122
        strMessage += " <span foreground=\"blue\"underline=\"single\">miroslav.rajcic@inet.hr</span>";
 
123
 
 
124
        label4 = gtk_label_new (strMessage.c_str());
 
125
        gtk_label_set_use_markup(GTK_LABEL(label4), true);
 
126
        gtk_misc_set_alignment(GTK_MISC(label4), 0.5, 0.5);
 
127
 
 
128
        //put in eventbox to handle click
 
129
        evbox2 = gtk_event_box_new();
 
130
        gtk_event_box_set_above_child (GTK_EVENT_BOX(evbox2), true);
 
131
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(evbox2), false);
 
132
        gtk_container_add(GTK_CONTAINER(evbox2), label4);
 
133
        gtk_table_attach(GTK_TABLE(table), evbox2, 0, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), (GtkAttachOptions)0, 0, 1);
 
134
 
 
135
        //locale info
 
136
        strMsg = _("Locale: ");
 
137
        strMsg += "<span foreground=\"blue\">";
 
138
        strMsg += g_lang.GetLocale();
 
139
        strMsg += "</span>";
 
140
 
 
141
        label3 = gtk_label_new (strMsg.c_str());
 
142
        gtk_label_set_use_markup(GTK_LABEL(label3), true);
 
143
        gtk_misc_set_alignment(GTK_MISC(label3), 0.5, 0.5);
 
144
        gtk_table_attach(GTK_TABLE(table), label3, 0, 2, 2, 3, (GtkAttachOptions)(GTK_EXPAND|GTK_SHRINK|GTK_FILL), (GtkAttachOptions)0, 0, 1);
 
145
 
 
146
#ifdef _NOKIA_MAEMO
 
147
        GtkWidget *dialog_action_area6 = GTK_DIALOG (dialog)->action_area;
 
148
        gtk_widget_show (dialog_action_area6);
 
149
        gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area6), GTK_BUTTONBOX_END);
 
150
 
 
151
        GtkWidget *cancelbutton9 = gtk_button_new_with_mnemonic (_("Close"));
 
152
        gtk_widget_show (cancelbutton9);
 
153
        gtk_dialog_add_action_widget (GTK_DIALOG (dialog), cancelbutton9, GTK_RESPONSE_CANCEL);
 
154
        GTK_WIDGET_SET_FLAGS (cancelbutton9, GTK_CAN_DEFAULT);
 
155
#endif
 
156
 
 
157
        g_signal_connect(evbox1, "button-press-event",  G_CALLBACK (on_website_link_clicked), this);
 
158
        g_signal_connect(evbox2, "button-press-event",  G_CALLBACK (on_mail_link_clicked), this);
 
159
 
 
160
 
 
161
        gtk_widget_show_all (dialog);
 
162
        return dialog;
 
163
}
 
164
 
 
165
gboolean  on_website_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
166
{
 
167
#ifdef _WIN32
 
168
        ShellExecute(NULL, "open", "http://notecase.sourceforge.net", "", "", SW_SHOW);
 
169
#else
 
170
        ExecuteFile("http://notecase.sourceforge.net", "", "", NULL);
 
171
#endif
 
172
 
 
173
        return true;
 
174
}
 
175
 
 
176
gboolean on_mail_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
177
{
 
178
#ifdef _WIN32
 
179
        ShellExecute(NULL, "open", "mailto:miroslav.rajcic@inet.hr", "", "", SW_SHOW);
 
180
#else
 
181
        ExecuteFile("mailto:miroslav.rajcic@inet.hr", "", "", NULL);
 
182
#endif
 
183
 
 
184
        return true;
 
185
}