Mercurial > geeqie
comparison src/preferences.c @ 218:f4a0555794a9
Customizable info overlay in fullscreen, based on the patch posted to gqview-devel list by Timo on 2007-09-10.
author | zas_ |
---|---|
date | Mon, 31 Mar 2008 22:10:25 +0000 |
parents | c7021159079d |
children | 77f1bcc6c161 |
comparison
equal
deleted
inserted
replaced
217:5bdab7ed4bcd | 218:f4a0555794a9 |
---|---|
121 | 121 |
122 static gint fullscreen_screen_c; | 122 static gint fullscreen_screen_c; |
123 static gint fullscreen_clean_flip_c; | 123 static gint fullscreen_clean_flip_c; |
124 static gint fullscreen_disable_saver_c; | 124 static gint fullscreen_disable_saver_c; |
125 static gint fullscreen_above_c; | 125 static gint fullscreen_above_c; |
126 static gint show_fullscreen_info_c; | |
127 static gchar *fullscreen_info_c = NULL; | |
126 | 128 |
127 static gint dupe_custom_threshold_c; | 129 static gint dupe_custom_threshold_c; |
128 | 130 |
129 static GtkWidget *configwindow = NULL; | 131 static GtkWidget *configwindow = NULL; |
130 static GtkWidget *startup_path_entry; | 132 static GtkWidget *startup_path_entry; |
293 | 295 |
294 fullscreen_screen = fullscreen_screen_c; | 296 fullscreen_screen = fullscreen_screen_c; |
295 fullscreen_clean_flip = fullscreen_clean_flip_c; | 297 fullscreen_clean_flip = fullscreen_clean_flip_c; |
296 fullscreen_disable_saver = fullscreen_disable_saver_c; | 298 fullscreen_disable_saver = fullscreen_disable_saver_c; |
297 fullscreen_above = fullscreen_above_c; | 299 fullscreen_above = fullscreen_above_c; |
300 show_fullscreen_info = show_fullscreen_info_c; | |
301 if (fullscreen_info_c) | |
302 { | |
303 g_free(fullscreen_info); | |
304 fullscreen_info = g_strdup(fullscreen_info_c); | |
305 } | |
298 | 306 |
299 update_on_time_change = update_on_time_change_c; | 307 update_on_time_change = update_on_time_change_c; |
300 exif_rotate_enable = exif_rotate_enable_c; | 308 exif_rotate_enable = exif_rotate_enable_c; |
301 | 309 |
302 dupe_custom_threshold = dupe_custom_threshold_c; | 310 dupe_custom_threshold = dupe_custom_threshold_c; |
777 gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE); | 785 gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE); |
778 if (safe_delete_path) gtk_entry_set_text(GTK_ENTRY(entry), safe_delete_path); | 786 if (safe_delete_path) gtk_entry_set_text(GTK_ENTRY(entry), safe_delete_path); |
779 gtk_box_pack_start(GTK_BOX(gd->vbox), entry, FALSE, FALSE, 0); | 787 gtk_box_pack_start(GTK_BOX(gd->vbox), entry, FALSE, FALSE, 0); |
780 gtk_widget_show(entry); | 788 gtk_widget_show(entry); |
781 gtk_widget_show(gd->dialog); | 789 gtk_widget_show(gd->dialog); |
790 } | |
791 | |
792 static void fullscreen_info_view_changed_cb(GtkWidget* widget, gpointer data) | |
793 { | |
794 GtkWidget *pTextView; | |
795 GtkTextBuffer* pTextBuffer; | |
796 GtkTextIter iStart; | |
797 GtkTextIter iEnd; | |
798 | |
799 pTextView = GTK_WIDGET(data); | |
800 | |
801 pTextBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView)); | |
802 gtk_text_buffer_get_start_iter(pTextBuffer, &iStart); | |
803 gtk_text_buffer_get_end_iter(pTextBuffer, &iEnd); | |
804 | |
805 if (fullscreen_info_c) g_free(fullscreen_info_c); | |
806 fullscreen_info_c = gtk_text_buffer_get_text(pTextBuffer, &iStart, &iEnd, TRUE); | |
782 } | 807 } |
783 | 808 |
784 static void config_window_create(void) | 809 static void config_window_create(void) |
785 { | 810 { |
786 GtkWidget *win_vbox; | 811 GtkWidget *win_vbox; |
797 GtkWidget *table; | 822 GtkWidget *table; |
798 GtkWidget *spin; | 823 GtkWidget *spin; |
799 GtkWidget *scrolled; | 824 GtkWidget *scrolled; |
800 GtkWidget *viewport; | 825 GtkWidget *viewport; |
801 GtkWidget *filter_view; | 826 GtkWidget *filter_view; |
827 GtkWidget *fullscreen_info_view; | |
802 GtkCellRenderer *renderer; | 828 GtkCellRenderer *renderer; |
803 GtkTreeSelection *selection; | 829 GtkTreeSelection *selection; |
804 GtkTreeViewColumn *column; | 830 GtkTreeViewColumn *column; |
831 GtkTextBuffer *buffer; | |
805 gint i; | 832 gint i; |
806 | 833 |
807 configwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 834 configwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
808 gtk_window_set_type_hint(GTK_WINDOW(configwindow), GDK_WINDOW_TYPE_HINT_DIALOG); | 835 gtk_window_set_type_hint(GTK_WINDOW(configwindow), GDK_WINDOW_TYPE_HINT_DIALOG); |
809 g_signal_connect(G_OBJECT (configwindow), "delete_event", | 836 g_signal_connect(G_OBJECT (configwindow), "delete_event", |
1219 | 1246 |
1220 pref_checkbox_new_int(group, _("Smooth image flip"), | 1247 pref_checkbox_new_int(group, _("Smooth image flip"), |
1221 fullscreen_clean_flip, &fullscreen_clean_flip_c); | 1248 fullscreen_clean_flip, &fullscreen_clean_flip_c); |
1222 pref_checkbox_new_int(group, _("Disable screen saver"), | 1249 pref_checkbox_new_int(group, _("Disable screen saver"), |
1223 fullscreen_disable_saver, &fullscreen_disable_saver_c); | 1250 fullscreen_disable_saver, &fullscreen_disable_saver_c); |
1251 pref_checkbox_new_int(group, _("Always show fullscreen info"), | |
1252 show_fullscreen_info, &show_fullscreen_info_c); | |
1253 pref_label_new(group, _("Fullscreen info string")); | |
1254 | |
1255 scrolled = gtk_scrolled_window_new(NULL, NULL); | |
1256 gtk_widget_set_size_request(scrolled, 200, 150); | |
1257 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN); | |
1258 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), | |
1259 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
1260 gtk_box_pack_start(GTK_BOX(group), scrolled, TRUE, TRUE, 5); | |
1261 gtk_widget_show(scrolled); | |
1262 | |
1263 fullscreen_info_view = gtk_text_view_new(); | |
1264 gtk_widget_set_tooltip_markup(fullscreen_info_view, | |
1265 _("<i>%name%</i> results in the filename of the picture.\n" | |
1266 "Also available: <i>%collection%</i>, <i>%number%</i>, <i>%total%</i>, <i>%date%</i>,\n" | |
1267 "<i>%size%</i> (filesize), <i>%width%</i>, <i>%height%</i>, <i>%res%</i> (resolution)\n" | |
1268 "To access exif data use the exif name, e. g. <i>%fCamera%</i> is the formatted camera name,\n" | |
1269 "<i>%Exif.Photo.DateTimeOriginal%</i> the date of the original shot.\n" | |
1270 "If two or more variables are connected with the |-sign, it prints available variables with a separator.\n" | |
1271 "<i>%fShutterSpeed%</i>|<i>%fISOSpeedRating%</i>|<i>%fFocalLength%</i> could show \"1/20s - 400 - 80 mm\" or \"1/200 - 80 mm\",\n" | |
1272 "if there's no ISO information in the Exif data.\n" | |
1273 "If a line is empty, it is removed. This allows to add lines that totally disappear when no data is available.\n" | |
1274 )); | |
1275 | |
1276 gtk_container_add(GTK_CONTAINER(scrolled), fullscreen_info_view); | |
1277 gtk_widget_show(fullscreen_info_view); | |
1278 | |
1279 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(fullscreen_info_view)); | |
1280 gtk_text_buffer_set_text(buffer, fullscreen_info, -1); | |
1281 g_signal_connect(G_OBJECT(buffer), "changed", | |
1282 G_CALLBACK(fullscreen_info_view_changed_cb), fullscreen_info_view); | |
1283 | |
1224 | 1284 |
1225 group = pref_group_new(vbox, FALSE, _("Delete"), GTK_ORIENTATION_VERTICAL); | 1285 group = pref_group_new(vbox, FALSE, _("Delete"), GTK_ORIENTATION_VERTICAL); |
1226 | 1286 |
1227 pref_checkbox_new_int(group, _("Confirm file delete"), | 1287 pref_checkbox_new_int(group, _("Confirm file delete"), |
1228 confirm_delete, &confirm_delete_c); | 1288 confirm_delete, &confirm_delete_c); |