42
static void film_strip_key_accel(GtkAccelGroup *accel_group,
43
GObject *acceleratable,
44
guint keyval, GdkModifierType modifier,
47
static void zoom_key_accel(GtkAccelGroup *accel_group, GObject *acceleratable,
48
guint keyval, GdkModifierType modifier,
51
static void export_key_accel_callback(GtkAccelGroup *accel_group,
52
GObject *acceleratable, guint keyval,
53
GdkModifierType modifier,gpointer data);
55
static void skip_f_key_accel_callback(GtkAccelGroup *accel_group,
56
GObject *acceleratable,
57
guint keyval, GdkModifierType modifier,
59
static void skip_b_key_accel_callback(GtkAccelGroup *accel_group,
60
GObject *acceleratable,
61
guint keyval, GdkModifierType modifier,
43
65
*name(dt_view_t *self)
52
74
self->data = malloc(sizeof(dt_develop_t));
53
75
dt_dev_init((dt_develop_t *)self->data, 1);
77
// Film strip shortcuts
78
gtk_accel_map_add_entry("<Darktable>/darkroom/toggle film strip",
79
GDK_f, GDK_CONTROL_MASK);
80
dt_accel_group_connect_by_path(
81
darktable.control->accels_darkroom,
82
"<Darktable>/darkroom/toggle film strip",
86
gtk_accel_map_add_entry("<Darktable>/darkroom/zoom/close",
87
GDK_1, GDK_MOD1_MASK);
88
gtk_accel_map_add_entry("<Darktable>/darkroom/zoom/fill",
89
GDK_2, GDK_MOD1_MASK);
90
gtk_accel_map_add_entry("<Darktable>/darkroom/zoom/fit",
91
GDK_3, GDK_MOD1_MASK);
93
dt_accel_group_connect_by_path(
94
darktable.control->accels_darkroom,
95
"<Darktable>/darkroom/zoom/close",
97
dt_accel_group_connect_by_path(
98
darktable.control->accels_darkroom,
99
"<Darktable>/darkroom/zoom/fill",
101
dt_accel_group_connect_by_path(
102
darktable.control->accels_darkroom,
103
"<Darktable>/darkroom/zoom/fit",
106
// enable shortcut to export with current export settings:
107
gtk_accel_map_add_entry("<Darktable>/darkroom/export",
108
GDK_e, GDK_CONTROL_MASK);
110
dt_accel_group_connect_by_path(
111
darktable.control->accels_darkroom,
112
"<Darktable>/darkroom/export",
116
// Shortcut to skip images
117
gtk_accel_map_add_entry("<Darktable>/darkroom/image forward",
119
gtk_accel_map_add_entry("<Darktable>/darkroom/image back",
122
dt_accel_group_connect_by_path(
123
darktable.control->accels_darkroom,
124
"<Darktable>/darkroom/image forward",
126
dt_accel_group_connect_by_path(
127
darktable.control->accels_darkroom,
128
"<Darktable>/darkroom/image back",
397
464
dt_conf_set_string("plugins/darkroom/active", "");
398
465
g_assert(dev->gui_attached);
400
// only save image/settings if image was modified
401
if (dev->image && dev->image->dirty)
467
// commit image ops to db
468
dt_dev_write_history(dev);
470
// be sure light table will update the thumbnail
403
// tag image as changed
404
// only tag the image when there was a real change.
406
dt_tag_new("darktable|changed", &tagid);
407
dt_tag_attach(tagid, dev->image->id);
408
// commit image ops to db
409
dt_dev_write_history(dev);
411
dt_image_write_sidecar_file(dev->image->id);
413
// commit updated mipmaps to db
415
dt_dev_process_to_mip(dev);
473
dt_dev_get_processed_size(dev, &dev->image->output_width, &dev->image->output_height);
474
dev->image->force_reimport = 1;
418
476
// release full buffer
419
477
if(dev->image && dev->image->pixels)
420
478
dt_image_release(dev->image, DT_IMAGE_FULL, 'r');
480
// writes the .xmp and the database:
422
481
dt_image_cache_flush(dev->image);
424
483
dev->image = image;
633
film_strip_key_accel(void *data)
688
film_strip_key_accel(GtkAccelGroup *accel_group,
689
GObject *acceleratable, guint keyval,
690
GdkModifierType modifier, gpointer data)
635
dt_view_film_strip_toggle(darktable.view_manager, film_strip_activated, data);
692
dt_view_film_strip_toggle(darktable.view_manager, film_strip_activated,
636
694
dt_control_queue_draw_all();
640
export_key_accel_callback(void *d)
698
export_key_accel_callback(GtkAccelGroup *accel_group,
699
GObject *acceleratable, guint keyval,
700
GdkModifierType modifier, gpointer data)
702
/* write history before exporting */
703
dt_dev_write_history((dt_develop_t *)data);
705
/* export current image */
642
706
dt_control_export();
709
static void skip_f_key_accel_callback(GtkAccelGroup *accel_group,
710
GObject *acceleratable, guint keyval,
711
GdkModifierType modifier, gpointer data)
713
dt_dev_jump_image((dt_develop_t*)data, 1);
716
static void skip_b_key_accel_callback(GtkAccelGroup *accel_group,
717
GObject *acceleratable,
718
guint keyval, GdkModifierType modifier,
721
dt_dev_jump_image((dt_develop_t*)data, -1);
725
static void show_module_callback(GtkAccelGroup *accel_group,
726
GObject *acceleratable,
727
guint keyval, GdkModifierType modifier,
731
dt_iop_module_t *module = (dt_iop_module_t*)data;
733
// Showing the module, if it isn't already visible
734
if(!dtgtk_tristatebutton_get_state(DTGTK_TRISTATEBUTTON(module->showhide)))
736
dtgtk_tristatebutton_set_state(DTGTK_TRISTATEBUTTON(module->showhide), 1);
737
gtk_widget_queue_draw(module->showhide);
740
dt_gui_iop_modulegroups_switch(module->groups());
741
gtk_expander_set_expanded(GTK_EXPANDER(module->expander), TRUE);
742
dt_iop_request_focus(module);
745
static void connect_closures(dt_view_t *self)
748
dt_develop_t *dev = (dt_develop_t*)self->data;
750
// Film strip shortcuts
751
closure = g_cclosure_new(G_CALLBACK(film_strip_key_accel),
752
(gpointer)self, NULL);
753
dev->closures = g_slist_prepend(dev->closures, closure);
754
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
755
"<Darktable>/darkroom/toggle film strip",
759
closure = g_cclosure_new(G_CALLBACK(zoom_key_accel), (gpointer)1, NULL);
760
dev->closures = g_slist_prepend(dev->closures, closure);
761
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
762
"<Darktable>/darkroom/zoom/close",
764
closure = g_cclosure_new(G_CALLBACK(zoom_key_accel), (gpointer)2, NULL);
765
dev->closures = g_slist_prepend(dev->closures, closure);
766
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
767
"<Darktable>/darkroom/zoom/fill",
769
closure = g_cclosure_new(G_CALLBACK(zoom_key_accel), (gpointer)3, NULL);
770
dev->closures = g_slist_prepend(dev->closures, closure);
771
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
772
"<Darktable>/darkroom/zoom/fit",
775
// enable shortcut to export with current export settings:
776
closure = g_cclosure_new(G_CALLBACK(export_key_accel_callback),
777
(gpointer)self->data, NULL);
778
dev->closures = g_slist_prepend(dev->closures, closure);
779
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
780
"<Darktable>/darkroom/export",
784
// Shortcut to skip images
785
closure = g_cclosure_new(G_CALLBACK(skip_f_key_accel_callback),
786
(gpointer)self->data, NULL);
787
dev->closures = g_slist_prepend(dev->closures, closure);
788
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
789
"<Darktable>/darkroom/image forward",
791
closure = g_cclosure_new(G_CALLBACK(skip_b_key_accel_callback),
792
(gpointer)self->data, NULL);
793
dev->closures = g_slist_prepend(dev->closures, closure);
794
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
795
"<Darktable>/darkroom/image back",
645
800
void enter(dt_view_t *self)
804
// Attaching accelerator group
805
gtk_window_add_accel_group(GTK_WINDOW(darktable.gui->widgets.main_window),
806
darktable.control->accels_darkroom);
808
// Connecting the closures
809
connect_closures(self);
647
811
dt_print(DT_DEBUG_CONTROL, "[run_job+] 11 %f in darkroom mode\n", dt_get_wtime());
648
812
dt_develop_t *dev = (dt_develop_t *)self->data;
697
861
GtkWidget *expander = dt_iop_gui_get_expander(module);
698
862
module->topwidget = GTK_WIDGET(expander);
699
863
gtk_box_pack_start(box, expander, FALSE, FALSE, 0);
864
module->show_closure = NULL;
700
865
if(strcmp(module->op, "gamma") && !(module->flags() & IOP_FLAGS_DEPRECATED))
867
// Connecting the (optional) module show accelerator
868
snprintf(accelpath, 256, "<Darktable>/darkroom/plugins/%s/show plugin", module->op);
869
module->show_closure = g_cclosure_new(G_CALLBACK(show_module_callback),
871
dt_accel_group_connect_by_path(darktable.control->accels_darkroom,
872
accelpath, module->show_closure);
702
874
module->showhide = dtgtk_tristatebutton_new(NULL,0);
703
875
char filename[1024], datadir[1024];
704
876
dt_get_datadir(datadir, 1024);
783
955
dt_view_film_strip_open(darktable.view_manager, film_strip_activated, self);
784
956
dt_view_film_strip_prefetch();
786
dt_gui_key_accel_register(GDK_CONTROL_MASK, GDK_f, film_strip_key_accel, self);
787
dt_gui_key_accel_register(GDK_MOD1_MASK, GDK_1, zoom_key_accel, (void *)1);
788
dt_gui_key_accel_register(GDK_MOD1_MASK, GDK_2, zoom_key_accel, (void *)2);
789
dt_gui_key_accel_register(GDK_MOD1_MASK, GDK_3, zoom_key_accel, (void *)3);
791
// enable shortcut to export with current export settings:
792
dt_gui_key_accel_register(GDK_CONTROL_MASK, GDK_e, export_key_accel_callback, NULL);
794
959
// switch on groups as they where last time:
795
960
dt_gui_iop_modulegroups_switch(dt_conf_get_int("plugins/darkroom/groups"));