4 #include <glib/gi18n.h>
5 #include "tbo-window.h"
8 #include "ui-toolbar.h"
9 #include "ui-drawing.h"
10 #include "tbo-types.h"
12 static int NWINDOWS = 0;
15 tbo_window_new (GtkWidget *window, GtkWidget *dw_scroll,
16 GtkWidget *notebook, GtkWidget *toolarea,
17 GtkWidget *status, GtkWidget *vbox, Comic *comic)
22 tbo = malloc (sizeof (TboWindow));
24 tbo->dw_scroll = dw_scroll;
25 list = gtk_container_get_children (GTK_CONTAINER (dw_scroll));
26 tbo->drawing = GTK_WIDGET (list->data);
30 tbo->toolarea = toolarea;
31 tbo->notebook = notebook;
38 tbo_window_free (TboWindow *tbo)
40 tbo_comic_free (tbo->comic);
41 gtk_widget_destroy (tbo->window);
48 tbo_window_set_path (TboWindow *tbo, const char *path)
52 tbo->path = malloc (255 * sizeof (char));
53 snprintf (tbo->path, 255, "%s", path);
57 tbo_window_free_cb (GtkWidget *widget, GdkEventExpose *event,
60 tbo_window_free (tbo);
67 GdkPixbuf *create_pixbuf (const gchar * filename)
71 pixbuf = gdk_pixbuf_new_from_file(filename, &error);
73 fprintf(stderr, "%s\n", error->message);
81 create_darea (TboWindow *tbo)
85 int width=tbo->comic->width, height=tbo->comic->height;
87 scrolled = gtk_scrolled_window_new (NULL, NULL);
88 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
89 darea = get_drawing_area (width, height);
90 gtk_container_add (GTK_CONTAINER (scrolled), darea);
91 darea_connect_signals (tbo, darea);
92 gtk_widget_show_all (scrolled);
98 tbo_new_tbo (int width, int height)
103 GtkWidget *container;
104 GtkWidget *tool_paned;
108 GtkWidget *scrolled2;
114 GtkUIManager *manager;
118 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
119 gtk_window_set_default_size (GTK_WINDOW (window), width, height);
120 gtk_window_set_icon (GTK_WINDOW (window), create_pixbuf (DATA_DIR "/icon.png"));
122 // El contenedor principal
123 container = gtk_vbox_new (FALSE, 0);
124 gtk_container_add (GTK_CONTAINER (window), container);
126 comic = tbo_comic_new (_("Untitled"), width, height);
127 gtk_window_set_title (GTK_WINDOW (window), comic->title);
128 scrolled = gtk_scrolled_window_new (NULL, NULL);
129 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
130 darea = get_drawing_area (width, height);
131 gtk_container_add (GTK_CONTAINER (scrolled), darea);
132 notebook = gtk_notebook_new ();
133 gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE);
134 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolled, NULL);
136 hpaned = gtk_hpaned_new ();
137 tool_paned = gtk_vbox_new (FALSE, 0);
138 scrolled2 = gtk_scrolled_window_new (NULL, NULL);
139 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
140 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled2), tool_paned);
142 gtk_paned_set_position (GTK_PANED (hpaned), width - 200);
143 gtk_paned_pack1 (GTK_PANED (hpaned), notebook, TRUE, FALSE);
144 gtk_paned_pack2 (GTK_PANED (hpaned), scrolled2, TRUE, FALSE);
146 status = gtk_statusbar_new ();
148 tbo = tbo_window_new (window, scrolled, notebook, tool_paned, status, container, comic);
149 tbo_window_update_status (tbo, 0, 0);
151 // ui-drawing.c (expose, motion and click)
152 darea_connect_signals (tbo, darea);
155 g_signal_connect (tbo->notebook, "switch-page", G_CALLBACK (notebook_switch_page_cb), tbo);
156 g_signal_connect (tbo->window, "key_press_event", G_CALLBACK (on_key_cb), tbo);
157 g_signal_connect (window, "delete-event", G_CALLBACK (tbo_window_free_cb), tbo);
159 // Generando la barra de herramientas de la aplicacion
160 toolbar = generate_toolbar (tbo);
162 // Generando el menu de la aplicacion
163 menu = generate_menu (tbo);
165 gtk_box_pack_start (GTK_BOX (container), menu, FALSE, FALSE, 0);
166 gtk_box_pack_start (GTK_BOX (container), toolbar, FALSE, FALSE, 0);
168 gtk_container_add (GTK_CONTAINER (container), hpaned);
170 gtk_box_pack_start (GTK_BOX (container), status, FALSE, FALSE, 0);
172 gtk_widget_show_all (window);
178 tbo_window_update_status (TboWindow *tbo, int x, int y)
181 snprintf (buffer, 200, _("page: %d of %d [ %5d,%5d ] | frames: %d"),
182 tbo_comic_page_index (tbo->comic),
183 tbo_comic_len (tbo->comic),
185 tbo_page_len (tbo_comic_get_current_page (tbo->comic)));
186 gtk_statusbar_push (GTK_STATUSBAR (tbo->status), 0, buffer);
187 update_drawing (tbo);
188 update_toolbar (tbo);
192 remove_cb (GtkWidget *widget, gpointer data)
194 gtk_widget_destroy(widget);
199 tbo_empty_tool_area (TboWindow *tbo)
201 gtk_container_foreach (GTK_CONTAINER (tbo->toolarea), (GtkCallback)remove_cb, NULL);