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 gint view_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
132 gtk_widget_destroy(w);
136 static gint view_window_destroy_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
138 ImageWindow *imd = data;
139 image_area_free(imd);
143 void view_window_new(gchar *path)
147 GtkAllocation req_size;
151 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
152 gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
153 gtk_window_set_title (GTK_WINDOW (window), "GQview");
154 gtk_window_set_wmclass(GTK_WINDOW (window), "view", "GQview");
155 gtk_container_border_width (GTK_CONTAINER (window), 0);
157 imd = image_area_new(NULL);
158 image_area_set_topwindow(imd, window, NULL, TRUE);
159 gtk_container_add(GTK_CONTAINER(window), imd->eventbox);
160 gtk_viewport_set_shadow_type (GTK_VIEWPORT(imd->viewport), GTK_SHADOW_NONE);
161 gtk_container_border_width (GTK_CONTAINER (imd->viewport), 0);
162 gtk_widget_show_all(imd->eventbox);
166 image_area_set_button(imd, 3, button3_cb, NULL);
168 gtk_signal_connect(GTK_OBJECT(window), "delete_event", (GtkSignalFunc) view_window_delete_cb, NULL);
169 gtk_signal_connect(GTK_OBJECT(window), "destroy_event", (GtkSignalFunc) view_window_destroy_cb, imd);
170 gtk_signal_connect(GTK_OBJECT(window), "key_press_event", GTK_SIGNAL_FUNC(view_window_key_press_cb), imd);
172 image_area_set_image(imd, path, get_default_zoom(NULL));
176 if (limit_window_size)
178 gint mw = gdk_screen_width() * max_window_size / 100;
179 gint mh = gdk_screen_height() * max_window_size / 100;
185 gtk_window_set_default_size (GTK_WINDOW(window), w, h);
186 req_size.x = req_size.y = 0;
189 gtk_widget_size_allocate(GTK_WIDGET(window), &req_size);
191 gtk_widget_set_usize(imd->eventbox, w, h);
193 gtk_widget_show(window);
197 *-----------------------------------------------------------------------------
198 * view window menu routines and callbacks
199 *-----------------------------------------------------------------------------
202 static ImageWindow *view_window_get_active()
204 return gtk_object_get_data(GTK_OBJECT(menu_window_view), "view_active");
207 void view_window_active_edit(gint n)
209 ImageWindow *imd = view_window_get_active();
211 start_editor_from_file(n, image_area_get_path(imd));
214 static void view_zoom_in_cb(GtkWidget *widget, gpointer data)
216 ImageWindow *imd = view_window_get_active();
218 image_area_adjust_zoom(imd, 1);
221 static void view_zoom_out_cb(GtkWidget *widget, gpointer data)
223 ImageWindow *imd = view_window_get_active();
225 image_area_adjust_zoom(imd, -1);
228 static void view_zoom_1_1_cb(GtkWidget *widget, gpointer data)
230 ImageWindow *imd = view_window_get_active();
232 image_area_set_zoom(imd, 1);
235 static void view_zoom_fit_cb(GtkWidget *widget, gpointer data)
237 ImageWindow *imd = view_window_get_active();
239 image_area_set_zoom(imd, 0);
242 static void view_copy_cb(GtkWidget *widget, gpointer data)
244 ImageWindow *imd = view_window_get_active();
246 file_util_copy(image_area_get_path(imd), NULL, current_path);
249 static void view_move_cb(GtkWidget *widget, gpointer data)
251 ImageWindow *imd = view_window_get_active();
253 file_util_move(image_area_get_path(imd), NULL, current_path);
256 static void view_rename_cb(GtkWidget *widget, gpointer data)
258 ImageWindow *imd = view_window_get_active();
260 file_util_rename(image_area_get_path(imd), NULL);
263 static void view_delete_cb(GtkWidget *widget, gpointer data)
265 ImageWindow *imd = view_window_get_active();
267 file_util_delete(image_area_get_path(imd), NULL);
270 static void view_close_cb(GtkWidget *widget, gpointer data)
272 ImageWindow *imd = view_window_get_active();
274 gtk_widget_destroy(imd->top_window);
277 void create_menu_view_popup()
279 menu_window_view = gtk_menu_new();
280 add_menu_popup_item(menu_window_view, _("Zoom in"), view_zoom_in_cb, NULL);
281 add_menu_popup_item(menu_window_view, _("Zoom out"), view_zoom_out_cb, NULL);
282 add_menu_popup_item(menu_window_view, _("Zoom 1:1"), view_zoom_1_1_cb, NULL);
283 add_menu_popup_item(menu_window_view, _("Fit image to window"), view_zoom_fit_cb, NULL);
284 add_menu_divider(menu_window_view);
286 menu_window_view_edit = gtk_menu_item_new_with_label(_("Edit"));
287 gtk_menu_append(GTK_MENU(menu_window_view), menu_window_view_edit);
288 gtk_widget_show(menu_window_view_edit);
290 add_menu_divider(menu_window_view);
291 add_menu_popup_item(menu_window_view, _("Copy..."), view_copy_cb, NULL);
292 add_menu_popup_item(menu_window_view, _("Move..."), view_move_cb, NULL);
293 add_menu_popup_item(menu_window_view, _("Rename..."), view_rename_cb, NULL);
294 add_menu_popup_item(menu_window_view, _("Delete..."), view_delete_cb, NULL);
296 add_menu_divider(menu_window_view);
297 add_menu_popup_item(menu_window_view, _("Close window"), view_close_cb, NULL);