[Title] added file filter, exception handling in screenshot window
authorgiwoong.kim <giwoong.kim@samsung.com>
Tue, 7 Feb 2012 07:04:12 +0000 (16:04 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Tue, 7 Feb 2012 07:04:12 +0000 (16:04 +0900)
[Type] enhancement
[Module] emulator / skin
[Priority] minor
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase] save screenshot

Change-Id: I8a0d6f5c1f93b7a8a7f79a828f8297223257d483

tizen/src/screen_shot.c [changed mode: 0755->0644]
tizen/src/tools.c

old mode 100755 (executable)
new mode 100644 (file)
index 64d7e8a..2b3f945
@@ -449,38 +449,54 @@ static void frame_buffer_save_image(GtkToolButton *toolbutton, gpointer user_dat
        GError *g_err = NULL;
        GdkPixbuf *pOriImg = NULL;
        BUF_WIDGET *buf_widget = (BUF_WIDGET *) user_data;
-               
+       GtkFileFilter *image_file_filter = NULL;
+
        pOriImg = gdk_pixbuf_scale_simple(buf_widget->pPixBuf, buf_widget->nOrgWidth, buf_widget->nOrgHeight, GDK_INTERP_NEAREST);
        buf_widget->pPixBuf = pOriImg;
 
-       file_name = get_file_name("Save Image...", NULL, GTK_FILE_CHOOSER_ACTION_SAVE, NULL, IMAGE_FILE_SAVE);
-
-       if (file_name == NULL || strlen(file_name) == 0) 
-               return;
-
-
-       str = strrchr(file_name, '.');
-       //str = find_index(file_name, '.');
-
-       if (str == NULL) {
-               show_message("Warning", "You must Add the Extension of File.(PNG/JPG/BMP)");
-               return;
-       }
-
-       if (strncmp(str + 1, "jpg", strlen("jpg")) == 0 || strncmp(str + 1, "JPG", strlen("JPG")) == 0 || strncmp(str + 1, "jpeg", strlen("jpeg")) == 0 || strncmp(str + 1, "JPEG", strlen("JPEG")) == 0) 
-               gdk_pixbuf_save(buf_widget->pPixBuf, file_name, "jpeg", &g_err, "quality", "100", NULL);
+       do {
+               image_file_filter = gtk_file_filter_new();
+               gtk_file_filter_set_name(image_file_filter, "Image Files");
+               gtk_file_filter_add_pattern(image_file_filter, "*.[pP][nN][gG]");
+               gtk_file_filter_add_pattern(image_file_filter, "*.[jJ][pP][gG]");
+               gtk_file_filter_add_pattern(image_file_filter, "*.[jJ][pP][eE][gG]");
+               gtk_file_filter_add_pattern(image_file_filter, "*.[bB][mM][pP]");
+
+               file_name = get_file_name("Save Image...", NULL, GTK_FILE_CHOOSER_ACTION_SAVE, image_file_filter, IMAGE_FILE_SAVE);
+               if (file_name == NULL) {
+                       break; //cancle
+               } else if (strlen(file_name) == 0) {
+                       g_free(file_name);
+                       continue;
+               }
 
-       else if (strncmp(str + 1, "png", strlen("png")) == 0 || strncmp(str + 1, "PNG", strlen("PNG")) == 0) 
-               gdk_pixbuf_save(buf_widget->pPixBuf, file_name, "png", &g_err, "compression", "9", NULL);
+               str = strrchr(file_name, '.');
+               if (str == NULL) {
+                       int len = strlen(file_name) + 5;
+                       char *png_file_name = qemu_mallocz(len);
+                       snprintf(png_file_name, len, "%s.png", file_name); //default format
 
-       else if (strncmp(str + 1, "bmp", strlen("bmp")) == 0 || strncmp(str + 1, "BMP", strlen("bmp")) == 0) 
-               gdk_pixbuf_save(buf_widget->pPixBuf, file_name, "bmp", &g_err, NULL);
-       
+                       gdk_pixbuf_save(buf_widget->pPixBuf, png_file_name, "png", &g_err, "compression", "9", NULL);
+                       qemu_free(png_file_name);
+                       break;
+               }
 
-       else {
-               show_message("Warning", "You must Add the Extension of File.(PNG/JPG/BMP)");
-               return;
-       }
+               if (strncmp(str + 1, "jpg", strlen("jpg") + 1) == 0 || strncmp(str + 1, "JPG", strlen("JPG") + 1) == 0 ||
+                       strncmp(str + 1, "jpeg", strlen("jpeg") + 1) == 0 || strncmp(str + 1, "JPEG", strlen("JPEG") + 1) == 0)
+               {
+                       gdk_pixbuf_save(buf_widget->pPixBuf, file_name, "jpeg", &g_err, "quality", "100", NULL);
+                       break;
+               } else if (strncmp(str + 1, "png", strlen("png") + 1) == 0 || strncmp(str + 1, "PNG", strlen("PNG") + 1) == 0) {
+                       gdk_pixbuf_save(buf_widget->pPixBuf, file_name, "png", &g_err, "compression", "9", NULL);
+                       break;
+               } else if (strncmp(str + 1, "bmp", strlen("bmp") + 1) == 0 || strncmp(str + 1, "BMP", strlen("bmp") + 1) == 0) {
+                       gdk_pixbuf_save(buf_widget->pPixBuf, file_name, "bmp", &g_err, NULL);
+                       break;
+               } else {
+                       show_message("Warning", "You must Add the Extension of File. (PNG/JPG/BMP)");
+                       g_free(file_name);
+               }
+       }while(1);
 
        g_free(file_name);
 }
index 2a526a9..c1b8b43 100644 (file)
@@ -92,8 +92,7 @@ char *get_file_name(char *str_title, char *str_folder, GtkFileChooserAction choo
                WARN("getting icon image path is failed!!\n");
        }
 
-       sprintf(icon_image, "%s/icons/07_EXECUTE_APP.png", skin);       
-
+       sprintf(icon_image, "%s/icons/07_EXECUTE_APP.png", skin);
        gtk_window_set_icon_from_file (GTK_WINDOW(filew), icon_image, NULL);
 #endif
 
@@ -101,7 +100,7 @@ char *get_file_name(char *str_title, char *str_folder, GtkFileChooserAction choo
 
        rawtime = time(NULL);
        timeinfo = localtime(&rawtime);
-       strftime(save_file_name, 64, "emulator-%Y-%m-%d-%H-%M-%S.png", timeinfo);
+       strftime(save_file_name, 64, "emulator-%Y-%m-%d-%H%M%S.png", timeinfo);
 
        gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filew), save_file_name);
        
@@ -117,7 +116,7 @@ char *get_file_name(char *str_title, char *str_folder, GtkFileChooserAction choo
                {
                        GtkFileFilter *file_filter = NULL;
                        file_filter = gtk_file_filter_new();
-                       gtk_file_filter_set_name(file_filter, "ALL(*)");
+                       gtk_file_filter_set_name(file_filter, "All Files");
                        gtk_file_filter_add_pattern(file_filter, "*");
                        gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filew), file_filter);
                }