23 |
#define LINK_COLOR "blue" |
#define LINK_COLOR "blue" |
24 |
#else |
#else |
25 |
#define LINK_COLOR "lightblue" |
#define LINK_COLOR "lightblue" |
|
#define CUSTOM_NOTEBOOK |
|
26 |
#endif |
#endif |
27 |
|
|
28 |
#ifdef ENABLE_BROWSER_INTERFACE |
#ifdef ENABLE_BROWSER_INTERFACE |
69 |
} |
} |
70 |
#endif |
#endif |
71 |
|
|
|
static GtkWidget *notebook_new(void) { |
|
|
#ifdef CUSTOM_NOTEBOOK |
|
|
GtkWidget *vbox = gtk_vbox_new(FALSE, 0); |
|
|
|
|
|
GtkWidget *notebook = gtk_notebook_new(); |
|
|
|
|
|
/* solution for fremantle: we use a row of ordinary buttons instead */ |
|
|
/* of regular tabs */ |
|
|
|
|
|
/* hide the regular tabs */ |
|
|
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE); |
|
|
|
|
|
gtk_box_pack_start_defaults(GTK_BOX(vbox), notebook); |
|
|
|
|
|
/* store a reference to the notebook in the vbox */ |
|
|
g_object_set_data(G_OBJECT(vbox), "notebook", (gpointer)notebook); |
|
|
|
|
|
/* create a hbox for the buttons */ |
|
|
GtkWidget *hbox = gtk_hbox_new(TRUE, 0); |
|
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
|
|
g_object_set_data(G_OBJECT(vbox), "hbox", (gpointer)hbox); |
|
|
|
|
|
return vbox; |
|
|
#else |
|
|
return gtk_notebook_new(); |
|
|
#endif |
|
|
} |
|
|
|
|
|
#ifdef CUSTOM_NOTEBOOK |
|
|
static void on_notebook_button_clicked(GtkWidget *button, gpointer data) { |
|
|
GtkNotebook *nb = |
|
|
GTK_NOTEBOOK(g_object_get_data(G_OBJECT(data), "notebook")); |
|
|
|
|
|
gint page = (gint)g_object_get_data(G_OBJECT(button), "page"); |
|
|
gtk_notebook_set_current_page(nb, page); |
|
|
} |
|
|
#endif |
|
|
|
|
|
static void notebook_append_page(GtkWidget *notebook, |
|
|
GtkWidget *page, char *label) { |
|
|
#ifdef CUSTOM_NOTEBOOK |
|
|
GtkNotebook *nb = |
|
|
GTK_NOTEBOOK(g_object_get_data(G_OBJECT(notebook), "notebook")); |
|
|
|
|
|
gint page_num = gtk_notebook_append_page(nb, page, gtk_label_new(label)); |
|
|
GtkWidget *button = NULL; |
|
|
|
|
|
/* select button for page 0 by default */ |
|
|
if(!page_num) { |
|
|
button = gtk_radio_button_new_with_label(NULL, label); |
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); |
|
|
g_object_set_data(G_OBJECT(notebook), "group_master", (gpointer)button); |
|
|
} else { |
|
|
GtkWidget *master = g_object_get_data(G_OBJECT(notebook), "group_master"); |
|
|
button = gtk_radio_button_new_with_label_from_widget( |
|
|
GTK_RADIO_BUTTON(master), label); |
|
|
} |
|
|
|
|
|
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(button), FALSE); |
|
|
g_object_set_data(G_OBJECT(button), "page", (gpointer)page_num); |
|
|
|
|
|
gtk_signal_connect(GTK_OBJECT(button), "clicked", |
|
|
GTK_SIGNAL_FUNC(on_notebook_button_clicked), notebook); |
|
|
|
|
|
#if defined(USE_MAEMO) && (MAEMO_VERSION_MAJOR == 5) |
|
|
hildon_gtk_widget_set_theme_size(button, |
|
|
(HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH)); |
|
|
#endif |
|
|
|
|
|
gtk_box_pack_start_defaults( |
|
|
GTK_BOX(g_object_get_data(G_OBJECT(notebook), "hbox")), |
|
|
button); |
|
|
|
|
|
#else |
|
|
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, gtk_label_new(label)); |
|
|
#endif |
|
|
} |
|
|
|
|
72 |
GtkWidget *label_big(char *str) { |
GtkWidget *label_big(char *str) { |
73 |
GtkWidget *label = gtk_label_new(""); |
GtkWidget *label = gtk_label_new(""); |
74 |
char *markup = |
char *markup = |
87 |
return label; |
return label; |
88 |
} |
} |
89 |
|
|
|
static void |
|
|
on_label_realize(GtkWidget *widget, gpointer user_data) { |
|
|
/* get parent size (which is a container) */ |
|
|
gtk_widget_set_size_request(widget, widget->parent->allocation.width, -1); |
|
|
} |
|
|
|
|
|
GtkWidget *label_wrap(char *str) { |
|
|
GtkWidget *label = gtk_label_new(str); |
|
|
gtk_label_set_line_wrap_mode(GTK_LABEL(label), PANGO_WRAP_WORD); |
|
|
gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
|
|
|
|
g_signal_connect(G_OBJECT(label), "realize", |
|
|
G_CALLBACK(on_label_realize), NULL); |
|
|
|
|
|
return label; |
|
|
} |
|
|
|
|
90 |
GtkWidget *license_page_new(void) { |
GtkWidget *license_page_new(void) { |
91 |
char *name = g_strdup(ICONPATH "COPYING"); |
char *name = g_strdup(ICONPATH "COPYING"); |
92 |
|
|
93 |
GtkWidget *label = label_wrap(""); |
GtkWidget *label = text_wrap(""); |
94 |
|
|
95 |
/* load license into buffer */ |
/* load license into buffer */ |
96 |
FILE *file = fopen(name, "r"); |
FILE *file = fopen(name, "r"); |
110 |
fseek(file, 0l, SEEK_SET); |
fseek(file, 0l, SEEK_SET); |
111 |
|
|
112 |
char *buffer = g_malloc(flen+1); |
char *buffer = g_malloc(flen+1); |
113 |
fread(buffer, 1, flen, file); |
if(fread(buffer, 1, flen, file) != flen) |
114 |
fclose(file); |
text_set(label, _("Load error")); |
115 |
|
else { |
116 |
buffer[flen]=0; |
buffer[flen]=0; |
117 |
|
text_set(label, buffer); |
118 |
gtk_label_set_text(GTK_LABEL(label), buffer); |
} |
119 |
|
|
120 |
|
fclose(file); |
121 |
g_free(buffer); |
g_free(buffer); |
122 |
} else |
} else |
123 |
gtk_label_set_text(GTK_LABEL(label), _("Load error")); |
text_set(label, _("Load error")); |
124 |
|
|
125 |
#ifndef USE_PANNABLE_AREA |
#ifndef USE_PANNABLE_AREA |
126 |
GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL); |
GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL); |
253 |
GtkWidget *vbox = gtk_vbox_new(FALSE, 0); |
GtkWidget *vbox = gtk_vbox_new(FALSE, 0); |
254 |
|
|
255 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
256 |
label_wrap(_("If you like GPXView and want to support its future development " |
text_wrap(_("If you like GPXView and want to support its future development " |
257 |
"please consider donating to the developer. You can either " |
"please consider donating to the developer. You can either " |
258 |
"donate via paypal to"))); |
"donate via paypal to"))); |
259 |
|
|
261 |
link_new(NULL, "till@harbaum.org")); |
link_new(NULL, "till@harbaum.org")); |
262 |
|
|
263 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
264 |
label_wrap(_("or you can just click the button below which will open " |
text_wrap(_("or you can just click the button below which will open " |
265 |
"the appropriate web page in your browser."))); |
"the appropriate web page in your browser."))); |
266 |
|
|
267 |
GtkWidget *ihbox = gtk_hbox_new(FALSE, 0); |
GtkWidget *ihbox = gtk_hbox_new(FALSE, 0); |
281 |
GtkWidget *vbox = gtk_vbox_new(FALSE, 0); |
GtkWidget *vbox = gtk_vbox_new(FALSE, 0); |
282 |
|
|
283 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
284 |
label_wrap(_("Please report bugs or feature requests via the GPXView " |
text_wrap(_("Please report bugs or feature requests via the GPXView " |
285 |
"bug tracker. This bug tracker can directly be reached via " |
"bug tracker. This bug tracker can directly be reached via " |
286 |
"the following link:"))); |
"the following link:"))); |
287 |
|
|
289 |
link_new(appdata, "https://garage.maemo.org/tracker/?group_id=973")); |
link_new(appdata, "https://garage.maemo.org/tracker/?group_id=973")); |
290 |
|
|
291 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
292 |
label_wrap(_("You might also be interested in joining the mailing lists " |
text_wrap(_("You might also be interested in joining the mailing lists " |
293 |
"or the forum:"))); |
"or the forum:"))); |
294 |
|
|
295 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
296 |
link_new(appdata, "http://garage.maemo.org/projects/gpxview/")); |
link_new(appdata, "http://garage.maemo.org/projects/gpxview/")); |
297 |
|
|
298 |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
gtk_box_pack_start_defaults(GTK_BOX(vbox), |
299 |
label_wrap(_("Thank you for contributing!"))); |
text_wrap(_("Thank you for contributing!"))); |
300 |
|
|
301 |
return vbox; |
return vbox; |
302 |
} |
} |