1
////////////////////////////////////////////////////////////////////////////
2
// NoteCase notes manager project <http://notecase.sf.net>
4
// This code is licensed under BSD license.See "license.txt" for more details.
6
// File: Window class for About dialog
7
////////////////////////////////////////////////////////////////////////////
11
#include "gui/GuiLanguage.h"
12
#include "ExecuteFile.h"
15
#include "../res/notecase.xpm"
21
extern GtkWidget *window1;
22
extern GuiLanguage g_lang;
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);
35
gtk_window_present(GTK_WINDOW(window1)); //activate main window
38
void AboutDlg::Create()
40
m_pDialog = create_dialog (window1);
44
GtkWidget* AboutDlg::create_dialog (GtkWidget* parent)
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);
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);
72
//gtk_window_set_default_size (GTK_WINDOW(dialog), 340, 145); //set default window size
73
gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
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);
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);
85
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)¬ecase_xpm);
86
gtk_image_set_from_pixbuf (GTK_IMAGE(image1), pixbuf);
87
g_object_unref (G_OBJECT (pixbuf));
90
std::string strMsg("<b>");
91
strMsg += APP_NAME_STR;
92
strMsg += _(" - Version ");
93
strMsg += APP_VER_STR;
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);
101
table = gtk_table_new(2, 2, true);
102
gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), table);
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>";
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);
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);
121
strMessage = _("Report bugs to:");
122
strMessage += " <span foreground=\"blue\"underline=\"single\">miroslav.rajcic@inet.hr</span>";
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);
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);
136
strMsg = _("Locale: ");
137
strMsg += "<span foreground=\"blue\">";
138
strMsg += g_lang.GetLocale();
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);
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);
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);
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);
161
gtk_widget_show_all (dialog);
165
gboolean on_website_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
168
ShellExecute(NULL, "open", "http://notecase.sourceforge.net", "", "", SW_SHOW);
170
ExecuteFile("http://notecase.sourceforge.net", "", "", NULL);
176
gboolean on_mail_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
179
ShellExecute(NULL, "open", "mailto:miroslav.rajcic@inet.hr", "", "", SW_SHOW);
181
ExecuteFile("mailto:miroslav.rajcic@inet.hr", "", "", NULL);
1
////////////////////////////////////////////////////////////////////////////
2
// NoteCase notes manager project <http://notecase.sf.net>
4
// This code is licensed under BSD license.See "license.txt" for more details.
6
// File: Window class for About dialog
7
////////////////////////////////////////////////////////////////////////////
11
#include "gui/GuiLanguage.h"
12
#include "ExecuteFile.h"
15
#include "../res/notecase.xpm"
21
extern GtkWidget *window1;
22
extern GuiLanguage g_lang;
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);
35
gtk_window_present(GTK_WINDOW(window1)); //activate main window
38
void AboutDlg::Create()
40
m_pDialog = create_dialog (window1);
44
GtkWidget* AboutDlg::create_dialog (GtkWidget* parent)
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);
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);
72
//gtk_window_set_default_size (GTK_WINDOW(dialog), 340, 145); //set default window size
73
gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
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);
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);
85
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)¬ecase_xpm);
86
gtk_image_set_from_pixbuf (GTK_IMAGE(image1), pixbuf);
87
g_object_unref (G_OBJECT (pixbuf));
90
std::string strMsg("<b>");
91
strMsg += APP_NAME_STR;
92
strMsg += _(" - Version ");
93
strMsg += APP_VER_STR;
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);
101
table = gtk_table_new(2, 2, true);
102
gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), table);
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>";
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);
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);
121
strMessage = _("Report bugs to:");
122
strMessage += " <span foreground=\"blue\"underline=\"single\">miroslav.rajcic@inet.hr</span>";
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);
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);
136
strMsg = _("Locale: ");
137
strMsg += "<span foreground=\"blue\">";
138
strMsg += g_lang.GetLocale();
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);
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);
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);
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);
161
gtk_widget_show_all (dialog);
165
gboolean on_website_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
168
ShellExecute(NULL, "open", "http://notecase.sourceforge.net", "", "", SW_SHOW);
170
ExecuteFile("http://notecase.sourceforge.net", "", "", NULL);
176
gboolean on_mail_link_clicked (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
179
ShellExecute(NULL, "open", "mailto:miroslav.rajcic@inet.hr", "", "", SW_SHOW);
181
ExecuteFile("mailto:miroslav.rajcic@inet.hr", "", "", NULL);