diff --git a/camera.glade b/camera.glade index 53c2837..5528339 100644 --- a/camera.glade +++ b/camera.glade @@ -138,10 +138,45 @@ - + + True + True + True + + + True + False + gtk-open + + + + + False + True + end + 1 + - + + True + True + True + + + 24 + 24 + True + False + + + + + False + True + end + 2 + diff --git a/main.c b/main.c index 21ed8ff..e4490b5 100644 --- a/main.c +++ b/main.c @@ -74,12 +74,14 @@ static int current_is_rear = 1; static cairo_surface_t *surface = NULL; static int preview_width = -1; static int preview_height = -1; +static char *last_path = NULL; // Widgets GtkWidget *preview; GtkWidget *error_box; GtkWidget *error_message; GtkWidget *main_stack; +GtkWidget *thumb_last; static int xioctl(int fd, int request, void *arg) @@ -374,6 +376,7 @@ process_image(const int *p, int size) char timestamp[30]; GdkPixbuf *pixbuf; GdkPixbuf *pixbufrot; + GdkPixbuf *thumb; GError *error = NULL; double scale; cairo_t *cr; @@ -413,7 +416,10 @@ process_image(const int *p, int size) strftime(timestamp, 30, "%Y%m%d%H%M%S", &tim); sprintf(fname, "%s/Pictures/IMG%s.jpg", getenv("HOME"), timestamp); printf("Saving image\n"); + thumb = gdk_pixbuf_scale_simple(pixbufrot, 24, 24, GDK_INTERP_BILINEAR); + gtk_image_set_from_pixbuf(GTK_IMAGE(thumb_last), thumb); gdk_pixbuf_save(pixbufrot, fname, "jpeg", &error, "quality", "95", NULL); + last_path = strdup(fname); if (error != NULL) { g_printerr("%s\n", error->message); g_clear_error(&error); @@ -812,6 +818,32 @@ find_media_fd() return 1; } +void +on_open_last_clicked(GtkWidget *widget, gpointer user_data) +{ + char uri[270]; + GError *error = NULL; + + if(!last_path) { + return; + } + sprintf(uri, "file://%s", last_path); + if(!g_app_info_launch_default_for_uri(uri, NULL, &error)){ + g_printerr("Could not launch image viewer: %s\n", error->message); + } +} + +void +on_open_directory_clicked(GtkWidget *widget, gpointer user_data) +{ + char uri[270]; + GError *error = NULL; + sprintf(uri, "file://%s/Pictures", getenv("HOME")); + if(!g_app_info_launch_default_for_uri(uri, NULL, &error)){ + g_printerr("Could not launch image viewer: %s\n", error->message); + } +} + void on_shutter_clicked(GtkWidget *widget, gpointer user_data) { @@ -938,16 +970,21 @@ main(int argc, char *argv[]) GtkWidget *settings_btn = GTK_WIDGET(gtk_builder_get_object(builder, "settings")); GtkWidget *settings_back = GTK_WIDGET(gtk_builder_get_object(builder, "settings_back")); GtkWidget *error_close = GTK_WIDGET(gtk_builder_get_object(builder, "error_close")); + GtkWidget *open_last = GTK_WIDGET(gtk_builder_get_object(builder, "open_last")); + GtkWidget *open_directory = GTK_WIDGET(gtk_builder_get_object(builder, "open_directory")); preview = GTK_WIDGET(gtk_builder_get_object(builder, "preview")); error_box = GTK_WIDGET(gtk_builder_get_object(builder, "error_box")); error_message = GTK_WIDGET(gtk_builder_get_object(builder, "error_message")); main_stack = GTK_WIDGET(gtk_builder_get_object(builder, "main_stack")); + thumb_last = GTK_WIDGET(gtk_builder_get_object(builder, "thumb_last")); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(shutter, "clicked", G_CALLBACK(on_shutter_clicked), NULL); g_signal_connect(error_close, "clicked", G_CALLBACK(on_error_close_clicked), NULL); g_signal_connect(switch_btn, "clicked", G_CALLBACK(on_camera_switch_clicked), NULL); g_signal_connect(settings_btn, "clicked", G_CALLBACK(on_settings_btn_clicked), NULL); g_signal_connect(settings_back, "clicked", G_CALLBACK(on_back_clicked), NULL); + g_signal_connect(open_last, "clicked", G_CALLBACK(on_open_last_clicked), NULL); + g_signal_connect(open_directory, "clicked", G_CALLBACK(on_open_directory_clicked), NULL); g_signal_connect(preview, "draw", G_CALLBACK(preview_draw), NULL); g_signal_connect(preview, "configure-event", G_CALLBACK(preview_configure), NULL); diff --git a/shutter-button.svg b/shutter-button.svg index cfa25dc..cf70da9 100644 --- a/shutter-button.svg +++ b/shutter-button.svg @@ -5,9 +5,9 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - width="64" - height="64" - viewBox="0 0 16.933333 16.933334" + width="32" + height="32" + viewBox="0 0 8.4666665 8.466667" version="1.1" id="svg8"> + id="layer1" + transform="matrix(0.49996357,0,0,0.49996357,0.01938007,0.00978634)">