Diferenciando entre guardar y guardar como
authordanigm <dani@danigm.net>
Sat, 6 Mar 2010 20:35:53 +0000 (20:35 +0000)
committerdanigm <danigm@aa302d1f-72b1-406a-902b-8593ca2b2744>
Sat, 6 Mar 2010 20:35:53 +0000 (20:35 +0000)
From: danigm <dani@danigm.net>

git-svn-id: https://forja.rediris.es/svn/cusl4-tbo@80 aa302d1f-72b1-406a-902b-8593ca2b2744

data/ui/tbo-menu-ui.xml
src/comic-open-dialog.c
src/comic-saveas-dialog.c
src/comic-saveas-dialog.h
src/tbo-window.c
src/tbo-window.h
src/ui-menu.c
src/ui-toolbar.c

index b5b5c52..8d40e9d 100644 (file)
@@ -4,6 +4,7 @@
        <menuitem name="New" action="NewFile" />
        <menuitem name="Open" action="OpenFile" />
        <menuitem name="Save" action="SaveFile" />
+       <menuitem name="SaveAs" action="SaveFileAs" />
        <menuitem name="Quit" action="Quit" />
      </menu>
     </menubar>
index 8666526..4f52aa1 100644 (file)
@@ -39,6 +39,7 @@ tbo_comic_open_dialog (GtkWidget *widget, TboWindow *window)
     {
         filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
         tbo_comic_open (window, filename);
+        tbo_window_set_path (window, filename);
         update_drawing (window);
         tbo_window_update_status (window, 0, 0);
     }
index b021982..1d138b6 100644 (file)
@@ -6,6 +6,16 @@
 #include "comic.h"
 
 gboolean
+tbo_comic_save_dialog (GtkWidget *widget, TboWindow *window)
+{
+    if (window->path)
+        tbo_comic_save (window, window->path);
+    else
+        tbo_comic_saveas_dialog (widget, window);
+    return FALSE;
+}
+
+gboolean
 tbo_comic_saveas_dialog (GtkWidget *widget, TboWindow *window)
 {
     gint response;
@@ -32,6 +42,7 @@ tbo_comic_saveas_dialog (GtkWidget *widget, TboWindow *window)
     {
         filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
         tbo_comic_save (window, filename);
+        tbo_window_set_path (window, filename);
     }
 
     gtk_widget_destroy ((GtkWidget *) filechooser);
index 5d1352f..8e1c327 100644 (file)
@@ -4,6 +4,7 @@
 #include <gtk/gtk.h>
 #include "tbo-window.h"
 
+gboolean tbo_comic_save_dialog (GtkWidget *widget, TboWindow *window);
 gboolean tbo_comic_saveas_dialog (GtkWidget *widget, TboWindow *window);
 
 #endif
index d70f804..f0650c7 100644 (file)
@@ -27,6 +27,7 @@ tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll, GtkWidget *toolarea,
     tbo->vbox = vbox;
     tbo->comic = comic;
     tbo->toolarea = toolarea;
+    tbo->path = NULL;
 
     return tbo;
 }
@@ -36,9 +37,20 @@ tbo_window_free (TboWindow *tbo)
 {
     tbo_comic_free (tbo->comic);
     gtk_widget_destroy (tbo->window);
+    if (tbo->path)
+        free (tbo->path);
     free (tbo);
 }
 
+void
+tbo_window_set_path (TboWindow *tbo, const char *path)
+{
+    if (tbo->path)
+        free (tbo->path);
+    tbo->path = malloc (255 * sizeof (char));
+    snprintf (tbo->path, 255, "%s", path);
+}
+
 gboolean 
 tbo_window_free_cb (GtkWidget *widget, GdkEventExpose *event,
                     TboWindow *tbo)
index e11c3a7..1df77d2 100644 (file)
@@ -13,7 +13,7 @@ typedef struct
     GtkWidget *status;
     GtkWidget *vbox;
     Comic *comic;
-
+    char *path;
 } TboWindow;
 
 TboWindow *tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll, GtkWidget *toolarea, GtkWidget *status, GtkWidget *vbox, Comic *comic);
@@ -23,5 +23,6 @@ GdkPixbuf *create_pixbuf (const gchar * filename);
 TboWindow * tbo_new_tbo (int width, int height);
 void tbo_window_update_status (TboWindow *tbo, int x, int y);
 void tbo_empty_tool_area (TboWindow *tbo);
+void tbo_window_set_path (TboWindow *tbo, const char *path);
 
 #endif
index e8f1043..cd1c04c 100644 (file)
@@ -37,6 +37,10 @@ static const GtkActionEntry tbo_menu_entries [] = {
 
     { "SaveFile", GTK_STOCK_SAVE, N_("_Save"), "<control>S",
       N_("Save current document"),
+      G_CALLBACK (tbo_comic_save_dialog) },
+
+    { "SaveFileAs", GTK_STOCK_SAVE_AS, N_("_Save as"), "",
+      N_("Save current document as ..."),
       G_CALLBACK (tbo_comic_saveas_dialog) },
 
     { "Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q",
index 57fa4da..884a65e 100644 (file)
@@ -196,7 +196,7 @@ static const GtkActionEntry tbo_tools_entries [] = {
 
     { "SaveFileTool", GTK_STOCK_SAVE, N_("_Save"), "<control>S",
       N_("Save current document"),
-      G_CALLBACK (tbo_comic_saveas_dialog) },
+      G_CALLBACK (tbo_comic_save_dialog) },
 
     // Page tools
     { "NewPage", GTK_STOCK_ADD, N_("New Page"), "<control>P",