* Botones de nueva página y nueva viñeta (sin funcionalidad)
authordanigm <danigm>
Mon, 28 Dec 2009 13:14:05 +0000 (13:14 +0000)
committerdanigm <danigm@aa302d1f-72b1-406a-902b-8593ca2b2744>
Mon, 28 Dec 2009 13:14:05 +0000 (13:14 +0000)
* Añadida barra de estado

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

TODO
data/ui/tbo-toolbar-ui.xml
src/tbo-window.c
src/tbo-window.h
src/ui-drawing.c
src/ui-drawing.h
src/ui-toolbar.c

diff --git a/TODO b/TODO
index 90f2e3c..8b13789 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1 @@
-- Dialogo de nuevo comic (pedir tamaño)
-- Varios controles avanzados sobre cairo, como viñeta, globo, texto,
-  etc
 
index 899504b..7a8d189 100644 (file)
@@ -6,6 +6,8 @@
        <toolitem name="OpenTool" action="OpenFileTool"/>
        <toolitem name="SaveTool" action="SaveFileTool"/>
        <separator/>
+       <toolitem name="newpage" action="NewPage"/>
+       <toolitem name="newframe" action="NewFrame"/>
      </placeholder>
     </toolbar>
 </ui>
index da8d21b..76796ce 100644 (file)
@@ -11,7 +11,7 @@
 static int NWINDOWS = 0;
 
 TboWindow *
-tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll, 
+tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll, GtkWidget *status, 
                 GtkWidget *vbox, Comic *comic)
 {
     TboWindow *tbo;
@@ -22,6 +22,7 @@ tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll,
     tbo->dw_scroll = dw_scroll;
     list = gtk_container_get_children (GTK_CONTAINER (dw_scroll));
     tbo->drawing = GTK_WIDGET (list->data);
+    tbo->status = status;
     tbo->vbox = vbox;
     tbo->comic = comic;
 
@@ -71,6 +72,7 @@ tbo_new_tbo (int width, int height)
     GtkWidget *toolbar;
     GtkWidget *scrolled;
     GtkWidget *darea;
+    GtkWidget *status;
 
     GtkUIManager *manager;
 
@@ -87,10 +89,16 @@ tbo_new_tbo (int width, int height)
     comic = tbo_comic_new ("Untitled", width, height);
     gtk_window_set_title (GTK_WINDOW (window), comic->title);
     scrolled = gtk_scrolled_window_new (NULL, NULL);
+    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
     darea = get_drawing_area (width, height);
     gtk_container_add (GTK_CONTAINER (scrolled), darea);
 
-    tbo = tbo_window_new (window, scrolled, container, comic);
+    status = gtk_statusbar_new ();
+
+    tbo = tbo_window_new (window, scrolled, status, container, comic);
+
+    // ui-drawing.c (expose, motion and click)
+    darea_connect_signals (tbo);
 
     g_signal_connect (window, "delete-event", G_CALLBACK (tbo_window_free_cb), tbo);
 
@@ -104,6 +112,8 @@ tbo_new_tbo (int width, int height)
     gtk_box_pack_start (GTK_BOX (container), toolbar, FALSE, FALSE, 0);
     gtk_container_add (GTK_CONTAINER (container), scrolled);
 
+    gtk_box_pack_start (GTK_BOX (container), status, FALSE, FALSE, 0);
+
     gtk_widget_show_all (window);
 
     return tbo;
index 34c2208..4033da2 100644 (file)
@@ -6,14 +6,16 @@
 
 typedef struct
 {
-GtkWidget *window;
-GtkWidget *dw_scroll;
-GtkWidget *drawing;
-GtkWidget *vbox;
-Comic *comic;
+    GtkWidget *window;
+    GtkWidget *dw_scroll;
+    GtkWidget *drawing;
+    GtkWidget *status;
+    GtkWidget *vbox;
+    Comic *comic;
+
 } TboWindow;
 
-TboWindow *tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll, GtkWidget *vbox, Comic *comic);
+TboWindow *tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll, GtkWidget *status, GtkWidget *vbox, Comic *comic);
 void tbo_window_free (TboWindow *tbo);
 gboolean tbo_window_free_cb (GtkWidget *widget, GdkEventExpose *event, TboWindow *tbo);
 GdkPixbuf *create_pixbuf (const gchar * filename);
