Cambio de título de la ventana al guardar
authordanigm <dani@danigm.net>
Sat, 6 Mar 2010 02:19:52 +0000 (02:19 +0000)
committerdanigm <danigm@aa302d1f-72b1-406a-902b-8593ca2b2744>
Sat, 6 Mar 2010 02:19:52 +0000 (02:19 +0000)
From: danigm <dani@danigm.net>

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

src/Makefile.am
src/comic-load.c
src/comic-saveas-dialog.c
src/comic.c
src/comic.h
src/doodle-treeview.c
src/tbo-types.h
src/tbo-utils.c [new file with mode: 0644]
src/tbo-utils.h [new file with mode: 0644]

index 533112b..2571426 100644 (file)
@@ -31,6 +31,7 @@ tbo_SOURCES = \
        dnd.c \
        tbo-object.c \
        comic-load.c \
+       tbo-utils.c \
        tbo-window.h \
        comic.h \
        comic-new-dialog.h \
@@ -52,6 +53,7 @@ tbo_SOURCES = \
        dnd.h \
        tbo-object.h \
        comic-load.h \
+       tbo-utils.h \
        custom-stock.h
 
 tbo_CFLAGS = @GTK_CFLAGS@ \
index 8812293..7451368 100644 (file)
@@ -12,6 +12,7 @@
 #include "tbo-object.h"
 #include "svgimage.h"
 #include "textobj.h"
+#include "tbo-utils.h"
 
 char *TITLE;
 
@@ -242,12 +243,9 @@ tbo_comic_load (char *filename)
             NULL,
             NULL);
 
-    // Basename -> TODO tbo-utils
-    gchar **basename = g_strsplit (filename, "/", -1);
-    gchar **pointer = basename;
-    while (*pointer) pointer++;
-    TITLE = g_strdup (*--pointer);
-    g_strfreev (basename);
+    char base_name[255];
+    get_base_name (filename, base_name, 255);
+    TITLE = g_strdup(base_name);
 
     if (g_file_get_contents (filename, &text, &length, NULL) == FALSE) {
         GtkWidget *dialog = gtk_message_dialog_new (NULL,
index ab0736f..b021982 100644 (file)
@@ -22,14 +22,16 @@ tbo_comic_saveas_dialog (GtkWidget *widget, TboWindow *window)
                                                GTK_RESPONSE_ACCEPT,
                                                NULL);
 
-    snprintf (buffer, 255, "%s.tbo", window->comic->title);
+    snprintf (buffer, 250, "%s", window->comic->title);
+    if (!g_str_has_suffix ((window->comic->title), ".tbo"))
+        strcat (buffer, ".tbo");
     gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filechooser), buffer);
     response = gtk_dialog_run (GTK_DIALOG (filechooser));
 
     if (response == GTK_RESPONSE_ACCEPT)
     {
         filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
-        tbo_comic_save (window->comic, filename);
+        tbo_comic_save (window, filename);
     }
 
     gtk_widget_destroy ((GtkWidget *) filechooser);
index 013c4bb..a21ec28 100644 (file)
@@ -10,6 +10,7 @@
 #include "tbo-window.h"
 #include "page.h"
 #include "comic-load.h"
+#include "tbo-utils.h"
 
 Comic *
 tbo_comic_new (const char *title, int width, int height)
@@ -17,8 +18,7 @@ tbo_comic_new (const char *title, int width, int height)
     Comic *new_comic;
 
     new_comic = malloc(sizeof(Comic));
-    new_comic->title = malloc(strlen(title)*sizeof(char));
-    sprintf (new_comic->title, "%s", title);
+    snprintf (new_comic->title, 255, "%s", title);
     new_comic->width = width;
     new_comic->height = height;
     new_comic->pages = NULL;
@@ -38,7 +38,6 @@ tbo_comic_free (Comic *comic)
     }
 
     g_list_free (g_list_first (comic->pages));
-    free (comic->title);
     free (comic);
 }
 
@@ -143,11 +142,13 @@ tbo_comic_del_current_page (Comic *comic)
 }
 
 void
-tbo_comic_save (Comic *comic, char *filename)
+tbo_comic_save (TboWindow *tbo, char *filename)
 {
     GList *p;
     char buffer[255];
     FILE *file = fopen (filename, "w");
+    Comic *comic = tbo->comic;
+
     if (!file)
     {
         snprintf (buffer, 255, _("Failed saving: %s"), strerror (errno));
@@ -161,6 +162,8 @@ tbo_comic_save (Comic *comic, char *filename)
         gtk_widget_destroy ((GtkWidget *) dialog);
         return;
     }
+    get_base_name (filename, comic->title, 255);
+    gtk_window_set_title (GTK_WINDOW (tbo->window), comic->title);
 
     snprintf (buffer, 255, "<tbo width=\"%d\" height=\"%d\">\n",
                                                     comic->width,
index 508daad..2fe012e 100644 (file)
@@ -18,7 +18,7 @@ Page *tbo_comic_next_page (Comic *comic);
 Page *tbo_comic_prev_page (Comic *comic);
 Page *tbo_comic_get_current_page (Comic *comic);
 void tbo_comic_set_current_page (Comic *comic, Page *page);
-void tbo_comic_save (Comic *comic, char *filename);
+void tbo_comic_save (TboWindow *tbo, char *filename);
 void tbo_comic_open (TboWindow *window, char *filename);
 
 #endif
index 1fb00c9..d6187f9 100644 (file)
@@ -7,6 +7,7 @@
 #include "frame.h"
 #include "doodle-treeview.h"
 #include "dnd.h"
+#include "tbo-utils.h"
 
 void free_gstring_array (GArray *arr);
 
@@ -59,19 +60,6 @@ free_gstring_array (GArray *arr)
     g_array_free (arr, TRUE);
 }
 
-void
-get_base_name (gchar *str, gchar *ret, int size)
-{
-    gchar **paths;
-    gchar **dirname;
-    paths = g_strsplit (str, "/", 0);
-    dirname = paths;
-    while (*dirname) dirname++;
-    dirname--;
-    snprintf (ret, size, *dirname);
-    g_strfreev (paths);
-}
-
 GArray *
 get_files (gchar *base_dir, gboolean isdir)
 {
index 77cc13e..422fe9b 100644 (file)
@@ -14,7 +14,7 @@ typedef struct
 
 typedef struct
 {
-    char *title;
+    char title[255];
     int width;
     int height;
     GList *pages;
diff --git a/src/tbo-utils.c b/src/tbo-utils.c
new file mode 100644 (file)
index 0000000..169b441
--- /dev/null
@@ -0,0 +1,16 @@
+#include <gtk/gtk.h>
+#include "tbo-utils.h"
+
+
+void
+get_base_name (gchar *str, gchar *ret, int size)
+{
+    gchar **paths;
+    gchar **dirname;
+    paths = g_strsplit (str, "/", 0);
+    dirname = paths;
+    while (*dirname) dirname++;
+    dirname--;
+    snprintf (ret, size, *dirname);
+    g_strfreev (paths);
+}
diff --git a/src/tbo-utils.h b/src/tbo-utils.h
new file mode 100644 (file)
index 0000000..b8eb16e
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __TBO_UTILS__
+#define __TBO_UTILS__
+
+#include <gtk/gtk.h>
+
+void get_base_name (gchar *str, gchar *ret, int size);
+
+#endif