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);