11 #include <gdk/gdkkeysyms.h> /* for keyboard values */
14 *-----------------------------------------------------------------------------
15 * view window keyboard
16 *-----------------------------------------------------------------------------
19 static gint view_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
21 ImageWindow *imd = data;
22 gint stop_signal = FALSE;
26 switch (event->keyval)
45 image_area_adjust_zoom(imd, 1);
48 image_area_adjust_zoom(imd, -1);
51 image_area_set_zoom(imd, 0);
54 image_area_set_zoom(imd, 1);
57 file_util_delete(image_area_get_path(imd), NULL);
61 gtk_widget_destroy(imd->top_window);
66 if (event->state & GDK_CONTROL_MASK)
69 switch (event->keyval)
98 start_editor_from_file(n, image_area_get_path(imd));
102 if (event->state & GDK_SHIFT_MASK)
110 keyboard_scroll_calc(&x, &y, event);
111 image_area_scroll(imd, x, y);
118 *-----------------------------------------------------------------------------
119 * view window main routines
120 *-----------------------------------------------------------------------------
123 static void button3_cb(ImageWindow *imd, GdkEventButton *bevent, gpointer data)
125 gtk_object_set_data(GTK_OBJECT(menu_window_view), "view_active", imd);
126 gtk_menu_popup (GTK_MENU(menu_window_view), NULL, NULL, NULL, NULL,
127 bevent->button, bevent->time);
130 static void button4_cb(ImageWindow *imd, GdkEventButton *bevent, gpointer data)
132 if (mousewheel_scrolls)
133 image_area_scroll(imd, 0, -MOUSEWHEEL_SCROLL_SIZE);
136 static void button5_cb(ImageWindow *imd, GdkEventButton *bevent, gpointer data)
138 if (mousewheel_scrolls)
139 image_area_scroll(imd, 0, MOUSEWHEEL_SCROLL_SIZE);
142 static gint view_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
144 gtk_widget_destroy(w);
148 static gint view_window_destroy_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
150 ImageWindow *imd = data;
151 image_area_free(imd);
155 void view_window_new(gchar *path)
159 GtkAllocation req_size;
163 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
164 gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
165 gtk_window_set_title (GTK_WINDOW (window), "GQview");
166 gtk_window_set_wmclass(GTK_WINDOW (window), "view", "GQview");
167 gtk_container_border_width (GTK_CONTAINER (window), 0);
169 imd = image_area_new(NULL);
170 image_area_set_topwindow(imd, window, NULL, TRUE);
171 gtk_container_add(GTK_CONTAINER(window), imd->eventbox);
172 gtk_viewport_set_shadow_type (GTK_VIEWPORT(imd->viewport), GTK_SHADOW_NONE);
173 gtk_container_border_width (GTK_CONTAINER (imd->viewport), 0);
174 gtk_widget_show_all(imd->eventbox);
178 image_area_set_button(imd, 3, button3_cb, NULL);
180 image_area_set_button(imd, 4, button4_cb, NULL);
181 image_area_set_button(imd, 5, button5_cb, NULL);
184 gtk_signal_connect(GTK_OBJECT(window), "delete_event", (GtkSignalFunc) view_window_delete_cb, NULL);
185 gtk_signal_connect(GTK_OBJECT(window), "destroy_event", (GtkSignalFunc) view_window_destroy_cb, imd);
186 gtk_signal_connect(GTK_OBJECT(window), "key_press_event", GTK_SIGNAL_FUNC(view_window_key_press_cb), imd);
188 image_area_set_image(imd, path, get_default_zoom(NULL));
192 if (limit_window_size)
194 gint mw = gdk_screen_width() * max_window_size / 100;
195 gint mh = gdk_screen_height() * max_window_size / 100;
201 gtk_window_set_default_size (GTK_WINDOW(window), w, h);
202 req_size.x = req_size.y = 0;
205 gtk_widget_size_allocate(GTK_WIDGET(window), &req_size);
207 gtk_widget_set_usize(imd->eventbox, w, h);
209 gtk_widget_show(window);
213 *-----------------------------------------------------------------------------
214 * view window menu routines and callbacks
215 *-----------------------------------------------------------------------------
218 static ImageWindow *view_window_get_active()
220 return gtk_object_get_data(GTK_OBJECT(menu_window_view), "view_active");
223 void view_window_active_edit(gint n)
225 ImageWindow *imd = view_window_get_active();
227 start_editor_from_file(n, image_area_get_path(imd));
230 void view_window_active_to_root(gint n)
232 ImageWindow *imd = view_window_get_active();
234 image_area_to_root(imd, (image_area_get_zoom(imd) == 0));
237 static void view_zoom_in_cb(GtkWidget *widget, gpointer data)
239 ImageWindow *imd = view_window_get_active();
241 image_area_adjust_zoom(imd, 1);
244 static void view_zoom_out_cb(GtkWidget *widget, gpointer data)
246 ImageWindow *imd = view_window_get_active();
248 image_area_adjust_zoom(imd, -1);
251 static void view_zoom_1_1_cb(GtkWidget *widget, gpointer data)
253 ImageWindow *imd = view_window_get_active();
255 image_area_set_zoom(imd, 1);
258 static void view_zoom_fit_cb(GtkWidget *widget, gpointer data)
260 ImageWindow *imd = view_window_get_active();
262 image_area_set_zoom(imd, 0);
265 static void view_copy_cb(GtkWidget *widget, gpointer data)
267 ImageWindow *imd = view_window_get_active();
269 file_util_copy(image_area_get_path(imd), NULL, current_path);
272 static void view_move_cb(GtkWidget *widget, gpointer data)
274 ImageWindow *imd = view_window_get_active();
276 file_util_move(image_area_get_path(imd), NULL, current_path);
279 static void view_rename_cb(GtkWidget *widget, gpointer data)
281 ImageWindow *imd = view_window_get_active();
283 file_util_rename(image_area_get_path(imd), NULL);
286 static void view_delete_cb(GtkWidget *widget, gpointer data)
288 ImageWindow *imd = view_window_get_active();
290 file_util_delete(image_area_get_path(imd), NULL);
293 static void view_close_cb(GtkWidget *widget, gpointer data)
295 ImageWindow *imd = view_window_get_active();
297 gtk_widget_destroy(imd->top_window);
300 void create_menu_view_popup()
302 menu_window_view = gtk_menu_new();
303 add_menu_popup_item(menu_window_view, _("Zoom in"), view_zoom_in_cb, NULL);
304 add_menu_popup_item(menu_window_view, _("Zoom out"), view_zoom_out_cb, NULL);
305 add_menu_popup_item(menu_window_view, _("Zoom 1:1"), view_zoom_1_1_cb, NULL);
306 add_menu_popup_item(menu_window_view, _("Fit image to window"), view_zoom_fit_cb, NULL);
307 add_menu_divider(menu_window_view);
309 menu_window_view_edit = gtk_menu_item_new_with_label(_("Edit"));
310 gtk_menu_append(GTK_MENU(menu_window_view), menu_window_view_edit);
311 gtk_widget_show(menu_window_view_edit);
313 add_menu_divider(menu_window_view);
314 add_menu_popup_item(menu_window_view, _("Copy..."), view_copy_cb, NULL);
315 add_menu_popup_item(menu_window_view, _("Move..."), view_move_cb, NULL);
316 add_menu_popup_item(menu_window_view, _("Rename..."), view_rename_cb, NULL);
317 add_menu_popup_item(menu_window_view, _("Delete..."), view_delete_cb, NULL);
319 add_menu_divider(menu_window_view);
320 add_menu_popup_item(menu_window_view, _("Close window"), view_close_cb, NULL);