index a7b8ea9..af235b6 100644 (file)
@@ -7,24 +7,23 @@
 gboolean
 on_expose_cb(GtkWidget      *widget,
              GdkEventExpose *event,
-             gpointer       data)
+             TboWindow       *tbo)
 {
     cairo_t *cr;
     int width, height;
     char *text = "TBO rulz!";
     cairo_text_extents_t extents;
-    int *size = (int *) data;
 
-    width = size[0];
-    height = size[1];
+    width = tbo->comic->width;
+    height = tbo->comic->height;
 
     cr = gdk_cairo_create(GTK_LAYOUT (widget)->bin_window);
 
     cairo_set_source_rgb(cr, 1, 1, 1);
-    cairo_rectangle(cr, 0, 0, size[0], size[1]);
+    cairo_rectangle(cr, 0, 0, width+2, height+2);
     cairo_fill(cr);
     cairo_set_source_rgb(cr, 0, 0, 0);
-    cairo_rectangle (cr, 0, 0, size[0], size[1]);
+    cairo_rectangle (cr, 1, 1, width, height);
     cairo_stroke (cr);
 
     cairo_set_source_rgb(cr, 0, 0, 0);
@@ -43,20 +42,21 @@ on_expose_cb(GtkWidget      *widget,
 }
 
 gboolean
-on_move_cb (GtkWidget      *widget,
-           GdkEventExpose *event,
-           gpointer       data)
+on_move_cb (GtkWidget     *widget,
+           GdkEventMotion *event,
+           TboWindow      *tbo)
 {
-    //printf ("move\n");
+    char buffer[100];
+    snprintf (buffer, 100, "move %dx%d", (int)event->x, (int)event->y);
+    gtk_statusbar_push (GTK_STATUSBAR (tbo->status), 0, buffer);
     return FALSE;
 }
 
 gboolean
-on_click_cb (GtkWidget      *widget,
-           GdkEventExpose *event,
-           gpointer       data)
+on_click_cb (GtkWidget    *widget,
+           GdkEventButton *event,
+           TboWindow      *tbo)
 {
-    printf ("click\n");
     return FALSE;
 }
 
@@ -65,26 +65,29 @@ get_drawing_area (int width, int height)
 {
 
     GtkWidget *drawing;
-    static int size[2];
-    
-    size[0] = width;
-    size[1] = height;
 
     drawing = gtk_layout_new(NULL, NULL);
-    gtk_layout_set_size(GTK_LAYOUT (drawing), size[0], size[1]);
+    gtk_layout_set_size(GTK_LAYOUT (drawing), width, height);
 
-    g_signal_connect(drawing, "expose-event",
-            G_CALLBACK (on_expose_cb),  (gpointer) size);
+    return drawing;
+}
+
+void
+darea_connect_signals (TboWindow *tbo)
+{
+    GtkWidget *drawing;
+    drawing = tbo->drawing;
 
     gtk_widget_add_events (drawing, GDK_BUTTON_PRESS_MASK |
                                     GDK_POINTER_MOTION_MASK);
 
+    g_signal_connect(drawing, "expose-event",
+            G_CALLBACK (on_expose_cb), tbo);
+
     g_signal_connect (drawing, "button_press_event",
-            G_CALLBACK (on_click_cb), NULL);
+            G_CALLBACK (on_click_cb), tbo);
 
     g_signal_connect (drawing, "motion_notify_event",
-            G_CALLBACK (on_move_cb), (gpointer) size);
-
-    return drawing;
+            G_CALLBACK (on_move_cb), tbo);
 }
 
index 636095a..df275c0 100644 (file)
@@ -3,11 +3,13 @@
 
 #include <gtk/gtk.h>
 #include <cairo.h>
+#include "tbo-window.h"
 
 
-gboolean on_expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data);
-gboolean on_move_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data);
-gboolean on_click_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data);
+gboolean on_expose_cb(GtkWidget *widget, GdkEventExpose *event, TboWindow *tbo);
+gboolean on_move_cb(GtkWidget *widget, GdkEventMotion *event, TboWindow *tbo);
+gboolean on_click_cb(GtkWidget *widget, GdkEventButton *event, TboWindow *tbo);
+void darea_connect_signals (TboWindow *tbo);
 GtkWidget * get_drawing_area (int width, int height);
 
 #endif
index 638c115..8ff31cd 100644 (file)
@@ -13,16 +13,24 @@ gboolean toolbar_handler (GtkWidget *widget, gpointer data){
 
 static const GtkActionEntry tbo_tools_entries [] = {
     { "NewFileTool", GTK_STOCK_NEW, "_New", "<control>N",
-      "Create a new file",
+      "New Comic",
       G_CALLBACK (tbo_comic_new_dialog) },
 
     { "OpenFileTool", GTK_STOCK_OPEN, "_Open", "<control>O",
-      "Open a new file",
+      "Open comic",
       G_CALLBACK (toolbar_handler) },
 
     { "SaveFileTool", GTK_STOCK_SAVE, "_Save", "<control>S",
       "Save current document",
       G_CALLBACK (toolbar_handler) },
+
+    { "NewPage", GTK_STOCK_ADD, "New Page", "<control>P",
+      "New page",
+      G_CALLBACK (toolbar_handler) },
+
+    { "NewFrame", GTK_STOCK_DND_MULTIPLE, "New _Frame", "<control>F",
+      "New Frame",
+      G_CALLBACK (toolbar_handler) },
 };
 
 GtkWidget *generate_toolbar (TboWindow *window){