mirror of https://github.com/GNOME/gimp.git
parent
88e0cc3155
commit
ecfb8a1210
|
@ -1,3 +1,7 @@
|
|||
Sun Oct 24 22:53:17 MEST 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* plug-ins/imagemap/* updated imagemap to version 1.3
|
||||
|
||||
Sun Oct 24 16:49:13 CEST 1999 Marc Lehmann <pcg@goof.com>
|
||||
|
||||
* tools/pdbgen/pdb/drawable.pdb, all calls: fixed some improperly
|
||||
|
|
|
@ -1,20 +1,55 @@
|
|||
Sat Aug 28 16:32:03 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Thu Oct 21 19:58:39 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* release version 1.3
|
||||
|
||||
Sat Oct 9 11:39:14 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_main.c (dialog): removed some obsolete funcs.
|
||||
|
||||
Sun Oct 3 20:25:32 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_grid.c: prepare for i8n
|
||||
|
||||
* imap_polygon.c (polygon_free_list): added
|
||||
(polygon_assign): free list before adding new points
|
||||
|
||||
Sun Sep 26 13:44:15 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_cmd_select_prev.c: created
|
||||
|
||||
* imap_cmd_select_prev.h: created
|
||||
|
||||
* imap_cmd_select_next.c: created
|
||||
|
||||
* imap_cmd_select_next.h: created
|
||||
|
||||
* imap_cmd_object_move.c: created
|
||||
|
||||
* imap_cmd_object_move.h: created
|
||||
|
||||
Wed Sep 8 19:07:19 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_taglist.h: created
|
||||
|
||||
* imap_taglist.c: created
|
||||
|
||||
Sat Aug 28 16:32:03 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* release version 1.2
|
||||
|
||||
Sun Aug 15 16:54:43 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Sun Aug 15 16:54:43 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_cmd_select_region.h: created
|
||||
|
||||
* imap_cmd_move_sash.c: created
|
||||
|
||||
Mon Aug 9 22:33:12 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Mon Aug 9 22:33:12 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_cmd_cut_object.c: created
|
||||
|
||||
* imap_cmd_cut_object.h: created
|
||||
|
||||
Sun Aug 8 12:54:44 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Sun Aug 8 12:54:44 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_cmd_cut.c: created
|
||||
|
||||
|
@ -26,26 +61,26 @@ Sun Aug 8 12:54:44 1999 Maurits Rijk <maurits@frop.edu>
|
|||
|
||||
* imap_object_popup.h: created
|
||||
|
||||
Sat Jul 31 12:34:00 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Sat Jul 31 12:34:00 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_toolbar.c: Added redo and undo button to toolbar.
|
||||
|
||||
Wed Jul 28 22:17:09 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Wed Jul 28 22:17:09 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_object.c (object_on_button_press): fixed 'round to grid' bug
|
||||
for polygons.
|
||||
|
||||
Tue Jul 27 23:19:00 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Tue Jul 27 23:19:00 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_edit_area_info.c: use BrowseWidget_t for URL.
|
||||
|
||||
Mon Jul 26 22:00:58 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Mon Jul 26 22:00:58 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_browse.c: created
|
||||
|
||||
* imap_object.c (object_list_move_selected_up): fixed move up/down bug.
|
||||
|
||||
Mon Jun 28 18:05:24 1999 Maurits Rijk <maurits@frop.edu>
|
||||
Mon Jun 28 18:05:24 1999 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* imap_main.c (dialog): fixed annoying bug
|
||||
|
||||
|
|
|
@ -73,12 +73,16 @@ imagemap_SOURCES = \
|
|||
imap_cmd_move_down.h \
|
||||
imap_cmd_move_sash.c \
|
||||
imap_cmd_move_sash.h \
|
||||
imap_cmd_move_selected.c \
|
||||
imap_cmd_move_selected.h \
|
||||
imap_cmd_move_to_front.c \
|
||||
imap_cmd_move_to_front.h \
|
||||
imap_cmd_move_up.c \
|
||||
imap_cmd_move_up.h \
|
||||
imap_cmd_object_down.c \
|
||||
imap_cmd_object_down.h \
|
||||
imap_cmd_object_move.c \
|
||||
imap_cmd_object_move.h \
|
||||
imap_cmd_object_up.c \
|
||||
imap_cmd_object_up.h \
|
||||
imap_cmd_paste.c \
|
||||
|
@ -87,6 +91,10 @@ imagemap_SOURCES = \
|
|||
imap_cmd_select.h \
|
||||
imap_cmd_select_all.c \
|
||||
imap_cmd_select_all.h \
|
||||
imap_cmd_select_next.c \
|
||||
imap_cmd_select_next.h \
|
||||
imap_cmd_select_prev.c \
|
||||
imap_cmd_select_prev.h \
|
||||
imap_cmd_select_region.c \
|
||||
imap_cmd_select_region.h \
|
||||
imap_cmd_send_to_back.c \
|
||||
|
@ -147,6 +155,8 @@ imagemap_SOURCES = \
|
|||
imap_string.h \
|
||||
imap_table.c \
|
||||
imap_table.h \
|
||||
imap_taglist.c \
|
||||
imap_taglist.h \
|
||||
imap_toolbar.c \
|
||||
imap_toolbar.h \
|
||||
imap_tools.c \
|
||||
|
|
|
@ -1,3 +1,17 @@
|
|||
What's new in GIMP Imagemap plug-in 1.3
|
||||
|
||||
* 'Follow' mode to dynamically update object dimensions.
|
||||
* Added 'Most recently used' and 'Number of Undo levels' to Preferences menu.
|
||||
* Movement of objects with cursor keys (left/right/up/down). Select next/prev
|
||||
object with TAB key.
|
||||
* Double-click in selection brings up Area dialog.
|
||||
* Drop links (e.g. from Netscape) into the selection list updates the URL.
|
||||
* Drop links (e.g. from Netscape) onto an object in the preview window updates
|
||||
the URL.
|
||||
* A few bug fixes.
|
||||
* Lot's of internationalization preparations.
|
||||
* Grid can be dynamically updated when changing grid parameters.
|
||||
|
||||
What's new in GIMP Imagemap plug-in 1.2
|
||||
|
||||
* Implemented Undo/Redo
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
This is the GIMP Imagemap plug-in version 1.2. See the INSTALL file for
|
||||
This is the GIMP Imagemap plug-in version 1.3. See the INSTALL file for
|
||||
build instructions.
|
||||
|
||||
More information can be found on my homepage at
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
Version 1.3
|
||||
|
||||
* 'Follow' mode to dynamically update object dimensions.
|
||||
* Configuration script
|
||||
* Handle double-click in selection
|
||||
* Movement/resizing of objects with cursor keys.
|
||||
* implement dynamically adjustable grid.
|
||||
* Snap to grid during resize.
|
||||
|
||||
Version 1.4
|
||||
|
||||
* Snap to grid during resize.
|
||||
* 'Divider' object.
|
||||
* Move polygon sides.
|
||||
* Gimp style guides.
|
||||
|
@ -16,6 +8,7 @@ Version 1.4
|
|||
Version 1.5
|
||||
|
||||
* Standalone version
|
||||
* Configuration script
|
||||
* Warning icon for area's without URL.
|
||||
* Add HTML 4.0 tags (TABINDEX, ACCESKEY)
|
||||
* User-definable tags
|
||||
|
@ -46,5 +39,9 @@ Miscellaneous
|
|||
* Compare image-name in HTML file with loaded image and issue warning
|
||||
if different.
|
||||
* Restrict to screen size for large images.
|
||||
* Internationalization
|
||||
* Drag & drop within selection
|
||||
* Don't redraw complete polygon while moving a sash.
|
||||
* Compliancy with GIMP 1.1.x:
|
||||
- Use GIMP's 1.1.x new help system
|
||||
- Tear-off menu's
|
||||
- Arrow button with similar action as pop-up in upper left of preview window
|
||||
- Paner widget in lower right of preview window for fast navigation.
|
|
@ -23,21 +23,22 @@
|
|||
|
||||
#include "imap_about.h"
|
||||
#include "imap_default_dialog.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
void
|
||||
do_about_dialog(void)
|
||||
{
|
||||
static DefaultDialog_t *dialog;
|
||||
if (!dialog) {
|
||||
dialog = make_default_dialog("About");
|
||||
dialog = make_default_dialog(_("About"));
|
||||
default_dialog_hide_cancel_button(dialog);
|
||||
default_dialog_hide_apply_button(dialog);
|
||||
default_dialog_set_label(
|
||||
dialog,
|
||||
"Imagemap plug-in 1.2\n\n"
|
||||
"Copyright(c) 1999 by Maurits Rijk\n"
|
||||
"lpeek.mrijk@consunet.nl \n\n"
|
||||
" Released under the GNU General Public License ");
|
||||
_("Imagemap plug-in 1.3\n\n"
|
||||
"Copyright(c) 1999 by Maurits Rijk\n"
|
||||
"lpeek.mrijk@consunet.nl \n\n"
|
||||
" Released under the GNU General Public License "));
|
||||
}
|
||||
default_dialog_show(dialog);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
*/
|
||||
|
||||
#include "imap_browse.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
#include "open.xpm"
|
||||
|
||||
|
@ -88,7 +87,6 @@ browse_widget_new(const gchar *name)
|
|||
GdkPixmap *icon;
|
||||
GdkBitmap *mask;
|
||||
GtkStyle *style;
|
||||
GtkWidget *top = get_top_widget();
|
||||
|
||||
browse->file_selection = NULL;
|
||||
browse->name = name;
|
||||
|
@ -107,10 +105,11 @@ browse_widget_new(const gchar *name)
|
|||
gtk_widget_show(browse->file);
|
||||
|
||||
browse->button = button = gtk_button_new();
|
||||
style = gtk_widget_get_style(top);
|
||||
icon = gdk_pixmap_create_from_xpm_d(top->window, &mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
open_xpm);
|
||||
style = gtk_widget_get_style(button);
|
||||
icon = gdk_pixmap_colormap_create_from_xpm_d(
|
||||
button->window, gtk_widget_get_colormap(button), &mask,
|
||||
&style->bg[GTK_STATE_NORMAL], open_xpm);
|
||||
|
||||
iconw = gtk_pixmap_new(icon, mask);
|
||||
gtk_widget_show(iconw);
|
||||
gtk_container_add(GTK_CONTAINER(button), iconw);
|
||||
|
|
|
@ -216,7 +216,7 @@ static const short yycheck[] = { 3,
|
|||
0, 15, 12, 10, 0, 14, 12, 15
|
||||
};
|
||||
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
|
||||
#line 3 "/usr/lib/bison.simple"
|
||||
#line 3 "bison.simple"
|
||||
|
||||
/* Skeleton output parser for bison,
|
||||
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
|
||||
|
@ -409,7 +409,7 @@ __yy_memcpy (char *to, char *from, int count)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#line 196 "/usr/lib/bison.simple"
|
||||
#line 196 "bison.simple"
|
||||
|
||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||
into yyparse. The argument should have type void *.
|
||||
|
@ -794,7 +794,7 @@ case 22:
|
|||
break;}
|
||||
}
|
||||
/* the action file gets copied in in place of this dollarsign */
|
||||
#line 498 "/usr/lib/bison.simple"
|
||||
#line 498 "bison.simple"
|
||||
|
||||
yyvsp -= yylen;
|
||||
yyssp -= yylen;
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <math.h>
|
||||
|
||||
#include "imap_circle.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_object_popup.h"
|
||||
|
@ -33,7 +34,7 @@
|
|||
|
||||
static gboolean circle_is_valid(Object_t *obj);
|
||||
static Object_t *circle_clone(Object_t *obj);
|
||||
static Object_t *circle_assign(Object_t *obj, Object_t *des);
|
||||
static void circle_assign(Object_t *obj, Object_t *des);
|
||||
static void circle_draw(Object_t* obj, GdkWindow *window, GdkGC* gc);
|
||||
static void circle_draw_sashes(Object_t* obj, GdkWindow *window, GdkGC* gc);
|
||||
static MoveSashFunc_t circle_near_sash(Object_t *obj, gint x, gint y);
|
||||
|
@ -42,7 +43,7 @@ static void circle_get_dimensions(Object_t *obj, gint *x, gint *y,
|
|||
gint *width, gint *height);
|
||||
static void circle_resize(Object_t *obj, gint percentage_x, gint percentage_y);
|
||||
static void circle_move(Object_t *obj, gint dx, gint dy);
|
||||
static gpointer circle_create_info_tab(GtkWidget *notebook);
|
||||
static gpointer circle_create_info_widget(GtkWidget *frame);
|
||||
static void circle_fill_info_tab(Object_t *obj, gpointer data);
|
||||
static void circle_set_initial_focus(Object_t *obj, gpointer data);
|
||||
static void circle_update(Object_t* obj, gpointer data);
|
||||
|
@ -55,6 +56,7 @@ static void circle_write_ncsa(Object_t* obj, gpointer param,
|
|||
static char** circle_get_icon_data(void);
|
||||
|
||||
static ObjectClass_t circle_class = {
|
||||
"Circle",
|
||||
NULL, /* info_dialog */
|
||||
NULL, /* icon */
|
||||
NULL, /* mask */
|
||||
|
@ -71,7 +73,8 @@ static ObjectClass_t circle_class = {
|
|||
circle_get_dimensions,
|
||||
circle_resize,
|
||||
circle_move,
|
||||
circle_create_info_tab,
|
||||
circle_create_info_widget,
|
||||
circle_fill_info_tab, /* circle_update_info_widget */
|
||||
circle_fill_info_tab,
|
||||
circle_set_initial_focus,
|
||||
circle_update,
|
||||
|
@ -110,7 +113,7 @@ circle_clone(Object_t *obj)
|
|||
return &clone->obj;
|
||||
}
|
||||
|
||||
static Object_t*
|
||||
static void
|
||||
circle_assign(Object_t *obj, Object_t *des)
|
||||
{
|
||||
Circle_t *src_circle = ObjectToCircle(obj);
|
||||
|
@ -118,7 +121,6 @@ circle_assign(Object_t *obj, Object_t *des)
|
|||
des_circle->x = src_circle->x;
|
||||
des_circle->y = src_circle->y;
|
||||
des_circle->r = src_circle->r;
|
||||
return object_copy(obj, des);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -206,45 +208,73 @@ circle_move(Object_t *obj, gint dx, gint dy)
|
|||
}
|
||||
|
||||
typedef struct {
|
||||
Object_t *obj;
|
||||
GtkWidget *x;
|
||||
GtkWidget *y;
|
||||
GtkWidget *r;
|
||||
} CircleProperties_t;
|
||||
|
||||
static void
|
||||
x_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((CircleProperties_t*) data)->obj;
|
||||
gint x = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToCircle(obj)->x = x;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
y_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((CircleProperties_t*) data)->obj;
|
||||
gint y = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToCircle(obj)->y = y;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
r_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((CircleProperties_t*) data)->obj;
|
||||
gint r = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToCircle(obj)->r = r;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static gpointer
|
||||
circle_create_info_tab(GtkWidget *notebook)
|
||||
circle_create_info_widget(GtkWidget *frame)
|
||||
{
|
||||
CircleProperties_t *props = g_new(CircleProperties_t, 1);
|
||||
GtkWidget *vbox, *table, *label;
|
||||
GtkWidget *table;
|
||||
gint max_width = get_image_width();
|
||||
gint max_height = get_image_height();
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 1);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
table = gtk_table_new(3, 3, FALSE);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(frame), table);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
|
||||
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
|
||||
gtk_widget_show(table);
|
||||
|
||||
create_label_in_table(table, 0, 0, "Center x:");
|
||||
create_label_in_table(table, 0, 0, _("Center x:"));
|
||||
props->x = create_spin_button_in_table(table, 0, 1, 1, 0, max_width - 1);
|
||||
create_label_in_table(table, 0, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(props->x), "changed",
|
||||
(GtkSignalFunc) x_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 0, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 1, 0, "Center y:");
|
||||
create_label_in_table(table, 1, 0, _("Center y:"));
|
||||
props->y = create_spin_button_in_table(table, 1, 1, 1, 0, max_height - 1);
|
||||
create_label_in_table(table, 1, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(props->y), "changed",
|
||||
(GtkSignalFunc) y_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 1, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 2, 0, "Radius:");
|
||||
create_label_in_table(table, 2, 0, _("Radius:"));
|
||||
props->r = create_spin_button_in_table(table, 2, 1, 1, 1, G_MAXINT);
|
||||
create_label_in_table(table, 2, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(props->r), "changed",
|
||||
(GtkSignalFunc) r_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 2, 2, _("pixels"));
|
||||
|
||||
label = gtk_label_new("Circle");
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
|
||||
|
||||
return props;
|
||||
}
|
||||
|
||||
|
@ -254,6 +284,7 @@ circle_fill_info_tab(Object_t *obj, gpointer data)
|
|||
Circle_t *circle = ObjectToCircle(obj);
|
||||
CircleProperties_t *props = (CircleProperties_t*) data;
|
||||
|
||||
props->obj = obj;
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(props->x), circle->x);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(props->y), circle->y);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(props->r), circle->r);
|
||||
|
|
|
@ -23,9 +23,10 @@
|
|||
|
||||
#include "imap_cmd_clear.h"
|
||||
#include "imap_cmd_delete.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean clear_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t clear_command_execute(Command_t *parent);
|
||||
static void clear_command_undo(Command_t *parent);
|
||||
static void clear_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -46,7 +47,7 @@ clear_command_new(ObjectList_t *list)
|
|||
{
|
||||
ClearCommand_t *command = g_new(ClearCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, "Clear", &clear_command_class);
|
||||
return command_init(&command->parent, _("Clear"), &clear_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -57,7 +58,7 @@ remove_one_object(Object_t *obj, gpointer data)
|
|||
delete_command_new(command->list, obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
clear_command_execute(Command_t *parent)
|
||||
{
|
||||
ClearCommand_t *command = (ClearCommand_t*) parent;
|
||||
|
@ -68,7 +69,7 @@ clear_command_execute(Command_t *parent)
|
|||
object_list_remove_remove_cb(command->list, id);
|
||||
|
||||
redraw_preview(); /* Fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "imap_cmd_copy.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
static gboolean copy_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t copy_command_execute(Command_t *parent);
|
||||
static void copy_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t copy_command_class = {
|
||||
|
@ -46,17 +46,17 @@ copy_command_new(ObjectList_t *list)
|
|||
CopyCommand_t *command = g_new(CopyCommand_t, 1);
|
||||
command->list = list;
|
||||
command->paste_buffer = NULL;
|
||||
return command_init(&command->parent, "Copy", ©_command_class);
|
||||
return command_init(&command->parent, _("Copy"), ©_command_class);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
copy_command_execute(Command_t *parent)
|
||||
{
|
||||
CopyCommand_t *command = (CopyCommand_t*) parent;
|
||||
command->paste_buffer = object_list_copy(command->paste_buffer,
|
||||
get_paste_buffer());
|
||||
object_list_copy_to_paste_buffer(command->list);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,9 +22,10 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_copy_object.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
static void copy_object_command_destruct(Command_t *parent);
|
||||
static gboolean copy_object_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t copy_object_command_execute(Command_t *parent);
|
||||
static void copy_object_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t copy_object_command_class = {
|
||||
|
@ -46,7 +47,8 @@ copy_object_command_new(Object_t *obj)
|
|||
CopyObjectCommand_t *command = g_new(CopyObjectCommand_t, 1);
|
||||
command->obj = object_ref(obj);
|
||||
command->paste_buffer = NULL;
|
||||
return command_init(&command->parent, "Copy", ©_object_command_class);
|
||||
return command_init(&command->parent, _("Copy"),
|
||||
©_object_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -56,7 +58,7 @@ copy_object_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
copy_object_command_execute(Command_t *parent)
|
||||
{
|
||||
CopyObjectCommand_t *command = (CopyObjectCommand_t*) parent;
|
||||
|
@ -67,7 +69,7 @@ copy_object_command_execute(Command_t *parent)
|
|||
clear_paste_buffer();
|
||||
object_list_append(paste_buffer, object_clone(command->obj));
|
||||
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,9 +22,10 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_create.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean create_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t create_command_execute(Command_t *parent);
|
||||
static void create_command_destruct(Command_t *parent);
|
||||
static void create_command_undo(Command_t *parent);
|
||||
|
||||
|
@ -48,7 +49,7 @@ create_command_new(ObjectList_t *list, Object_t *obj)
|
|||
CreateCommand_t *command = g_new(CreateCommand_t, 1);
|
||||
command->list = list;
|
||||
command->obj = object_ref(obj);
|
||||
return command_init(&command->parent, "Create", &create_command_class);
|
||||
return command_init(&command->parent, _("Create"), &create_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -58,14 +59,14 @@ create_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
create_command_execute(Command_t *parent)
|
||||
{
|
||||
CreateCommand_t *command = (CreateCommand_t*) parent;
|
||||
command->changed = object_list_get_changed(command->list);
|
||||
object_list_append(command->list, object_ref(command->obj));
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,10 +23,11 @@
|
|||
|
||||
#include "imap_cmd_delete.h"
|
||||
#include "imap_cmd_cut.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void cut_command_destruct(Command_t *parent);
|
||||
static gboolean cut_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t cut_command_execute(Command_t *parent);
|
||||
static void cut_command_undo(Command_t *parent);
|
||||
static void cut_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -49,7 +50,7 @@ cut_command_new(ObjectList_t *list)
|
|||
CutCommand_t *command = g_new(CutCommand_t, 1);
|
||||
command->list = list;
|
||||
command->paste_buffer = NULL;
|
||||
return command_init(&command->parent, "Cut", &cut_command_class);
|
||||
return command_init(&command->parent, _("Cut"), &cut_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -67,7 +68,7 @@ remove_one_object(Object_t *obj, gpointer data)
|
|||
delete_command_new(command->list, obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
cut_command_execute(Command_t *parent)
|
||||
{
|
||||
CutCommand_t *command = (CutCommand_t*) parent;
|
||||
|
@ -80,7 +81,7 @@ cut_command_execute(Command_t *parent)
|
|||
object_list_remove_remove_cb(command->list, id);
|
||||
|
||||
redraw_preview(); /* Fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -24,9 +24,10 @@
|
|||
#include "imap_cmd_copy_object.h"
|
||||
#include "imap_cmd_cut_object.h"
|
||||
#include "imap_cmd_delete.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean cut_object_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t cut_object_command_execute(Command_t *parent);
|
||||
static void cut_object_command_undo(Command_t *parent);
|
||||
static void cut_object_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -47,19 +48,19 @@ cut_object_command_new(Object_t *obj)
|
|||
CutObjectCommand_t *command = g_new(CutObjectCommand_t, 1);
|
||||
Command_t *parent;
|
||||
|
||||
parent = command_init(&command->parent, "Cut", &cut_object_command_class);
|
||||
|
||||
parent = command_init(&command->parent, _("Cut"),
|
||||
&cut_object_command_class);
|
||||
command_add_subcommand(parent, copy_object_command_new(obj));
|
||||
command_add_subcommand(parent, delete_command_new(obj->list, obj));
|
||||
|
||||
return parent;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
cut_object_command_execute(Command_t *parent)
|
||||
{
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_delete.h"
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void delete_command_destruct(Command_t *parent);
|
||||
static gboolean delete_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t delete_command_execute(Command_t *parent);
|
||||
static void delete_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t delete_command_class = {
|
||||
|
@ -50,7 +50,7 @@ delete_command_new(ObjectList_t *list, Object_t *obj)
|
|||
DeleteCommand_t *command = g_new(DeleteCommand_t, 1);
|
||||
command->list = list;
|
||||
command->obj = object_ref(obj);
|
||||
return command_init(&command->parent, "Delete",
|
||||
return command_init(&command->parent, _("Delete"),
|
||||
&delete_command_class);
|
||||
}
|
||||
|
||||
|
@ -61,14 +61,14 @@ delete_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
delete_command_execute(Command_t *parent)
|
||||
{
|
||||
DeleteCommand_t *command = (DeleteCommand_t*) parent;
|
||||
command->changed = object_list_get_changed(command->list);
|
||||
command->position = object_get_position_in_list(command->obj);
|
||||
object_list_remove(command->list, command->obj);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,10 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_delete_point.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_polygon.h"
|
||||
|
||||
static gboolean delete_point_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t delete_point_command_execute(Command_t *parent);
|
||||
static void delete_point_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t delete_point_command_class = {
|
||||
|
@ -53,11 +54,11 @@ delete_point_command_new(Object_t *obj, GdkPoint *point)
|
|||
command->copy = *point;
|
||||
command->position = g_list_index(command->polygon->points,
|
||||
(gpointer) point);
|
||||
return command_init(&command->parent, "Delete Point",
|
||||
return command_init(&command->parent, _("Delete Point"),
|
||||
&delete_point_command_class);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
delete_point_command_execute(Command_t *parent)
|
||||
{
|
||||
DeletePointCommand_t *command = (DeletePointCommand_t*) parent;
|
||||
|
@ -67,7 +68,7 @@ delete_point_command_execute(Command_t *parent)
|
|||
g_free(p->data);
|
||||
polygon->points = g_list_remove_link(polygon->points, p);
|
||||
redraw_preview(); /* Fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_edit_object.h"
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void edit_object_command_destruct(Command_t *parent);
|
||||
|
@ -47,7 +47,7 @@ edit_object_command_new(Object_t *obj)
|
|||
EditObjectCommand_t *command = g_new(EditObjectCommand_t, 1);
|
||||
command->obj = object_ref(obj);
|
||||
command->copy = object_clone(obj);
|
||||
return command_init(&command->parent, "Edit Object",
|
||||
return command_init(&command->parent, _("Edit Object"),
|
||||
&edit_object_command_class);
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "imap_cmd_create.h"
|
||||
#include "imap_default_dialog.h"
|
||||
#include "imap_cmd_guides.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_rectangle.h"
|
||||
#include "imap_table.h"
|
||||
|
@ -66,7 +67,7 @@ guides_ok_cb(gpointer data)
|
|||
rows = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(param->no_down));
|
||||
cols = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(param->no_across));
|
||||
|
||||
subcommand_start("Create Guides");
|
||||
subcommand_start(_("Create Guides"));
|
||||
y = top;
|
||||
for (i = 0; i < rows; i++) {
|
||||
gint x = left;
|
||||
|
@ -106,7 +107,7 @@ recalc_bounds(GtkWidget *widget, gpointer data)
|
|||
bound_w = (width + hspace) * cols - hspace;
|
||||
bound_h = (height + vspace) * rows - vspace;
|
||||
|
||||
sprintf(bounds, "Resulting Guide Bounds: %d,%d to %d,%d (%d areas)",
|
||||
sprintf(bounds, _("Resulting Guide Bounds: %d,%d to %d,%d (%d areas)"),
|
||||
left, top, left + bound_w, top + bound_h, rows * cols);
|
||||
if (left + bound_w > get_image_width() ||
|
||||
top + bound_h > get_image_height()) {
|
||||
|
@ -130,10 +131,10 @@ make_guides_dialog()
|
|||
default_dialog_set_ok_cb(dialog, guides_ok_cb, data);
|
||||
|
||||
label = gtk_label_new(
|
||||
"Guides are pre-defined rectangles covering the image. You define\n"
|
||||
"them by their width, height, and spacing from each other. This\n"
|
||||
"allows you to rapidly create the most common image map type -\n"
|
||||
"image collection of \"thumbnails\", suitable for navigation bars.");
|
||||
_("Guides are pre-defined rectangles covering the image. You define\n"
|
||||
"them by their width, height, and spacing from each other. This\n"
|
||||
"allows you to rapidly create the most common image map type -\n"
|
||||
"image collection of \"thumbnails\", suitable for navigation bars."));
|
||||
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_set_border_width(
|
||||
GTK_CONTAINER(GTK_DIALOG(dialog->dialog)->vbox), 10);
|
||||
|
@ -158,42 +159,42 @@ make_guides_dialog()
|
|||
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog->dialog)->vbox), table);
|
||||
gtk_widget_show(table);
|
||||
|
||||
create_label_in_table(table, 0, 0, "Width");
|
||||
create_label_in_table(table, 0, 0, _("Width"));
|
||||
data->width = create_spin_button_in_table(table, 0, 1, 32, 1, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->width), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 0, 2, "Left Start at");
|
||||
create_label_in_table(table, 0, 2, _("Left Start at"));
|
||||
data->left = create_spin_button_in_table(table, 0, 3, 0, 0, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->left), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 1, 0, "Height");
|
||||
create_label_in_table(table, 1, 0, _("Height"));
|
||||
data->height = create_spin_button_in_table(table, 1, 1, 32, 1, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->height), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 1, 2, "Top Start at");
|
||||
create_label_in_table(table, 1, 2, _("Top Start at"));
|
||||
data->top = create_spin_button_in_table(table, 1, 3, 0, 0, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->top), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 2, 0, "Horz. Spacing");
|
||||
create_label_in_table(table, 2, 0, _("Horz. Spacing"));
|
||||
data->horz_spacing = create_spin_button_in_table(table, 2, 1, 0, 0, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->horz_spacing), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 2, 2, "No. Across");
|
||||
create_label_in_table(table, 2, 2, _("No. Across"));
|
||||
data->no_across = create_spin_button_in_table(table, 2, 3, 0, 0, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->no_across), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 3, 0, "Vert. Spacing");
|
||||
create_label_in_table(table, 3, 0, _("Vert. Spacing"));
|
||||
data->vert_spacing = create_spin_button_in_table(table, 3, 1, 0, 0, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->vert_spacing), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
||||
create_label_in_table(table, 3, 2, "No. Down");
|
||||
create_label_in_table(table, 3, 2, _("No. Down"));
|
||||
data->no_down = create_spin_button_in_table(table, 3, 3, 0, 0, 100);
|
||||
gtk_signal_connect(GTK_OBJECT(data->no_down), "changed",
|
||||
GTK_SIGNAL_FUNC(recalc_bounds), (gpointer) data);
|
||||
|
@ -218,11 +219,11 @@ init_guides_dialog(GuidesDialog_t *dialog, ObjectList_t *list)
|
|||
char dimension[128];
|
||||
|
||||
dialog->list = list;
|
||||
sprintf(dimension, "Image dimensions: %d x %d", get_image_width(),
|
||||
sprintf(dimension, _("Image dimensions: %d x %d"), get_image_width(),
|
||||
get_image_height());
|
||||
gtk_label_set_text(GTK_LABEL(dialog->image_dimensions), dimension);
|
||||
gtk_label_set_text(GTK_LABEL(dialog->guide_bounds),
|
||||
"Resulting Guide Bounds: 0,0 to 0,0 (0 areas)");
|
||||
_("Resulting Guide Bounds: 0,0 to 0,0 (0 areas)"));
|
||||
gtk_widget_grab_focus(dialog->width);
|
||||
}
|
||||
|
||||
|
@ -238,7 +239,7 @@ do_create_guides_dialog(ObjectList_t *list)
|
|||
default_dialog_show(dialog->dialog);
|
||||
}
|
||||
|
||||
static gboolean guides_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t guides_command_execute(Command_t *parent);
|
||||
|
||||
static CommandClass_t guides_command_class = {
|
||||
NULL, /* guides_command_destruct */
|
||||
|
@ -257,13 +258,13 @@ guides_command_new(ObjectList_t *list)
|
|||
{
|
||||
GuidesCommand_t *command = g_new(GuidesCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, "Guides", &guides_command_class);
|
||||
return command_init(&command->parent, _("Guides"), &guides_command_class);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
guides_command_execute(Command_t *parent)
|
||||
{
|
||||
GuidesCommand_t *command = (GuidesCommand_t*) parent;
|
||||
do_create_guides_dialog(command->list);
|
||||
return FALSE;
|
||||
return CMD_DESTRUCT;
|
||||
}
|
||||
|
|
|
@ -22,10 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_insert_point.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_polygon.h"
|
||||
|
||||
static gboolean insert_point_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t insert_point_command_execute(Command_t *parent);
|
||||
static void insert_point_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t insert_point_command_class = {
|
||||
|
@ -53,11 +54,11 @@ insert_point_command_new(Object_t *obj, gint x, gint y, gint edge)
|
|||
command->x = x;
|
||||
command->y = y;
|
||||
command->edge = edge;
|
||||
return command_init(&command->parent, "Insert Point",
|
||||
return command_init(&command->parent, _("Insert Point"),
|
||||
&insert_point_command_class);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
insert_point_command_execute(Command_t *parent)
|
||||
{
|
||||
InsertPointCommand_t *command = (InsertPointCommand_t*) parent;
|
||||
|
@ -75,7 +76,7 @@ insert_point_command_execute(Command_t *parent)
|
|||
}
|
||||
redraw_preview();
|
||||
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -21,35 +21,63 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "imap_cmd_copy.h"
|
||||
#include "imap_cmd_move.h"
|
||||
#include "imap_cmd_object_move.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void move_command_destruct(Command_t *parent);
|
||||
static gboolean move_command_execute(Command_t *parent);
|
||||
static void move_command_undo(Command_t *parent);
|
||||
static CmdExecuteValue_t move_command_execute(Command_t *parent);
|
||||
|
||||
CommandClass_t move_command_class = {
|
||||
move_command_destruct,
|
||||
move_command_execute,
|
||||
move_command_undo,
|
||||
NULL, /* move_command_undo */
|
||||
NULL /* move_command_redo */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
Command_t parent;
|
||||
PreferencesData_t *preferences;
|
||||
Preview_t *preview;
|
||||
Object_t *obj;
|
||||
gint dx;
|
||||
gint dy;
|
||||
gint start_x;
|
||||
gint start_y;
|
||||
gint obj_start_x;
|
||||
gint obj_start_y;
|
||||
gint obj_x;
|
||||
gint obj_y;
|
||||
gint obj_width;
|
||||
gint obj_height;
|
||||
|
||||
gint image_width;
|
||||
gint image_height;
|
||||
|
||||
GdkCursorType cursor; /* Remember previous cursor */
|
||||
gboolean moved_first_time;
|
||||
} MoveCommand_t;
|
||||
|
||||
Command_t*
|
||||
move_command_new(Object_t *obj, gint dx, gint dy)
|
||||
move_command_new(Preview_t *preview, Object_t *obj, gint x, gint y)
|
||||
{
|
||||
MoveCommand_t *command = g_new(MoveCommand_t, 1);
|
||||
|
||||
command->preferences = get_preferences();
|
||||
command->preview = preview;
|
||||
command->obj = object_ref(obj);
|
||||
command->dx = dx;
|
||||
command->dy = dy;
|
||||
return command_init(&command->parent, "Move", &move_command_class);
|
||||
command->start_x = x;
|
||||
command->start_y = y;
|
||||
object_get_dimensions(obj, &command->obj_x, &command->obj_y,
|
||||
&command->obj_width, &command->obj_height);
|
||||
command->obj_start_x = command->obj_x;
|
||||
command->obj_start_y = command->obj_y;
|
||||
|
||||
command->image_width = get_image_width();
|
||||
command->image_height = get_image_height();
|
||||
|
||||
command->moved_first_time = TRUE;
|
||||
|
||||
return command_init(&command->parent, _("Move"), &move_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -59,20 +87,79 @@ move_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
move_command_execute(Command_t *parent)
|
||||
static void
|
||||
button_motion(GtkWidget *widget, GdkEventMotion *event, gpointer data)
|
||||
{
|
||||
MoveCommand_t *command = (MoveCommand_t*) parent;
|
||||
object_move(command->obj, command->dx, command->dy);
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
MoveCommand_t *command = (MoveCommand_t*) data;
|
||||
Object_t *obj = command->obj;
|
||||
gint dx = get_real_coord((gint) event->x) - command->start_x;
|
||||
gint dy = get_real_coord((gint) event->y) - command->start_y;
|
||||
|
||||
if (command->moved_first_time) {
|
||||
command->moved_first_time = FALSE;
|
||||
command->cursor = preview_set_cursor(command->preview, GDK_FLEUR);
|
||||
gdk_gc_set_function(command->preferences->normal_gc, GDK_EQUIV);
|
||||
gdk_gc_set_function(command->preferences->selected_gc, GDK_EQUIV);
|
||||
hide_url();
|
||||
}
|
||||
|
||||
if (command->obj_x + dx < 0)
|
||||
dx = -command->obj_x;
|
||||
if (command->obj_x + command->obj_width + dx > command->image_width)
|
||||
dx = command->image_width - command->obj_width - command->obj_x;
|
||||
if (command->obj_y + dy < 0)
|
||||
dy = -command->obj_y;
|
||||
if (command->obj_y + command->obj_height + dy > command->image_height)
|
||||
dy = command->image_height - command->obj_height - command->obj_y;
|
||||
|
||||
if (dx || dy) {
|
||||
command->start_x = get_real_coord((gint) event->x);
|
||||
command->start_y = get_real_coord((gint) event->y);
|
||||
command->obj_x += dx;
|
||||
command->obj_y += dy;
|
||||
|
||||
object_draw(obj, widget->window);
|
||||
object_move(obj, dx, dy);
|
||||
object_draw(obj, widget->window);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
move_command_undo(Command_t *parent)
|
||||
button_release(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
||||
{
|
||||
MoveCommand_t *command = (MoveCommand_t*) parent;
|
||||
object_move(command->obj, -command->dx, -command->dy);
|
||||
redraw_preview(); /* fix me! */
|
||||
MoveCommand_t *command = (MoveCommand_t*) data;
|
||||
|
||||
gtk_signal_disconnect_by_func(GTK_OBJECT(widget),
|
||||
(GtkSignalFunc) button_motion, data);
|
||||
gtk_signal_disconnect_by_func(GTK_OBJECT(widget),
|
||||
(GtkSignalFunc) button_release, data);
|
||||
|
||||
if (!command->moved_first_time) {
|
||||
preview_set_cursor(command->preview, command->cursor);
|
||||
gdk_gc_set_function(command->preferences->normal_gc, GDK_COPY);
|
||||
gdk_gc_set_function(command->preferences->selected_gc, GDK_COPY);
|
||||
show_url();
|
||||
}
|
||||
command->obj_x -= command->obj_start_x;
|
||||
command->obj_y -= command->obj_start_y;
|
||||
if (command->obj_x || command->obj_y)
|
||||
command_list_add(object_move_command_new(command->obj, command->obj_x,
|
||||
command->obj_y));
|
||||
|
||||
preview_thaw();
|
||||
}
|
||||
|
||||
static CmdExecuteValue_t
|
||||
move_command_execute(Command_t *parent)
|
||||
{
|
||||
MoveCommand_t *command = (MoveCommand_t*) parent;
|
||||
GtkWidget *widget = command->preview->preview;
|
||||
|
||||
preview_freeze();
|
||||
gtk_signal_connect(GTK_OBJECT(widget), "button_release_event",
|
||||
(GtkSignalFunc) button_release, command);
|
||||
gtk_signal_connect(GTK_OBJECT(widget), "motion_notify_event",
|
||||
(GtkSignalFunc) button_motion, command);
|
||||
return CMD_DESTRUCT;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
|
||||
#include "imap_command.h"
|
||||
#include "imap_object.h"
|
||||
#include "imap_preview.h"
|
||||
|
||||
Command_t *move_command_new(Object_t *obj, gint x, gint y);
|
||||
Command_t *move_command_new(Preview_t *preview, Object_t *obj, gint x, gint y);
|
||||
|
||||
#endif /* _IMAP_CMD_MOVE_H */
|
||||
|
|
|
@ -23,9 +23,10 @@
|
|||
|
||||
#include "imap_cmd_copy.h"
|
||||
#include "imap_cmd_object_down.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean move_down_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t move_down_command_execute(Command_t *parent);
|
||||
static void move_down_command_undo(Command_t *parent);
|
||||
static void move_down_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -48,7 +49,7 @@ move_down_command_new(ObjectList_t *list)
|
|||
MoveDownCommand_t *command = g_new(MoveDownCommand_t, 1);
|
||||
command->list = list;
|
||||
command->add = FALSE;
|
||||
return command_init(&command->parent, "Move Down",
|
||||
return command_init(&command->parent, _("Move Down"),
|
||||
&move_down_command_class);
|
||||
}
|
||||
|
||||
|
@ -67,7 +68,7 @@ move_down_one_object(Object_t *obj, gpointer data)
|
|||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
move_down_command_execute(Command_t *parent)
|
||||
{
|
||||
MoveDownCommand_t *command = (MoveDownCommand_t*) parent;
|
||||
|
@ -78,7 +79,7 @@ move_down_command_execute(Command_t *parent)
|
|||
object_list_remove_move_cb(command->list, id);
|
||||
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include "imap_cmd_copy.h"
|
||||
#include "imap_cmd_edit_object.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
COMMAND_PROTO(move_sash_command);
|
||||
|
@ -60,7 +61,7 @@ move_sash_command_new(GtkWidget *widget, Object_t *obj,
|
|||
command->image_height = get_image_height();
|
||||
command->sash_func = sash_func;
|
||||
|
||||
parent = command_init(&command->parent, "Move Sash",
|
||||
parent = command_init(&command->parent, _("Move Sash"),
|
||||
&move_sash_command_class);
|
||||
command_add_subcommand(parent, edit_object_command_new(obj));
|
||||
|
||||
|
@ -105,6 +106,7 @@ sash_move(GtkWidget *widget, GdkEventMotion *event, gpointer data)
|
|||
|
||||
object_draw(obj, widget->window);
|
||||
command->sash_func(obj, dx, dy);
|
||||
object_emit_geometry_signal(obj);
|
||||
object_draw(obj, widget->window);
|
||||
}
|
||||
|
||||
|
@ -121,23 +123,25 @@ sash_end(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
|||
if (obj->class->normalize)
|
||||
object_normalize(obj);
|
||||
gdk_gc_set_function(get_preferences()->selected_gc, GDK_COPY);
|
||||
redraw_preview();
|
||||
/* redraw_preview(); */
|
||||
preview_thaw();
|
||||
show_url();
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
move_sash_command_execute(Command_t *parent)
|
||||
{
|
||||
MoveSashCommand_t *command = (MoveSashCommand_t*) parent;
|
||||
|
||||
hide_url();
|
||||
preview_freeze();
|
||||
gtk_signal_connect(GTK_OBJECT(command->widget), "button_release_event",
|
||||
(GtkSignalFunc) sash_end, command);
|
||||
gtk_signal_connect(GTK_OBJECT(command->widget), "motion_notify_event",
|
||||
(GtkSignalFunc) sash_move, command);
|
||||
gdk_gc_set_function(get_preferences()->selected_gc, GDK_EQUIV);
|
||||
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "imap_cmd_move_selected.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static CmdExecuteValue_t move_selected_command_execute(Command_t *parent);
|
||||
static void move_selected_command_undo(Command_t *parent);
|
||||
|
||||
CommandClass_t move_selected_command_class = {
|
||||
NULL, /* move_selected_command_destruct */
|
||||
move_selected_command_execute,
|
||||
move_selected_command_undo,
|
||||
NULL /* move_selected_command_redo */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
Command_t parent;
|
||||
ObjectList_t *list;
|
||||
gint dx;
|
||||
gint dy;
|
||||
} MoveSelectedCommand_t;
|
||||
|
||||
Command_t*
|
||||
move_selected_command_new(ObjectList_t *list, gint dx, gint dy)
|
||||
{
|
||||
MoveSelectedCommand_t *command = g_new(MoveSelectedCommand_t, 1);
|
||||
command->list = list;
|
||||
command->dx = dx;
|
||||
command->dy = dy;
|
||||
return command_init(&command->parent, _("Move Selected Objects"),
|
||||
&move_selected_command_class);
|
||||
}
|
||||
|
||||
static CmdExecuteValue_t
|
||||
move_selected_command_execute(Command_t *parent)
|
||||
{
|
||||
MoveSelectedCommand_t *command = (MoveSelectedCommand_t*) parent;
|
||||
object_list_move_selected(command->list, command->dx, command->dy);
|
||||
#ifdef _OLD_
|
||||
redraw_preview(); /* fix me! */
|
||||
#endif
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
move_selected_command_undo(Command_t *parent)
|
||||
{
|
||||
MoveSelectedCommand_t *command = (MoveSelectedCommand_t*) parent;
|
||||
object_list_move_selected(command->list, -command->dx, -command->dy);
|
||||
#ifdef _OLD_
|
||||
redraw_preview(); /* fix me! */
|
||||
#endif
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _IMAP_CMD_MOVE_SELECTED_H
|
||||
#define _IMAP_CMD_MOVE_SELECTED_H
|
||||
|
||||
#include "imap_command.h"
|
||||
#include "imap_object.h"
|
||||
|
||||
Command_t *move_selected_command_new(ObjectList_t *list, gint dx, gint dy);
|
||||
|
||||
#endif /* _IMAP_CMD_MOVE_SELECTED_H */
|
|
@ -26,7 +26,7 @@
|
|||
#include "imap_cmd_move_to_front.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean move_to_front_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t move_to_front_command_execute(Command_t *parent);
|
||||
static void move_to_front_command_undo(Command_t *parent);
|
||||
static void move_to_front_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -67,7 +67,7 @@ add_one_object(Object_t *obj, gpointer data)
|
|||
create_command_new(command->list, obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
move_to_front_command_execute(Command_t *parent)
|
||||
{
|
||||
MoveToFrontCommand_t *command = (MoveToFrontCommand_t*) parent;
|
||||
|
@ -80,7 +80,7 @@ move_to_front_command_execute(Command_t *parent)
|
|||
redraw_preview(); /* Fix me! */
|
||||
object_list_remove_remove_cb(command->list, id1);
|
||||
object_list_remove_add_cb(command->list, id2);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,9 +23,10 @@
|
|||
|
||||
#include "imap_cmd_move_up.h"
|
||||
#include "imap_cmd_object_up.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean move_up_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t move_up_command_execute(Command_t *parent);
|
||||
static void move_up_command_undo(Command_t *parent);
|
||||
static void move_up_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -48,7 +49,7 @@ move_up_command_new(ObjectList_t *list)
|
|||
MoveUpCommand_t *command = g_new(MoveUpCommand_t, 1);
|
||||
command->list = list;
|
||||
command->add = FALSE;
|
||||
return command_init(&command->parent, "Move Up", &move_up_command_class);
|
||||
return command_init(&command->parent, _("Move Up"), &move_up_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -66,7 +67,7 @@ move_up_one_object(Object_t *obj, gpointer data)
|
|||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
move_up_command_execute(Command_t *parent)
|
||||
{
|
||||
MoveUpCommand_t *command = (MoveUpCommand_t*) parent;
|
||||
|
@ -77,7 +78,7 @@ move_up_command_execute(Command_t *parent)
|
|||
object_list_remove_move_cb(command->list, id);
|
||||
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,10 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_copy.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void object_down_command_destruct(Command_t *parent);
|
||||
static gboolean object_down_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t object_down_command_execute(Command_t *parent);
|
||||
static void object_down_command_undo(Command_t *parent);
|
||||
|
||||
CommandClass_t object_down_command_class = {
|
||||
|
@ -47,7 +48,7 @@ object_down_command_new(ObjectList_t *list, Object_t *obj)
|
|||
ObjectDownCommand_t *command = g_new(ObjectDownCommand_t, 1);
|
||||
command->list = list;
|
||||
command->obj = object_ref(obj);
|
||||
return command_init(&command->parent, "Move Down",
|
||||
return command_init(&command->parent, _("Move Down"),
|
||||
&object_down_command_class);
|
||||
}
|
||||
|
||||
|
@ -58,13 +59,13 @@ object_down_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
object_down_command_execute(Command_t *parent)
|
||||
{
|
||||
ObjectDownCommand_t *command = (ObjectDownCommand_t*) parent;
|
||||
object_list_move_down(command->list, command->obj);
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "imap_cmd_object_move.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void object_move_command_destruct(Command_t *parent);
|
||||
static CmdExecuteValue_t object_move_command_execute(Command_t *parent);
|
||||
static void object_move_command_undo(Command_t *parent);
|
||||
|
||||
CommandClass_t object_move_command_class = {
|
||||
object_move_command_destruct,
|
||||
object_move_command_execute,
|
||||
object_move_command_undo,
|
||||
NULL /* object_move_command_redo */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
Command_t parent;
|
||||
Object_t *obj;
|
||||
gint dx;
|
||||
gint dy;
|
||||
} ObjectMoveCommand_t;
|
||||
|
||||
Command_t*
|
||||
object_move_command_new(Object_t *obj, gint dx, gint dy)
|
||||
{
|
||||
ObjectMoveCommand_t *command = g_new(ObjectMoveCommand_t, 1);
|
||||
command->obj = object_ref(obj);
|
||||
command->dx = dx;
|
||||
command->dy = dy;
|
||||
return command_init(&command->parent, _("Move"),
|
||||
&object_move_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
object_move_command_destruct(Command_t *parent)
|
||||
{
|
||||
ObjectMoveCommand_t *command = (ObjectMoveCommand_t*) parent;
|
||||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static CmdExecuteValue_t
|
||||
object_move_command_execute(Command_t *parent)
|
||||
{
|
||||
ObjectMoveCommand_t *command = (ObjectMoveCommand_t*) parent;
|
||||
object_move(command->obj, command->dx, command->dy);
|
||||
#ifdef _OLD_
|
||||
redraw_preview(); /* fix me! */
|
||||
#endif
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
object_move_command_undo(Command_t *parent)
|
||||
{
|
||||
ObjectMoveCommand_t *command = (ObjectMoveCommand_t*) parent;
|
||||
object_move(command->obj, -command->dx, -command->dy);
|
||||
#ifdef _OLD_
|
||||
redraw_preview(); /* fix me! */
|
||||
#endif
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _IMAP_CMD_OBJECT_MOVE_H
|
||||
#define _IMAP_CMD_OBJECT_MOVE_H
|
||||
|
||||
#include "imap_command.h"
|
||||
#include "imap_object.h"
|
||||
|
||||
Command_t *object_move_command_new(Object_t *obj, gint x, gint y);
|
||||
|
||||
#endif /* _IMAP_CMD_OBJECT_MOVE_H */
|
|
@ -22,10 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_copy.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void object_up_command_destruct(Command_t *parent);
|
||||
static gboolean object_up_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t object_up_command_execute(Command_t *parent);
|
||||
static void object_up_command_undo(Command_t *parent);
|
||||
|
||||
CommandClass_t object_up_command_class = {
|
||||
|
@ -47,7 +48,7 @@ object_up_command_new(ObjectList_t *list, Object_t *obj)
|
|||
ObjectUpCommand_t *command = g_new(ObjectUpCommand_t, 1);
|
||||
command->list = list;
|
||||
command->obj = object_ref(obj);
|
||||
return command_init(&command->parent, "Move Up",
|
||||
return command_init(&command->parent, _("Move Up"),
|
||||
&object_up_command_class);
|
||||
}
|
||||
|
||||
|
@ -58,13 +59,13 @@ object_up_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
object_up_command_execute(Command_t *parent)
|
||||
{
|
||||
ObjectUpCommand_t *command = (ObjectUpCommand_t*) parent;
|
||||
object_list_move_up(command->list, command->obj);
|
||||
redraw_preview(); /* fix me! */
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,9 +23,10 @@
|
|||
|
||||
#include "imap_cmd_create.h"
|
||||
#include "imap_cmd_paste.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean paste_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t paste_command_execute(Command_t *parent);
|
||||
|
||||
static CommandClass_t paste_command_class = {
|
||||
NULL, /* paste_command_destruct, */
|
||||
|
@ -44,7 +45,7 @@ paste_command_new(ObjectList_t *list)
|
|||
{
|
||||
PasteCommand_t *command = g_new(PasteCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, "Paste", &paste_command_class);
|
||||
return command_init(&command->parent, _("Paste"), &paste_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -55,7 +56,7 @@ paste_one_object(Object_t *obj, gpointer data)
|
|||
create_command_new(command->list, obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
paste_command_execute(Command_t *parent)
|
||||
{
|
||||
PasteCommand_t *command = (PasteCommand_t*) parent;
|
||||
|
@ -65,7 +66,7 @@ paste_command_execute(Command_t *parent)
|
|||
object_list_paste(command->list);
|
||||
redraw_preview(); /* Fix me! */
|
||||
object_list_remove_add_cb(command->list, id);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_select.h"
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void select_command_destruct(Command_t *parent);
|
||||
static gboolean select_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t select_command_execute(Command_t *parent);
|
||||
static void select_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t select_command_class = {
|
||||
|
@ -46,7 +46,7 @@ select_command_new(Object_t *obj)
|
|||
{
|
||||
SelectCommand_t *command = g_new(SelectCommand_t, 1);
|
||||
command->obj = object_ref(obj);
|
||||
return command_init(&command->parent, "Select", &select_command_class);
|
||||
return command_init(&command->parent, _("Select"), &select_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -56,12 +56,12 @@ select_command_destruct(Command_t *parent)
|
|||
object_unref(command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
select_command_execute(Command_t *parent)
|
||||
{
|
||||
SelectCommand_t *command = (SelectCommand_t*) parent;
|
||||
object_select(command->obj);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,9 +23,10 @@
|
|||
|
||||
#include "imap_cmd_select.h"
|
||||
#include "imap_cmd_select_all.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean select_all_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t select_all_command_execute(Command_t *parent);
|
||||
static void select_all_command_undo(Command_t *parent);
|
||||
static void select_all_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -46,7 +47,7 @@ select_all_command_new(ObjectList_t *list)
|
|||
{
|
||||
SelectAllCommand_t *command = g_new(SelectAllCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, "Select All",
|
||||
return command_init(&command->parent, _("Select All"),
|
||||
&select_all_command_class);
|
||||
}
|
||||
|
||||
|
@ -57,20 +58,20 @@ select_one_object(Object_t *obj, gpointer data)
|
|||
command_add_subcommand(&command->parent, select_command_new(obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
select_all_command_execute(Command_t *parent)
|
||||
{
|
||||
SelectAllCommand_t *command = (SelectAllCommand_t*) parent;
|
||||
gpointer id;
|
||||
gboolean rvalue;
|
||||
CmdExecuteValue_t rvalue;
|
||||
|
||||
id = object_list_add_select_cb(command->list, select_one_object, command);
|
||||
|
||||
if (object_list_select_all(command->list)) {
|
||||
redraw_preview(); /* Fix me! */
|
||||
rvalue = TRUE;
|
||||
rvalue = CMD_APPEND;
|
||||
} else {
|
||||
rvalue = FALSE;
|
||||
rvalue = CMD_DESTRUCT;
|
||||
}
|
||||
object_list_remove_select_cb(command->list, id);
|
||||
return rvalue;
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "imap_cmd_select.h"
|
||||
#include "imap_cmd_select_next.h"
|
||||
#include "imap_cmd_unselect.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static CmdExecuteValue_t select_next_command_execute(Command_t *parent);
|
||||
static void select_next_command_undo(Command_t *command);
|
||||
static void select_next_command_redo(Command_t *command);
|
||||
|
||||
static CommandClass_t select_next_command_class = {
|
||||
NULL, /* select_next_command_destruct */
|
||||
select_next_command_execute,
|
||||
select_next_command_undo,
|
||||
select_next_command_redo
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
Command_t parent;
|
||||
ObjectList_t *list;
|
||||
} SelectNextCommand_t;
|
||||
|
||||
Command_t*
|
||||
select_next_command_new(ObjectList_t *list)
|
||||
{
|
||||
SelectNextCommand_t *command = g_new(SelectNextCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, _("Select Next"),
|
||||
&select_next_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
select_one_object(Object_t *obj, gpointer data)
|
||||
{
|
||||
SelectNextCommand_t *command = (SelectNextCommand_t*) data;
|
||||
Command_t *sub_command;
|
||||
|
||||
sub_command = (obj->selected)
|
||||
? select_command_new(obj) : unselect_command_new(obj);
|
||||
command_add_subcommand(&command->parent, sub_command);
|
||||
}
|
||||
|
||||
static CmdExecuteValue_t
|
||||
select_next_command_execute(Command_t *parent)
|
||||
{
|
||||
SelectNextCommand_t *command = (SelectNextCommand_t*) parent;
|
||||
ObjectList_t *list = command->list;
|
||||
gpointer id;
|
||||
|
||||
id = object_list_add_select_cb(list, select_one_object, command);
|
||||
object_list_select_next(list);
|
||||
object_list_remove_select_cb(list, id);
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
select_next_command_undo(Command_t *command)
|
||||
{
|
||||
redraw_preview(); /* Fix me! */
|
||||
}
|
||||
|
||||
static void
|
||||
select_next_command_redo(Command_t *command)
|
||||
{
|
||||
redraw_preview(); /* Fix me! */
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _IMAP_CMD_SELECT_NEXT_H
|
||||
#define _IMAP_CMD_SELECT_NEXT_H
|
||||
|
||||
#include "imap_command.h"
|
||||
#include "imap_object.h"
|
||||
|
||||
Command_t *select_next_command_new(ObjectList_t *list);
|
||||
|
||||
#endif /* _IMAP_CMD_SELECT_NEXT_H */
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "imap_cmd_select.h"
|
||||
#include "imap_cmd_select_prev.h"
|
||||
#include "imap_cmd_unselect.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static CmdExecuteValue_t select_prev_command_execute(Command_t *parent);
|
||||
static void select_prev_command_undo(Command_t *command);
|
||||
static void select_prev_command_redo(Command_t *command);
|
||||
|
||||
static CommandClass_t select_prev_command_class = {
|
||||
NULL, /* select_prev_command_destruct */
|
||||
select_prev_command_execute,
|
||||
select_prev_command_undo,
|
||||
select_prev_command_redo
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
Command_t parent;
|
||||
ObjectList_t *list;
|
||||
} SelectPrevCommand_t;
|
||||
|
||||
Command_t*
|
||||
select_prev_command_new(ObjectList_t *list)
|
||||
{
|
||||
SelectPrevCommand_t *command = g_new(SelectPrevCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, "Select Previous",
|
||||
&select_prev_command_class);
|
||||
}
|
||||
|
||||
static void
|
||||
select_one_object(Object_t *obj, gpointer data)
|
||||
{
|
||||
SelectPrevCommand_t *command = (SelectPrevCommand_t*) data;
|
||||
Command_t *sub_command;
|
||||
|
||||
sub_command = (obj->selected)
|
||||
? select_command_new(obj) : unselect_command_new(obj);
|
||||
command_add_subcommand(&command->parent, sub_command);
|
||||
}
|
||||
|
||||
static CmdExecuteValue_t
|
||||
select_prev_command_execute(Command_t *parent)
|
||||
{
|
||||
SelectPrevCommand_t *command = (SelectPrevCommand_t*) parent;
|
||||
ObjectList_t *list = command->list;
|
||||
gpointer id;
|
||||
|
||||
id = object_list_add_select_cb(list, select_one_object, command);
|
||||
object_list_select_prev(list);
|
||||
object_list_remove_select_cb(list, id);
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
select_prev_command_undo(Command_t *command)
|
||||
{
|
||||
redraw_preview(); /* Fix me! */
|
||||
}
|
||||
|
||||
static void
|
||||
select_prev_command_redo(Command_t *command)
|
||||
{
|
||||
redraw_preview(); /* Fix me! */
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _IMAP_CMD_SELECT_PREV_H
|
||||
#define _IMAP_CMD_SELECT_PREV_H
|
||||
|
||||
#include "imap_command.h"
|
||||
#include "imap_object.h"
|
||||
|
||||
Command_t *select_prev_command_new(ObjectList_t *list);
|
||||
|
||||
#endif /* _IMAP_CMD_SELECT_PREV_H */
|
|
@ -25,9 +25,10 @@
|
|||
#include "imap_cmd_select.h"
|
||||
#include "imap_cmd_select_region.h"
|
||||
#include "imap_cmd_unselect_all.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean select_region_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t select_region_command_execute(Command_t *parent);
|
||||
static void select_region_command_undo(Command_t *parent);
|
||||
static void select_region_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -45,6 +46,7 @@ typedef struct {
|
|||
gint x;
|
||||
gint y;
|
||||
Object_t *obj;
|
||||
Command_t *unselect_command;
|
||||
} SelectRegionCommand_t;
|
||||
|
||||
Command_t*
|
||||
|
@ -58,11 +60,12 @@ select_region_command_new(GtkWidget *widget, ObjectList_t *list, gint x,
|
|||
command->list = list;
|
||||
command->x = x;
|
||||
command->y = y;
|
||||
(void) command_init(&command->parent, "Select Region",
|
||||
(void) command_init(&command->parent, _("Select Region"),
|
||||
&select_region_command_class);
|
||||
|
||||
sub_command = unselect_all_command_new(list, NULL);
|
||||
command_add_subcommand(&command->parent, sub_command);
|
||||
command->unselect_command = sub_command;
|
||||
|
||||
return &command->parent;
|
||||
}
|
||||
|
@ -96,6 +99,7 @@ select_release(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
|||
Object_t *obj = command->obj;
|
||||
Rectangle_t *rectangle = ObjectToRectangle(obj);
|
||||
gpointer id;
|
||||
gint count;
|
||||
|
||||
gtk_signal_disconnect_by_func(GTK_OBJECT(widget),
|
||||
(GtkSignalFunc) select_motion, data);
|
||||
|
@ -107,19 +111,24 @@ select_release(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
|||
gdk_gc_set_function(get_preferences()->normal_gc, GDK_COPY);
|
||||
|
||||
id = object_list_add_select_cb(command->list, select_one_object, command);
|
||||
if (object_list_select_region(command->list, rectangle->x, rectangle->y,
|
||||
rectangle->width, rectangle->height))
|
||||
redraw_preview();
|
||||
count = object_list_select_region(command->list, rectangle->x, rectangle->y,
|
||||
rectangle->width, rectangle->height);
|
||||
object_list_remove_select_cb(command->list, id);
|
||||
|
||||
if (count) {
|
||||
redraw_preview(); /* Fix me! */
|
||||
command_list_add(&command->parent);
|
||||
} else { /* Nothing selected */
|
||||
if (command->unselect_command->sub_commands)
|
||||
command_list_add(&command->parent);
|
||||
}
|
||||
object_unref(obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
select_region_command_execute(Command_t *parent)
|
||||
{
|
||||
SelectRegionCommand_t *command = (SelectRegionCommand_t*) parent;
|
||||
/* Command_t *sub_command; */
|
||||
|
||||
command->obj = create_rectangle(command->x, command->y, 0, 0);
|
||||
gtk_signal_connect(GTK_OBJECT(command->widget), "button_release_event",
|
||||
|
@ -127,14 +136,9 @@ select_region_command_execute(Command_t *parent)
|
|||
gtk_signal_connect(GTK_OBJECT(command->widget), "motion_notify_event",
|
||||
(GtkSignalFunc) select_motion, command);
|
||||
|
||||
#ifdef _OLD_
|
||||
sub_command = unselect_all_command_new(command->list, NULL);
|
||||
command_add_subcommand(parent, sub_command);
|
||||
command_execute(sub_command);
|
||||
#endif
|
||||
gdk_gc_set_function(get_preferences()->normal_gc, GDK_EQUIV);
|
||||
|
||||
return TRUE;
|
||||
return CMD_IGNORE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -24,9 +24,10 @@
|
|||
#include "imap_cmd_create.h"
|
||||
#include "imap_cmd_delete.h"
|
||||
#include "imap_cmd_send_to_back.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static gboolean send_to_back_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t send_to_back_command_execute(Command_t *parent);
|
||||
static void send_to_back_command_undo(Command_t *parent);
|
||||
static void send_to_back_command_redo(Command_t *parent);
|
||||
|
||||
|
@ -47,7 +48,7 @@ send_to_back_command_new(ObjectList_t *list)
|
|||
{
|
||||
SendToBackCommand_t *command = g_new(SendToBackCommand_t, 1);
|
||||
command->list = list;
|
||||
return command_init(&command->parent, "Send To Back",
|
||||
return command_init(&command->parent, _("Send To Back"),
|
||||
&send_to_back_command_class);
|
||||
}
|
||||
|
||||
|
@ -67,7 +68,7 @@ add_one_object(Object_t *obj, gpointer data)
|
|||
create_command_new(command->list, obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
send_to_back_command_execute(Command_t *parent)
|
||||
{
|
||||
SendToBackCommand_t *command = (SendToBackCommand_t*) parent;
|
||||
|
@ -80,7 +81,7 @@ send_to_back_command_execute(Command_t *parent)
|
|||
redraw_preview(); /* Fix me! */
|
||||
object_list_remove_remove_cb(command->list, id1);
|
||||
object_list_remove_add_cb(command->list, id2);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
*/
|
||||
|
||||
#include "imap_cmd_unselect.h"
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
static void unselect_command_destruct(Command_t *parent);
|
||||
static gboolean unselect_command_execute(Command_t *parent);
|
||||
static CmdExecuteValue_t unselect_command_execute(Command_t *parent);
|
||||
static void unselect_command_undo(Command_t *parent);
|
||||
|
||||
static CommandClass_t unselect_command_class = {
|
||||
|
@ -46,7 +46,7 @@ unselect_command_new(Object_t *obj)
|
|||
{
|
||||
UnselectCommand_t *command = g_new(UnselectCommand_t, 1);
|
||||
command->obj = object_ref(obj);
|
||||
return command_init(&command->parent, "Unselect",
|
||||
return command_init(&command->parent, _("Unselect"),
|
||||
&unselect_command_class);
|
||||
}
|
||||
|
||||
|
@ -57,12 +57,12 @@ unselect_command_destruct(Command_t *command)
|
|||
object_unref(unselect_command->obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
unselect_command_execute(Command_t *command)
|
||||
{
|
||||
UnselectCommand_t *unselect_command = (UnselectCommand_t*) command;
|
||||
object_unselect(unselect_command->obj);
|
||||
return TRUE;
|
||||
return CMD_APPEND;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include "imap_cmd_unselect.h"
|
||||
#include "imap_cmd_unselect_all.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
|
||||
COMMAND_PROTO(unselect_all_command);
|
||||
|
@ -46,7 +47,7 @@ unselect_all_command_new(ObjectList_t *list, Object_t *exception)
|
|||
UnselectAllCommand_t *command = g_new(UnselectAllCommand_t, 1);
|
||||
command->list = list;
|
||||
command->exception = (exception) ? object_ref(exception) : exception;
|
||||
return command_init(&command->parent, "Unselect All",
|
||||
return command_init(&command->parent, _("Unselect All"),
|
||||
&unselect_all_command_class);
|
||||
}
|
||||
|
||||
|
@ -65,20 +66,20 @@ select_one_object(Object_t *obj, gpointer data)
|
|||
command_add_subcommand(&command->parent, unselect_command_new(obj));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
unselect_all_command_execute(Command_t *parent)
|
||||
{
|
||||
UnselectAllCommand_t *command = (UnselectAllCommand_t*) parent;
|
||||
gpointer id;
|
||||
gboolean rvalue;
|
||||
CmdExecuteValue_t rvalue;
|
||||
|
||||
id = object_list_add_select_cb(command->list, select_one_object,
|
||||
command);
|
||||
if (object_list_deselect_all(command->list, command->exception)) {
|
||||
redraw_preview(); /* Fix me! */
|
||||
rvalue = TRUE;
|
||||
rvalue = CMD_APPEND;
|
||||
} else {
|
||||
rvalue = FALSE;
|
||||
rvalue = CMD_DESTRUCT;
|
||||
}
|
||||
object_list_remove_select_cb(command->list, id);
|
||||
return rvalue;
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include <stdio.h>
|
||||
#include "imap_command.h"
|
||||
|
||||
#define DEFAULT_UNDO_LEVELS 10
|
||||
#define INFINITE_UNDO_LEVELS -1
|
||||
|
||||
static void command_destruct(Command_t *command);
|
||||
|
@ -169,10 +168,38 @@ subcommand_end(void)
|
|||
command_list_end(_current_command_list);
|
||||
}
|
||||
|
||||
static void
|
||||
_command_list_set_undo_level(CommandList_t *list, gint level)
|
||||
{
|
||||
gint diff = g_list_length(list->list) - level;
|
||||
if (diff > 0) {
|
||||
GList *p, *q;
|
||||
/* first remove data at the front */
|
||||
for (p = list->list; diff && p != list->undo; p = q, diff--) {
|
||||
Command_t *curr = (Command_t*) p->data;
|
||||
q = p->next;
|
||||
command_destruct(curr);
|
||||
list->list = g_list_remove_link(list->list, p);
|
||||
}
|
||||
|
||||
/* If still to long start removing redo levels at the end */
|
||||
for (p = g_list_last(list->list); diff && p != list->undo; p = q,
|
||||
diff--) {
|
||||
Command_t *curr = (Command_t*) p->data;
|
||||
q = p->prev;
|
||||
command_destruct(curr);
|
||||
list->list = g_list_remove_link(list->list, p);
|
||||
}
|
||||
command_list_callback_call(&list->update_cb,
|
||||
(Command_t*) list->undo->data);
|
||||
}
|
||||
list->undo_levels = level;
|
||||
}
|
||||
|
||||
void
|
||||
command_list_set_undo_level(gint level)
|
||||
{
|
||||
/* Fix me */
|
||||
_command_list_set_undo_level(&_command_list, level);
|
||||
}
|
||||
|
||||
Command_t*
|
||||
|
@ -219,9 +246,10 @@ command_execute(Command_t *command)
|
|||
if (command->sub_commands)
|
||||
command_list_execute(command->sub_commands);
|
||||
if (command->class->execute) {
|
||||
if (command->class->execute(command))
|
||||
CmdExecuteValue_t value = command->class->execute(command);
|
||||
if (value == CMD_APPEND)
|
||||
command_list_add(command);
|
||||
else
|
||||
else if (value == CMD_DESTRUCT)
|
||||
command_destruct(command);
|
||||
}
|
||||
}
|
||||
|
@ -324,7 +352,7 @@ command_add_subcommand(Command_t *command, Command_t *sub_command)
|
|||
subcommand_list_add(command->sub_commands, sub_command);
|
||||
}
|
||||
|
||||
static gboolean basic_command_execute(Command_t *command);
|
||||
static CmdExecuteValue_t basic_command_execute(Command_t *command);
|
||||
|
||||
static CommandClass_t basic_command_class = {
|
||||
NULL, /* basic_command_destruct */
|
||||
|
@ -346,11 +374,11 @@ command_new(void (*func)(void))
|
|||
return command_init(&command->parent, "Unknown", &basic_command_class);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static CmdExecuteValue_t
|
||||
basic_command_execute(Command_t *command)
|
||||
{
|
||||
((BasicCommand_t*) command)->func();
|
||||
return FALSE;
|
||||
return CMD_DESTRUCT;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -26,19 +26,23 @@
|
|||
|
||||
#include "imap_object.h"
|
||||
|
||||
#define DEFAULT_UNDO_LEVELS 10
|
||||
|
||||
typedef struct CommandClass_t CommandClass_t;
|
||||
typedef struct Command_t Command_t;
|
||||
typedef struct CommandList_t CommandList_t;
|
||||
|
||||
typedef enum {CMD_APPEND, CMD_DESTRUCT, CMD_IGNORE} CmdExecuteValue_t;
|
||||
|
||||
#define COMMAND_PROTO(class) \
|
||||
static void class##_destruct(Command_t *command); \
|
||||
static gboolean class##_execute(Command_t *command); \
|
||||
static CmdExecuteValue_t class##_execute(Command_t *command); \
|
||||
static void class##_undo(Command_t *command); \
|
||||
static void class##_redo(Command_t *command)
|
||||
|
||||
struct CommandClass_t {
|
||||
void (*destruct)(Command_t*);
|
||||
gboolean (*execute)(Command_t*);
|
||||
CmdExecuteValue_t (*execute)(Command_t*);
|
||||
void (*undo)(Command_t*);
|
||||
void (*redo)(Command_t*);
|
||||
};
|
||||
|
|
|
@ -157,16 +157,16 @@ tag : shape_tag
|
|||
|
||||
shape_tag : SHAPE '=' STRING
|
||||
{
|
||||
if (!strcasecmp($3, "RECT")) {
|
||||
if (!g_strcasecmp($3, "RECT")) {
|
||||
current_object = create_rectangle(0, 0, 0, 0);
|
||||
current_type = RECTANGLE;
|
||||
} else if (!strcasecmp($3, "CIRCLE")) {
|
||||
} else if (!g_strcasecmp($3, "CIRCLE")) {
|
||||
current_object = create_circle(0, 0, 0);
|
||||
current_type = CIRCLE;
|
||||
} else if (!strcasecmp($3, "POLY")) {
|
||||
} else if (!g_strcasecmp($3, "POLY")) {
|
||||
current_object = create_polygon(NULL);
|
||||
current_type = POLYGON;
|
||||
} else if (!strcasecmp($3, "DEFAULT")) {
|
||||
} else if (!g_strcasecmp($3, "DEFAULT")) {
|
||||
current_type = UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "imap_default_dialog.h"
|
||||
#include "imap_edit_area_info.h"
|
||||
#include "imap_main.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_table.h"
|
||||
|
||||
static gint callback_lock;
|
||||
|
@ -163,7 +164,7 @@ create_link_tab(AreaInfoDialog_t *dialog, GtkWidget *notebook)
|
|||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_widget_show(table);
|
||||
|
||||
frame = gtk_frame_new("Link Type");
|
||||
frame = gtk_frame_new(_("Link Type"));
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), frame, 0, 2, 0, 1);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
|
@ -172,53 +173,55 @@ create_link_tab(AreaInfoDialog_t *dialog, GtkWidget *notebook)
|
|||
gtk_widget_show(subtable);
|
||||
|
||||
dialog->web_site = create_radio_button_in_table(subtable, NULL, 0, 0,
|
||||
"Web Site");
|
||||
_("Web Site"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->web_site), "toggled",
|
||||
(GtkSignalFunc) select_web_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->web_site));
|
||||
|
||||
dialog->ftp_site = create_radio_button_in_table(subtable, group, 0, 1,
|
||||
"Ftp Site");
|
||||
_("Ftp Site"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->ftp_site), "toggled",
|
||||
(GtkSignalFunc) select_ftp_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->ftp_site));
|
||||
|
||||
dialog->gopher = create_radio_button_in_table(subtable, group, 0, 2,
|
||||
"Gopher");
|
||||
_("Gopher"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->gopher), "toggled",
|
||||
(GtkSignalFunc) select_gopher_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->gopher));
|
||||
|
||||
dialog->other = create_radio_button_in_table(subtable, group, 0, 3,
|
||||
"Other");
|
||||
_("Other"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->other), "toggled",
|
||||
(GtkSignalFunc) select_other_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->other));
|
||||
|
||||
dialog->file = create_radio_button_in_table(subtable, group, 1, 0, "File");
|
||||
dialog->file = create_radio_button_in_table(subtable, group, 1, 0,
|
||||
_("File"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->file), "toggled",
|
||||
(GtkSignalFunc) select_file_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->file));
|
||||
|
||||
dialog->wais = create_radio_button_in_table(subtable, group, 1, 1, "WAIS");
|
||||
dialog->wais = create_radio_button_in_table(subtable, group, 1, 1,
|
||||
_("WAIS"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->wais), "toggled",
|
||||
(GtkSignalFunc) select_wais_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->wais));
|
||||
|
||||
dialog->telnet = create_radio_button_in_table(subtable, group, 1, 2,
|
||||
"Telnet");
|
||||
_("Telnet"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->telnet), "toggled",
|
||||
(GtkSignalFunc) select_telnet_cb, (gpointer) dialog);
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(dialog->telnet));
|
||||
|
||||
dialog->email = create_radio_button_in_table(subtable, group, 1, 3,
|
||||
"e-mail");
|
||||
_("e-mail"));
|
||||
gtk_signal_connect(GTK_OBJECT(dialog->email), "toggled",
|
||||
(GtkSignalFunc) select_email_cb, (gpointer) dialog);
|
||||
|
||||
create_label_in_table(
|
||||
table, 2, 0,
|
||||
"URL to activate when this area is clicked: (required)");
|
||||
_("URL to activate when this area is clicked: (required)"));
|
||||
|
||||
browse = browse_widget_new("Select HTML file");
|
||||
browse_widget_set_filter(browse, relative_filter, (gpointer) dialog);
|
||||
|
@ -228,23 +231,70 @@ create_link_tab(AreaInfoDialog_t *dialog, GtkWidget *notebook)
|
|||
GTK_SIGNAL_FUNC(url_changed), dialog);
|
||||
|
||||
dialog->relative_link = create_check_button_in_table(table, 4, 0,
|
||||
"Relative link");
|
||||
_("Relative link"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->relative_link),
|
||||
TRUE);
|
||||
|
||||
create_label_in_table(
|
||||
table, 6, 0,
|
||||
"Target frame name/ID: (optional - used for FRAMES only)");
|
||||
_("Target frame name/ID: (optional - used for FRAMES only)"));
|
||||
dialog->target = create_entry_in_table(table, 7, 0);
|
||||
|
||||
create_label_in_table(table, 9, 0,
|
||||
"Comment about this area: (optional)");
|
||||
_("Comment about this area: (optional)"));
|
||||
dialog->comment = create_entry_in_table(table, 10, 0);
|
||||
|
||||
label = gtk_label_new("Link");
|
||||
label = gtk_label_new(_("Link"));
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label);
|
||||
}
|
||||
|
||||
static void
|
||||
geometry_changed(Object_t *obj, gpointer data)
|
||||
{
|
||||
AreaInfoDialog_t *dialog = (AreaInfoDialog_t*) data;
|
||||
if (dialog->geometry_lock) {
|
||||
dialog->geometry_lock = FALSE;
|
||||
} else {
|
||||
if (dialog->obj == obj) {
|
||||
object_update_info_widget(obj, dialog->infotab);
|
||||
obj->class->assign(obj, dialog->clone);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
toggle_preview_cb(GtkWidget *widget, AreaInfoDialog_t *param)
|
||||
{
|
||||
param->preview = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
|
||||
edit_area_info_dialog_emit_geometry_signal(param);
|
||||
}
|
||||
|
||||
static void
|
||||
create_info_tab(AreaInfoDialog_t *dialog, GtkWidget *notebook)
|
||||
{
|
||||
GtkWidget *vbox, *frame, *preview, *label;
|
||||
Object_t *obj = dialog->obj;
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 1);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
frame = gtk_frame_new(_("Dimensions"));
|
||||
gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
preview = gtk_check_button_new_with_label(_("Preview"));
|
||||
gtk_signal_connect(GTK_OBJECT(preview), "toggled",
|
||||
(GtkSignalFunc) toggle_preview_cb, (gpointer) dialog);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), preview, FALSE, FALSE, 0);
|
||||
gtk_widget_show(preview);
|
||||
|
||||
dialog->infotab = obj->class->create_info_widget(frame);
|
||||
|
||||
label = gtk_label_new(obj->class->name);
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
|
||||
}
|
||||
|
||||
static void
|
||||
create_java_script_tab(AreaInfoDialog_t *dialog, GtkWidget *notebook)
|
||||
{
|
||||
|
@ -271,24 +321,37 @@ create_java_script_tab(AreaInfoDialog_t *dialog, GtkWidget *notebook)
|
|||
create_label_in_table(table, 9, 0, "onBlur (HTML 4.0):");
|
||||
dialog->blur = create_entry_in_table(table, 10, 0);
|
||||
|
||||
label = gtk_label_new("JavaScript");
|
||||
label = gtk_label_new(_("JavaScript"));
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
object_was_changed(AreaInfoDialog_t *dialog)
|
||||
{
|
||||
Object_t *clone = dialog->clone;
|
||||
Object_t *obj = dialog->obj;
|
||||
gint old_x, old_y, old_width, old_height;
|
||||
gint new_x, new_y, new_width, new_height;
|
||||
|
||||
object_get_dimensions(clone, &old_x, &old_y, &old_width, &old_height);
|
||||
object_get_dimensions(obj, &new_x, &new_y, &new_width, &new_height);
|
||||
|
||||
return new_x != old_x || new_y != old_y || new_width != old_width ||
|
||||
new_height != old_height || clone->selected != obj->selected;
|
||||
}
|
||||
|
||||
static void
|
||||
edit_area_ok_cb(gpointer data)
|
||||
{
|
||||
AreaInfoDialog_t *param = (AreaInfoDialog_t*) data;
|
||||
Object_t *obj = param->obj;
|
||||
gint old_x, old_y, old_width, old_height;
|
||||
gint new_x, new_y, new_width, new_height;
|
||||
|
||||
object_list_remove_geometry_cb(obj->list, param->geometry_cb_id);
|
||||
|
||||
/* Fix me: nasty hack */
|
||||
if (param->add)
|
||||
command_list_add(edit_object_command_new(obj));
|
||||
|
||||
object_get_dimensions(obj, &old_x, &old_y, &old_width, &old_height);
|
||||
|
||||
object_set_url(obj, gtk_entry_get_text(GTK_ENTRY(param->url)));
|
||||
object_set_target(obj, gtk_entry_get_text(GTK_ENTRY(param->target)));
|
||||
object_set_comment(obj, gtk_entry_get_text(GTK_ENTRY(param->comment)));
|
||||
|
@ -301,17 +364,27 @@ edit_area_ok_cb(gpointer data)
|
|||
update_shape(obj);
|
||||
object_unlock(obj);
|
||||
|
||||
object_get_dimensions(obj, &new_x, &new_y, &new_width, &new_height);
|
||||
if (new_x != old_x || new_y != old_y || new_width != old_width ||
|
||||
new_height != old_height)
|
||||
if (object_was_changed(param))
|
||||
redraw_preview();
|
||||
object_unref(param->clone);
|
||||
}
|
||||
|
||||
static void
|
||||
edit_area_cancel_cb(gpointer data)
|
||||
{
|
||||
Object_t *obj = ((AreaInfoDialog_t*) data)->obj;
|
||||
AreaInfoDialog_t *dialog = (AreaInfoDialog_t*) data;
|
||||
Object_t *obj = dialog->obj;
|
||||
gboolean changed = object_was_changed(dialog);
|
||||
gboolean selected = obj->selected;
|
||||
|
||||
object_list_remove_geometry_cb(obj->list, dialog->geometry_cb_id);
|
||||
object_unlock(obj);
|
||||
object_assign(dialog->clone, obj);
|
||||
obj->selected = selected;
|
||||
object_unref(dialog->clone);
|
||||
|
||||
if (changed)
|
||||
redraw_preview();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -335,9 +408,11 @@ create_edit_area_info_dialog(Object_t *obj)
|
|||
AreaInfoDialog_t *data = g_new(AreaInfoDialog_t, 1);
|
||||
GtkWidget *notebook;
|
||||
|
||||
data->geometry_lock = FALSE;
|
||||
data->preview = FALSE;
|
||||
data->obj = obj;
|
||||
data->browse = NULL;
|
||||
data->dialog = make_default_dialog("Area Settings");
|
||||
data->dialog = make_default_dialog(_("Area Settings"));
|
||||
default_dialog_set_ok_cb(data->dialog, edit_area_ok_cb, data);
|
||||
default_dialog_set_cancel_cb(data->dialog, edit_area_cancel_cb, data);
|
||||
|
||||
|
@ -349,7 +424,7 @@ create_edit_area_info_dialog(Object_t *obj)
|
|||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(data->dialog->dialog)->vbox),
|
||||
notebook, TRUE, TRUE, 10);
|
||||
create_link_tab(data, notebook);
|
||||
data->infotab = obj->class->create_info_tab(notebook);
|
||||
create_info_tab(data, notebook);
|
||||
create_java_script_tab(data, notebook);
|
||||
gtk_widget_show(notebook);
|
||||
|
||||
|
@ -365,8 +440,9 @@ edit_area_info_dialog_show(AreaInfoDialog_t *dialog, Object_t *obj,
|
|||
object_unlock(dialog->obj);
|
||||
object_lock(obj);
|
||||
dialog->obj = obj;
|
||||
dialog->clone = object_clone(obj);
|
||||
dialog->add = add;
|
||||
obj->class->fill_info_tab(obj, dialog->infotab);
|
||||
object_fill_info_tab(obj, dialog->infotab);
|
||||
gtk_entry_set_text(GTK_ENTRY(dialog->url), obj->url);
|
||||
gtk_entry_set_text(GTK_ENTRY(dialog->target), obj->target);
|
||||
gtk_entry_set_text(GTK_ENTRY(dialog->comment), obj->comment);
|
||||
|
@ -376,9 +452,20 @@ edit_area_info_dialog_show(AreaInfoDialog_t *dialog, Object_t *obj,
|
|||
gtk_entry_set_text(GTK_ENTRY(dialog->blur), obj->blur);
|
||||
gtk_widget_grab_focus(dialog->url);
|
||||
|
||||
sprintf(title, "Area #%d Settings", object_get_position_in_list(obj) + 1);
|
||||
dialog->geometry_cb_id =
|
||||
object_list_add_geometry_cb(obj->list, geometry_changed, dialog);
|
||||
|
||||
sprintf(title, _("Area #%d Settings"),
|
||||
object_get_position_in_list(obj) + 1);
|
||||
default_dialog_set_title(dialog->dialog, title);
|
||||
default_dialog_show(dialog->dialog);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
edit_area_info_dialog_emit_geometry_signal(AreaInfoDialog_t *dialog)
|
||||
{
|
||||
if (dialog->preview) {
|
||||
dialog->geometry_lock = TRUE;
|
||||
object_emit_geometry_signal(dialog->obj);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,10 @@ typedef struct AreaInfoDialog_t AreaInfoDialog_t;
|
|||
struct AreaInfoDialog_t {
|
||||
DefaultDialog_t *dialog;
|
||||
Object_t *obj;
|
||||
Object_t *clone;
|
||||
gboolean add;
|
||||
gboolean geometry_lock;
|
||||
gboolean preview;
|
||||
|
||||
GtkWidget *notebook;
|
||||
GtkWidget *web_site;
|
||||
|
@ -55,10 +58,12 @@ struct AreaInfoDialog_t {
|
|||
GtkWidget *blur;
|
||||
GtkWidget *browse;
|
||||
gpointer infotab;
|
||||
gpointer geometry_cb_id;
|
||||
};
|
||||
|
||||
AreaInfoDialog_t *create_edit_area_info_dialog(Object_t *obj);
|
||||
void edit_area_info_dialog_show(AreaInfoDialog_t *dialog, Object_t *obj,
|
||||
gboolean add);
|
||||
void edit_area_info_dialog_emit_geometry_signal(AreaInfoDialog_t *dialog);
|
||||
|
||||
#endif /* _IMAP_EDIT_AREA_INFO_H */
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "imap_default_dialog.h"
|
||||
#include "imap_file.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_table.h"
|
||||
|
||||
|
@ -42,7 +43,7 @@ open_cb(GtkWidget *widget, gpointer data)
|
|||
gtk_widget_hide((GtkWidget*) data);
|
||||
load(filename);
|
||||
} else {
|
||||
do_file_error_dialog("Error opening file", filename);
|
||||
do_file_error_dialog(_("Error opening file"), filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,7 +52,7 @@ do_file_open_dialog(void)
|
|||
{
|
||||
static GtkWidget *dialog;
|
||||
if (!dialog) {
|
||||
dialog = gtk_file_selection_new("Load Imagemap");
|
||||
dialog = gtk_file_selection_new(_("Load Imagemap"));
|
||||
gtk_signal_connect_object(
|
||||
GTK_OBJECT(GTK_FILE_SELECTION(dialog)->cancel_button),
|
||||
"clicked", GTK_SIGNAL_FUNC(gtk_widget_hide), GTK_OBJECT(dialog));
|
||||
|
@ -74,13 +75,13 @@ do_file_exists_dialog(gpointer data)
|
|||
static DefaultDialog_t *dialog;
|
||||
|
||||
if (!dialog) {
|
||||
dialog = make_default_dialog("File exists!");
|
||||
dialog = make_default_dialog(_("File exists!"));
|
||||
default_dialog_hide_apply_button(dialog);
|
||||
default_dialog_set_ok_cb(dialog, really_overwrite, data);
|
||||
default_dialog_set_label(
|
||||
dialog,
|
||||
"File already exists.\n"
|
||||
" Do you really want to overwrite? ");
|
||||
_("File already exists.\n"
|
||||
" Do you really want to overwrite? "));
|
||||
}
|
||||
default_dialog_show(dialog);
|
||||
}
|
||||
|
@ -111,7 +112,7 @@ do_file_save_as_dialog(void)
|
|||
{
|
||||
static GtkWidget *dialog;
|
||||
if (!dialog) {
|
||||
dialog = gtk_file_selection_new("Save Imagemap");
|
||||
dialog = gtk_file_selection_new(_("Save Imagemap"));
|
||||
gtk_signal_connect_object(
|
||||
GTK_OBJECT(GTK_FILE_SELECTION(dialog)->cancel_button),
|
||||
"clicked", GTK_SIGNAL_FUNC(gtk_widget_hide), GTK_OBJECT(dialog));
|
||||
|
@ -134,7 +135,7 @@ create_file_error_dialog()
|
|||
DefaultDialog_t *dialog;
|
||||
GtkWidget *table;
|
||||
|
||||
file_dialog->dialog = dialog = make_default_dialog("Error");
|
||||
file_dialog->dialog = dialog = make_default_dialog(_("Error"));
|
||||
default_dialog_hide_apply_button(dialog);
|
||||
default_dialog_hide_cancel_button(dialog);
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include "imap_grid.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_menu.h"
|
||||
#include "imap_popup.h"
|
||||
|
@ -43,8 +44,9 @@ static void
|
|||
grid_settings_ok_cb(gpointer data)
|
||||
{
|
||||
GridDialog_t *param = (GridDialog_t*) data;
|
||||
gint new_snap;
|
||||
|
||||
grid_snap = GTK_TOGGLE_BUTTON(param->snap)->active;
|
||||
new_snap = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(param->snap));
|
||||
grid_width = gtk_spin_button_get_value_as_int(
|
||||
GTK_SPIN_BUTTON(param->width));
|
||||
grid_height = gtk_spin_button_get_value_as_int(
|
||||
|
@ -54,10 +56,12 @@ grid_settings_ok_cb(gpointer data)
|
|||
grid_top = gtk_spin_button_get_value_as_int(
|
||||
GTK_SPIN_BUTTON(param->top));
|
||||
|
||||
main_toolbar_set_grid(grid_snap);
|
||||
popup_check_grid(grid_snap);
|
||||
menu_check_grid(grid_snap);
|
||||
|
||||
if (grid_snap != new_snap) {
|
||||
grid_snap = new_snap;
|
||||
main_toolbar_set_grid(grid_snap);
|
||||
popup_check_grid(grid_snap);
|
||||
menu_check_grid(grid_snap);
|
||||
}
|
||||
redraw_preview();
|
||||
}
|
||||
|
||||
|
@ -65,18 +69,63 @@ static void
|
|||
snap_toggled_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GridDialog_t *param = (GridDialog_t*) data;
|
||||
gint sensitive = GTK_TOGGLE_BUTTON(widget)->active;
|
||||
gint sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
|
||||
|
||||
gtk_widget_set_sensitive(param->type_frame, sensitive);
|
||||
gtk_widget_set_sensitive(param->granularity_frame, sensitive);
|
||||
gtk_widget_set_sensitive(param->offset_frame, sensitive);
|
||||
gtk_widget_set_sensitive(param->preview, sensitive);
|
||||
}
|
||||
|
||||
static void
|
||||
type_toggled_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
if (GTK_WIDGET_STATE(widget) & GTK_STATE_SELECTED)
|
||||
if (GTK_WIDGET_STATE(widget) & GTK_STATE_SELECTED) {
|
||||
grid_type = (gint) data;
|
||||
redraw_preview();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
toggle_preview_cb(GtkWidget *widget, GridDialog_t *param)
|
||||
{
|
||||
param->enable_preview =
|
||||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
|
||||
redraw_preview();
|
||||
}
|
||||
|
||||
static void
|
||||
grid_assign_value(GtkWidget *widget, gpointer data, gint *value)
|
||||
{
|
||||
GridDialog_t *dialog = (GridDialog_t*) data;
|
||||
if (dialog->enable_preview) {
|
||||
*value = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
redraw_preview(); /* Fix me! */
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
width_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
grid_assign_value(widget, data, &grid_width);
|
||||
}
|
||||
|
||||
static void
|
||||
height_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
grid_assign_value(widget, data, &grid_height);
|
||||
}
|
||||
|
||||
static void
|
||||
left_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
grid_assign_value(widget, data, &grid_left);
|
||||
}
|
||||
|
||||
static void
|
||||
top_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
grid_assign_value(widget, data, &grid_top);
|
||||
}
|
||||
|
||||
static GridDialog_t*
|
||||
|
@ -90,10 +139,10 @@ create_grid_settings_dialog()
|
|||
GtkWidget *button;
|
||||
GSList* group;
|
||||
|
||||
data->dialog = dialog = make_default_dialog("Grid Settings");
|
||||
data->dialog = dialog = make_default_dialog(_("Grid Settings"));
|
||||
default_dialog_set_ok_cb(dialog, grid_settings_ok_cb, (gpointer) data);
|
||||
|
||||
main_table = gtk_table_new(3, 2, FALSE);
|
||||
main_table = gtk_table_new(4, 2, FALSE);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(main_table), 10);
|
||||
gtk_table_set_row_spacings(GTK_TABLE(main_table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(main_table), 10);
|
||||
|
@ -101,27 +150,27 @@ create_grid_settings_dialog()
|
|||
main_table, TRUE, TRUE, 10);
|
||||
gtk_widget_show(main_table);
|
||||
|
||||
data->snap = gtk_check_button_new_with_label("Snap-To Grid Enabled");
|
||||
data->snap = gtk_check_button_new_with_label(_("Snap-To Grid Enabled"));
|
||||
gtk_signal_connect(GTK_OBJECT(data->snap), "toggled",
|
||||
(GtkSignalFunc) snap_toggled_cb, data);
|
||||
gtk_table_attach_defaults(GTK_TABLE(main_table), data->snap, 0, 1, 0, 1);
|
||||
gtk_widget_show(data->snap);
|
||||
|
||||
data->type_frame = frame = gtk_frame_new("Grid Visibility and Type");
|
||||
data->type_frame = frame = gtk_frame_new(_("Grid Visibility and Type"));
|
||||
gtk_widget_show(frame);
|
||||
gtk_table_attach_defaults(GTK_TABLE(main_table), frame, 0, 2, 1, 2);
|
||||
hbox = gtk_hbox_new(FALSE, 1);
|
||||
gtk_container_add(GTK_CONTAINER(frame), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
data->hidden = button = gtk_radio_button_new_with_label(NULL, "Hidden");
|
||||
data->hidden = button = gtk_radio_button_new_with_label(NULL, _("Hidden"));
|
||||
gtk_signal_connect(GTK_OBJECT(button), "toggled",
|
||||
(GtkSignalFunc) type_toggled_cb, (gpointer) GRID_HIDDEN);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 10);
|
||||
gtk_widget_show(button);
|
||||
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(button));
|
||||
data->lines = button = gtk_radio_button_new_with_label(group, "Lines");
|
||||
data->lines = button = gtk_radio_button_new_with_label(group, _("Lines"));
|
||||
gtk_signal_connect(GTK_OBJECT(button), "toggled",
|
||||
(GtkSignalFunc) type_toggled_cb, (gpointer) GRID_LINES);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
|
||||
|
@ -129,40 +178,60 @@ create_grid_settings_dialog()
|
|||
gtk_widget_show(button);
|
||||
|
||||
group = gtk_radio_button_group(GTK_RADIO_BUTTON(button));
|
||||
data->crosses = button = gtk_radio_button_new_with_label(group, "Crosses");
|
||||
data->crosses = button = gtk_radio_button_new_with_label(group,
|
||||
_("Crosses"));
|
||||
gtk_signal_connect(GTK_OBJECT(button), "toggled",
|
||||
(GtkSignalFunc) type_toggled_cb,
|
||||
(gpointer) GRID_CROSSES);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 10);
|
||||
gtk_widget_show(button);
|
||||
|
||||
data->granularity_frame = frame = gtk_frame_new("Grid Granularity");
|
||||
data->granularity_frame = frame = gtk_frame_new(_("Grid Granularity"));
|
||||
gtk_table_attach_defaults(GTK_TABLE(main_table), frame, 0, 1, 2, 3);
|
||||
table = gtk_table_new(2, 3, FALSE);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
|
||||
gtk_container_add(GTK_CONTAINER(frame), table);
|
||||
create_label_in_table(table, 0, 0, "Width");
|
||||
|
||||
create_label_in_table(table, 0, 0, _("Width"));
|
||||
data->width = create_spin_button_in_table(table, 0, 1, 15, 1, 100);
|
||||
create_label_in_table(table, 0, 2, "pixels");
|
||||
create_label_in_table(table, 1, 0, "Height");
|
||||
gtk_signal_connect(GTK_OBJECT(data->width), "changed",
|
||||
(GtkSignalFunc) width_changed_cb, (gpointer) data);
|
||||
create_label_in_table(table, 0, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 1, 0, _("Height"));
|
||||
data->height = create_spin_button_in_table(table, 1, 1, 15, 1, 100);
|
||||
create_label_in_table(table, 1, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(data->height), "changed",
|
||||
(GtkSignalFunc) height_changed_cb, (gpointer) data);
|
||||
create_label_in_table(table, 1, 2, _("pixels"));
|
||||
|
||||
gtk_widget_show(table);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
data->offset_frame = frame = gtk_frame_new("Grid Offset");
|
||||
data->offset_frame = frame = gtk_frame_new(_("Grid Offset"));
|
||||
gtk_table_attach_defaults(GTK_TABLE(main_table), frame, 1, 2, 2, 3);
|
||||
table = gtk_table_new(2, 2, FALSE);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
|
||||
gtk_container_add(GTK_CONTAINER(frame), table);
|
||||
|
||||
data->left = create_spin_button_in_table(table, 0, 0, 0, 0, 100);
|
||||
create_label_in_table(table, 0, 1, "pixels from left");
|
||||
gtk_signal_connect(GTK_OBJECT(data->left), "changed",
|
||||
(GtkSignalFunc) left_changed_cb, (gpointer) data);
|
||||
create_label_in_table(table, 0, 1, _("pixels from left"));
|
||||
|
||||
data->top = create_spin_button_in_table(table, 1, 0, 0, 0, 100);
|
||||
create_label_in_table(table, 1, 1, "pixels from top");
|
||||
gtk_signal_connect(GTK_OBJECT(data->top), "changed",
|
||||
(GtkSignalFunc) top_changed_cb, (gpointer) data);
|
||||
create_label_in_table(table, 1, 1, _("pixels from top"));
|
||||
|
||||
data->preview = create_check_button_in_table(main_table, 3, 0,
|
||||
_("Preview"));
|
||||
gtk_signal_connect(GTK_OBJECT(data->preview), "toggled",
|
||||
(GtkSignalFunc) toggle_preview_cb, (gpointer) data);
|
||||
gtk_widget_show(data->preview);
|
||||
|
||||
snap_toggled_cb(data->snap, data);
|
||||
|
||||
|
@ -234,14 +303,11 @@ draw_grid(GtkWidget *preview)
|
|||
gdk_gc_set_line_attributes(grid_gc, 1, GDK_LINE_ON_OFF_DASH,
|
||||
GDK_CAP_BUTT, GDK_JOIN_BEVEL);
|
||||
}
|
||||
|
||||
gdk_gc_set_function(preview->style->black_gc, GDK_INVERT);
|
||||
if (grid_type == GRID_LINES)
|
||||
draw_lines(preview->window, preview->style->black_gc, width, height);
|
||||
draw_lines(preview->window, grid_gc, width, height);
|
||||
else
|
||||
draw_crosses(preview->window, preview->style->black_gc, width,
|
||||
height);
|
||||
gdk_gc_set_function(preview->style->black_gc, GDK_COPY);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -253,14 +319,39 @@ toggle_grid(void)
|
|||
return grid_snap;
|
||||
}
|
||||
|
||||
static gint
|
||||
grid_nearest_x(gint x)
|
||||
{
|
||||
return grid_left + (x - grid_left + grid_width / 2) / grid_width
|
||||
* grid_width;
|
||||
}
|
||||
|
||||
static gint
|
||||
grid_nearest_y(gint y)
|
||||
{
|
||||
return grid_top + (y - grid_top + grid_height / 2) / grid_height
|
||||
* grid_height;
|
||||
}
|
||||
|
||||
void
|
||||
round_to_grid(gint *x, gint *y)
|
||||
{
|
||||
if (grid_snap) {
|
||||
*x = grid_left + (*x - grid_left + grid_width / 2) / grid_width
|
||||
* grid_width;
|
||||
*y = grid_top + (*y - grid_top + grid_height / 2) / grid_height
|
||||
* grid_height;
|
||||
*x = grid_nearest_x(*x);
|
||||
*y = grid_nearest_y(*y);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
grid_near_x(gint x)
|
||||
{
|
||||
return grid_snap && grid_type != GRID_HIDDEN
|
||||
&& abs(grid_nearest_x(x) - x) <= 1;
|
||||
}
|
||||
|
||||
gboolean
|
||||
grid_near_y(gint y)
|
||||
{
|
||||
return grid_snap && grid_type != GRID_HIDDEN
|
||||
&& abs(grid_nearest_x(y) - y) <= 1;
|
||||
}
|
||||
|
|
|
@ -39,6 +39,9 @@ typedef struct {
|
|||
GtkWidget *hidden;
|
||||
GtkWidget *lines;
|
||||
GtkWidget *crosses;
|
||||
GtkWidget *preview;
|
||||
|
||||
gboolean enable_preview;
|
||||
} GridDialog_t;
|
||||
|
||||
void do_grid_settings_dialog();
|
||||
|
@ -46,4 +49,7 @@ void draw_grid(GtkWidget *preview);
|
|||
gboolean toggle_grid();
|
||||
void round_to_grid(gint *x, gint *y);
|
||||
|
||||
gboolean grid_near_x(gint x);
|
||||
gboolean grid_near_y(gint y);
|
||||
|
||||
#endif /* _IMAP_GRID_H */
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "libgimp/gimp.h"
|
||||
#include "gdk/gdkkeysyms.h" /* for keyboard values */
|
||||
#include "gtk/gtk.h"
|
||||
|
||||
#include "imap_about.h"
|
||||
|
@ -38,11 +39,15 @@
|
|||
#include "imap_cmd_move.h"
|
||||
#include "imap_cmd_move_down.h"
|
||||
#include "imap_cmd_move_sash.h"
|
||||
#include "imap_cmd_move_selected.h"
|
||||
#include "imap_cmd_move_to_front.h"
|
||||
#include "imap_cmd_move_up.h"
|
||||
#include "imap_cmd_object_move.h"
|
||||
#include "imap_cmd_paste.h"
|
||||
#include "imap_cmd_select.h"
|
||||
#include "imap_cmd_select_all.h"
|
||||
#include "imap_cmd_select_next.h"
|
||||
#include "imap_cmd_select_prev.h"
|
||||
#include "imap_cmd_select_region.h"
|
||||
#include "imap_cmd_send_to_back.h"
|
||||
#include "imap_cmd_unselect.h"
|
||||
|
@ -51,6 +56,7 @@
|
|||
#include "imap_edit_area_info.h"
|
||||
#include "imap_file.h"
|
||||
#include "imap_grid.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_menu.h"
|
||||
#include "imap_object.h"
|
||||
|
@ -73,7 +79,7 @@
|
|||
/* Global variables */
|
||||
static MapInfo_t _map_info;
|
||||
static PreferencesData_t _preferences = {CSIM, TRUE, FALSE, TRUE, TRUE, FALSE,
|
||||
FALSE, 4};
|
||||
FALSE, DEFAULT_UNDO_LEVELS, DEFAULT_MRU_SIZE};
|
||||
static MRU_t *_mru;
|
||||
|
||||
static GdkCursorType _cursor;
|
||||
|
@ -124,6 +130,8 @@ static void query()
|
|||
static int nargs = sizeof (args) / sizeof (args[0]);
|
||||
static int nreturn_vals = 0;
|
||||
|
||||
INIT_I18N();
|
||||
|
||||
gimp_install_procedure("plug_in_imagemap",
|
||||
"Creates a clickable imagemap.",
|
||||
"",
|
||||
|
@ -146,6 +154,8 @@ run(char *name, int n_params, GParam *param, int *nreturn_vals,
|
|||
GRunModeType run_mode;
|
||||
GStatusType status = STATUS_SUCCESS;
|
||||
|
||||
INIT_I18N_UI();
|
||||
|
||||
*nreturn_vals = 1;
|
||||
*return_vals = values;
|
||||
|
||||
|
@ -194,12 +204,6 @@ get_preferences(void)
|
|||
return &_preferences;
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
get_top_widget(void)
|
||||
{
|
||||
return _dlg;
|
||||
}
|
||||
|
||||
static void
|
||||
init_preferences(void)
|
||||
{
|
||||
|
@ -242,6 +246,9 @@ init_preferences(void)
|
|||
gdk_gc_set_background(_preferences.normal_gc, &colors->normal_bg);
|
||||
gdk_gc_set_foreground(_preferences.selected_gc, &colors->selected_fg);
|
||||
gdk_gc_set_background(_preferences.selected_gc, &colors->selected_bg);
|
||||
|
||||
mru_set_size(_mru, _preferences.mru_size);
|
||||
command_list_set_undo_level(_preferences.undo_levels);
|
||||
}
|
||||
|
||||
/* Get yellow for tooltips */
|
||||
|
@ -377,13 +384,13 @@ draw_polygon(GdkWindow *window, GdkGC *gc, GList *list)
|
|||
|
||||
static gboolean _preview_redraw_blocked;
|
||||
|
||||
static void
|
||||
void
|
||||
preview_freeze(void)
|
||||
{
|
||||
_preview_redraw_blocked = TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
preview_thaw(void)
|
||||
{
|
||||
_preview_redraw_blocked = FALSE;
|
||||
|
@ -393,7 +400,8 @@ preview_thaw(void)
|
|||
void
|
||||
redraw_preview(void)
|
||||
{
|
||||
preview_redraw(_preview);
|
||||
if (!_preview_redraw_blocked)
|
||||
preview_redraw(_preview);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -509,8 +517,8 @@ main_set_title(const char *filename)
|
|||
char *p;
|
||||
|
||||
g_strreplace(&_filename, filename);
|
||||
p = (filename) ? g_basename(filename) : "<Untitled>";
|
||||
sprintf(title, "%s - ImageMap 1.2", p);
|
||||
p = (filename) ? g_basename(filename) : _("<Untitled>");
|
||||
sprintf(title, "%s - ImageMap 1.3", p);
|
||||
gtk_window_set_title(GTK_WINDOW(_dlg), title);
|
||||
}
|
||||
|
||||
|
@ -540,67 +548,6 @@ hide_url(void)
|
|||
statusbar_clear_status(_statusbar);
|
||||
}
|
||||
|
||||
static gint start_x, start_y;
|
||||
static gint obj_start_x, obj_start_y;
|
||||
static gint obj_x, obj_y, obj_width, obj_height;
|
||||
static gboolean _moved_first_time = TRUE;
|
||||
|
||||
static void
|
||||
button_motion(GtkWidget *widget, GdkEventMotion *event, gpointer data)
|
||||
{
|
||||
Object_t *obj = (Object_t*) data;
|
||||
gint dx = GET_REAL_COORD((gint) event->x) - start_x;
|
||||
gint dy = GET_REAL_COORD((gint) event->y) - start_y;
|
||||
|
||||
if (_moved_first_time) {
|
||||
_moved_first_time = FALSE;
|
||||
preview_set_cursor(_preview, GDK_FLEUR);
|
||||
gdk_gc_set_function(_preferences.normal_gc, GDK_EQUIV);
|
||||
gdk_gc_set_function(_preferences.selected_gc, GDK_EQUIV);
|
||||
hide_url();
|
||||
}
|
||||
|
||||
if (obj_x + dx < 0)
|
||||
dx = -obj_x;
|
||||
if (obj_x + obj_width + dx > _image_width)
|
||||
dx = _image_width - obj_width - obj_x;
|
||||
if (obj_y + dy < 0)
|
||||
dy = -obj_y;
|
||||
if (obj_y + obj_height + dy > _image_height)
|
||||
dy = _image_height - obj_height - obj_y;
|
||||
|
||||
if (dx || dy) {
|
||||
start_x = GET_REAL_COORD((gint) event->x);
|
||||
start_y = GET_REAL_COORD((gint) event->y);
|
||||
obj_x += dx;
|
||||
obj_y += dy;
|
||||
|
||||
object_draw(obj, widget->window);
|
||||
object_move(obj, dx, dy);
|
||||
object_draw(obj, widget->window);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
button_release(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
||||
{
|
||||
gtk_signal_disconnect_by_func(GTK_OBJECT(widget),
|
||||
(GtkSignalFunc) button_motion, data);
|
||||
gtk_signal_disconnect_by_func(GTK_OBJECT(widget),
|
||||
(GtkSignalFunc) button_release, data);
|
||||
_moved_first_time = TRUE;
|
||||
preview_set_cursor(_preview, _cursor);
|
||||
gdk_gc_set_function(_preferences.normal_gc, GDK_COPY);
|
||||
gdk_gc_set_function(_preferences.selected_gc, GDK_COPY);
|
||||
redraw_preview();
|
||||
show_url();
|
||||
|
||||
obj_x -= obj_start_x;
|
||||
obj_y -= obj_start_y;
|
||||
if (obj_x || obj_y)
|
||||
command_list_add(move_command_new((Object_t*) data, obj_x, obj_y));
|
||||
}
|
||||
|
||||
void
|
||||
select_shape(GtkWidget *widget, GdkEventButton *event)
|
||||
{
|
||||
|
@ -640,15 +587,8 @@ select_shape(GtkWidget *widget, GdkEventButton *event)
|
|||
}
|
||||
command_execute(command);
|
||||
|
||||
start_x = x;
|
||||
start_y = y;
|
||||
object_get_dimensions(obj, &obj_x, &obj_y, &obj_width, &obj_height);
|
||||
obj_start_x = obj_x;
|
||||
obj_start_y = obj_y;
|
||||
gtk_signal_connect(GTK_OBJECT(widget), "button_release_event",
|
||||
(GtkSignalFunc) button_release, obj);
|
||||
gtk_signal_connect(GTK_OBJECT(widget), "motion_notify_event",
|
||||
(GtkSignalFunc) button_motion, obj);
|
||||
command = move_command_new(_preview, obj, x, y);
|
||||
command_execute(command);
|
||||
} else { /* Start selection rectangle */
|
||||
command = select_region_command_new(widget, _shapes, x, y);
|
||||
command_execute(command);
|
||||
|
@ -725,12 +665,12 @@ do_data_changed_dialog(void (*continue_cb)(gpointer), gpointer param)
|
|||
static DefaultDialog_t *dialog;
|
||||
|
||||
if (!dialog) {
|
||||
dialog = make_default_dialog("Data changed");
|
||||
dialog = make_default_dialog(_("Data changed"));
|
||||
default_dialog_hide_apply_button(dialog);
|
||||
default_dialog_set_label(
|
||||
dialog,
|
||||
" Some data has been changed. \n"
|
||||
"Do you really want to continue?");
|
||||
_(" Some data has been changed. \n"
|
||||
"Do you really want to continue?"));
|
||||
}
|
||||
default_dialog_set_ok_cb(dialog, continue_cb, param);
|
||||
default_dialog_show(dialog);
|
||||
|
@ -833,7 +773,7 @@ save_as_cern(gpointer param, OutputFunc_t output)
|
|||
write_cern_comment(param, output);
|
||||
output(param, "-:Please do not edit lines starting with \"#$\"\n");
|
||||
write_cern_comment(param, output);
|
||||
output(param, "VERSION:1.2\n");
|
||||
output(param, "VERSION:1.3\n");
|
||||
write_cern_comment(param, output);
|
||||
output(param, "TITLE:%s\n", _map_info.title);
|
||||
write_cern_comment(param, output);
|
||||
|
@ -868,7 +808,7 @@ save_as_csim(gpointer param, OutputFunc_t output)
|
|||
output(param, "<!-- #$-:GIMP Imagemap Plugin by Maurits Rijk -->\n");
|
||||
output(param,
|
||||
"<!-- #$-:Please do not edit lines starting with \"#$\" -->\n");
|
||||
output(param, "<!-- #$VERSION:1.2 -->\n");
|
||||
output(param, "<!-- #$VERSION:1.3 -->\n");
|
||||
output(param, "<!-- #$AUTHOR:%s -->\n", _map_info.author);
|
||||
|
||||
description = g_strdup(_map_info.description);
|
||||
|
@ -892,7 +832,7 @@ save_as_ncsa(gpointer param, OutputFunc_t output)
|
|||
output(param, "#$-:Image Map file created by GIMP Imagemap Plugin\n");
|
||||
output(param, "#$-:GIMP Imagemap Plugin by Maurits Rijk\n");
|
||||
output(param, "#$-:Please do not edit lines starting with \"#$\"\n");
|
||||
output(param, "#$VERSION:1.2\n");
|
||||
output(param, "#$VERSION:1.3\n");
|
||||
output(param, "#$TITLE:%s\n", _map_info.title);
|
||||
output(param, "#$AUTHOR:%s\n", _map_info.author);
|
||||
output(param, "#$FORMAT:ncsa\n");
|
||||
|
@ -1051,6 +991,17 @@ preview_move(GtkWidget *widget, GdkEventMotion *event)
|
|||
statusbar_clear_status(_statusbar);
|
||||
}
|
||||
}
|
||||
#ifdef _NOT_READY_YET_
|
||||
if (!obj) {
|
||||
if (grid_near_x(x)) {
|
||||
preview_set_cursor(_preview, GDK_SB_H_DOUBLE_ARROW);
|
||||
} else if (grid_near_y(y)) {
|
||||
preview_set_cursor(_preview, GDK_SB_V_DOUBLE_ARROW);
|
||||
} else {
|
||||
preview_set_cursor(_preview, _cursor);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1072,13 +1023,103 @@ button_press(GtkWidget* widget, GdkEventButton* event, gpointer data)
|
|||
_button_press_func(widget, event, _button_press_param);
|
||||
}
|
||||
|
||||
#ifdef _NOT_READY_YET_
|
||||
/* A few global vars for key movement */
|
||||
|
||||
static gint _timeout;
|
||||
static guint _keyval;
|
||||
static gint _dx, _dy;
|
||||
|
||||
static void
|
||||
move_selected_objects(gint dx, gint dy, gboolean fast)
|
||||
{
|
||||
if (fast) {
|
||||
dx *= 5;
|
||||
dy *= 5;
|
||||
}
|
||||
_dx += dx;
|
||||
_dy += dy;
|
||||
|
||||
gdk_gc_set_function(_preferences.normal_gc, GDK_EQUIV);
|
||||
gdk_gc_set_function(_preferences.selected_gc, GDK_EQUIV);
|
||||
object_list_draw_selected(_shapes, _preview->preview->window);
|
||||
object_list_move_selected(_shapes, dx, dy);
|
||||
object_list_draw_selected(_shapes, _preview->preview->window);
|
||||
gdk_gc_set_function(_preferences.normal_gc, GDK_COPY);
|
||||
gdk_gc_set_function(_preferences.selected_gc, GDK_COPY);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
key_timeout_cb(gpointer data)
|
||||
{
|
||||
switch (_keyval) {
|
||||
case GDK_Left:
|
||||
case GDK_Right:
|
||||
case GDK_Up:
|
||||
case GDK_Down:
|
||||
command_list_add(move_selected_command_new(_shapes, _dx, _dy));
|
||||
_dx = _dy = 0;
|
||||
break;
|
||||
}
|
||||
preview_thaw();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
key_press_cb(GtkWidget *widget, GdkEventKey *event)
|
||||
{
|
||||
gint handled = FALSE;
|
||||
gboolean shift = event->state & GDK_SHIFT_MASK;
|
||||
Command_t *command;
|
||||
|
||||
preview_freeze();
|
||||
if (_timeout)
|
||||
gtk_timeout_remove(_timeout);
|
||||
|
||||
switch (event->keyval) {
|
||||
case GDK_Left:
|
||||
move_selected_objects(-1, 0, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Right:
|
||||
move_selected_objects(1, 0, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Up:
|
||||
move_selected_objects(0, -1, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Down:
|
||||
move_selected_objects(0, 1, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Tab:
|
||||
if (shift)
|
||||
command = select_prev_command_new(_shapes);
|
||||
else
|
||||
command = select_next_command_new(_shapes);
|
||||
command_execute(command);
|
||||
handled = TRUE;
|
||||
break;
|
||||
}
|
||||
if (handled)
|
||||
gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event");
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
key_release_cb(GtkWidget *widget, GdkEventKey *event)
|
||||
{
|
||||
_keyval = event->keyval;
|
||||
_timeout = gtk_timeout_add(250, key_timeout_cb, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
geometry_changed(Object_t *obj, gpointer data)
|
||||
{
|
||||
redraw_preview();
|
||||
redraw_preview(); /* Fix me! */
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
data_changed(Object_t *obj, gpointer data)
|
||||
|
@ -1286,7 +1327,6 @@ dialog(GDrawable *drawable)
|
|||
GtkWidget *hbox;
|
||||
GtkWidget *main_vbox;
|
||||
Tools_t *tools;
|
||||
guchar *color_cube;
|
||||
gchar **argv;
|
||||
gint argc = 1;
|
||||
Menu_t *menu;
|
||||
|
@ -1300,13 +1340,9 @@ dialog(GDrawable *drawable)
|
|||
|
||||
gdk_set_use_xshm(gimp_use_xshm());
|
||||
gtk_preview_set_gamma(gimp_gamma());
|
||||
gtk_preview_set_install_cmap(gimp_install_cmap());
|
||||
color_cube = gimp_color_cube();
|
||||
gtk_preview_set_color_cube(color_cube[0], color_cube[1],
|
||||
color_cube[2], color_cube[3]);
|
||||
|
||||
gtk_widget_set_default_visual(gtk_preview_get_visual());
|
||||
gtk_widget_set_default_colormap(gtk_preview_get_cmap());
|
||||
gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
|
||||
|
||||
_shapes = make_object_list();
|
||||
|
||||
|
@ -1319,6 +1355,11 @@ dialog(GDrawable *drawable)
|
|||
gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE);
|
||||
gtk_signal_connect(GTK_OBJECT(dlg), "destroy",
|
||||
(GtkSignalFunc) close_callback, NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(dlg), "key_press_event",
|
||||
(GtkSignalFunc) key_press_cb, NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(dlg), "key_release_event",
|
||||
(GtkSignalFunc) key_release_cb, NULL);
|
||||
|
||||
main_vbox = gtk_vbox_new(FALSE, 1);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(main_vbox), 1);
|
||||
gtk_container_add(GTK_CONTAINER(dlg), main_vbox);
|
||||
|
@ -1394,7 +1435,7 @@ dialog(GDrawable *drawable)
|
|||
add_preview_button_press_event(_preview, (GtkSignalFunc) button_press);
|
||||
gtk_container_add(GTK_CONTAINER(hbox), _preview->window);
|
||||
|
||||
/* object_list_add_changed_cb(_shapes, geometry_changed, NULL); */
|
||||
object_list_add_geometry_cb(_shapes, geometry_changed, NULL);
|
||||
object_list_add_update_cb(_shapes, data_changed, NULL);
|
||||
object_list_add_add_cb(_shapes, data_changed, NULL);
|
||||
object_list_add_remove_cb(_shapes, data_changed, NULL);
|
||||
|
|
|
@ -24,12 +24,9 @@
|
|||
#ifndef _IMAP_MAIN_H
|
||||
#define _IMAP_MAIN_H
|
||||
|
||||
#include "gtk/gtk.h"
|
||||
|
||||
#include "imap_mru.h"
|
||||
#include "imap_object.h"
|
||||
#include "imap_preferences.h"
|
||||
#include "imap_preview.h"
|
||||
|
||||
typedef enum {NCSA, CERN, CSIM} MapFormat_t;
|
||||
|
||||
|
@ -55,7 +52,7 @@ GdkColor *get_yellow(void);
|
|||
MRU_t *get_mru(void);
|
||||
MapInfo_t *get_map_info(void);
|
||||
PreferencesData_t *get_preferences(void);
|
||||
GtkWidget *get_top_widget(void);
|
||||
|
||||
gint get_image_width(void);
|
||||
gint get_image_height(void);
|
||||
|
||||
|
@ -91,7 +88,10 @@ void edit_shape(gint x, gint y);
|
|||
|
||||
void do_popup_menu(GdkEventButton *event);
|
||||
void draw_shapes(GtkWidget *preview);
|
||||
|
||||
void redraw_preview(void);
|
||||
void preview_freeze(void);
|
||||
void preview_thaw(void);
|
||||
|
||||
void show_url(void);
|
||||
void hide_url(void);
|
||||
|
|
|
@ -449,14 +449,14 @@ menu_build_mru_items(MRU_t *mru)
|
|||
}
|
||||
|
||||
i = 0;
|
||||
for (p = mru->list; p; p = p->next, i++)
|
||||
for (p = mru->list; p; p = p->next, i++) {
|
||||
insert_item_with_label(_menu.file_menu, position++, (gchar*) p->data,
|
||||
menu_mru, p->data);
|
||||
}
|
||||
insert_separator(_menu.file_menu, position);
|
||||
_menu.nr_off_mru_items = i + 1;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
menu_select_arrow(void)
|
||||
{
|
||||
|
|
|
@ -25,8 +25,6 @@
|
|||
|
||||
#include "imap_mru.h"
|
||||
|
||||
#define DEFAULT_MRU_SIZE 4
|
||||
|
||||
MRU_t*
|
||||
mru_create(void)
|
||||
{
|
||||
|
@ -85,9 +83,10 @@ mru_set_first(MRU_t *mru, const gchar *filename)
|
|||
void
|
||||
mru_set_size(MRU_t *mru, gint size)
|
||||
{
|
||||
if (size < mru->max_size) {
|
||||
/* fix me */
|
||||
}
|
||||
gint diff;
|
||||
|
||||
for (diff = g_list_length(mru->list) - size; diff > 0; diff--)
|
||||
mru_remove_link(mru, g_list_last(mru->list));
|
||||
mru->max_size = size;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
|
||||
#include "gtk/gtk.h"
|
||||
|
||||
#define DEFAULT_MRU_SIZE 4
|
||||
|
||||
typedef struct {
|
||||
GList *list;
|
||||
gint max_size;
|
||||
|
|
|
@ -152,6 +152,12 @@ object_list_remove_move_cb(ObjectList_t *list, gpointer id)
|
|||
object_list_callback_remove(&list->move_cb, id);
|
||||
}
|
||||
|
||||
void
|
||||
object_list_remove_geometry_cb(ObjectList_t *list, gpointer id)
|
||||
{
|
||||
object_list_callback_remove(&list->geometry_cb, id);
|
||||
}
|
||||
|
||||
Object_t*
|
||||
object_init(Object_t *obj, ObjectClass_t *class)
|
||||
{
|
||||
|
@ -216,7 +222,7 @@ object_clone(Object_t *obj)
|
|||
return clone;
|
||||
}
|
||||
|
||||
Object_t*
|
||||
static Object_t*
|
||||
object_copy(Object_t *src, Object_t *des)
|
||||
{
|
||||
des->class = src->class;
|
||||
|
@ -235,7 +241,8 @@ object_copy(Object_t *src, Object_t *des)
|
|||
Object_t*
|
||||
object_assign(Object_t *obj, Object_t *des)
|
||||
{
|
||||
return obj->class->assign(obj, des);
|
||||
obj->class->assign(obj, des);
|
||||
return object_copy(obj, des);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -271,6 +278,13 @@ object_unselect(Object_t *obj)
|
|||
object_list_callback_call(&obj->list->select_cb, obj);
|
||||
}
|
||||
|
||||
void
|
||||
object_move(Object_t *obj, gint dx, gint dy)
|
||||
{
|
||||
obj->class->move(obj, dx, dy);
|
||||
object_list_callback_call(&obj->list->geometry_cb, obj);
|
||||
}
|
||||
|
||||
void
|
||||
object_remove(Object_t *obj)
|
||||
{
|
||||
|
@ -343,6 +357,18 @@ object_emit_changed_signal(Object_t *obj)
|
|||
object_list_callback_call(&obj->list->changed_cb, obj);
|
||||
}
|
||||
|
||||
void
|
||||
object_emit_geometry_signal(Object_t *obj)
|
||||
{
|
||||
object_list_callback_call(&obj->list->geometry_cb, obj);
|
||||
}
|
||||
|
||||
void
|
||||
object_emit_update_signal(Object_t *obj)
|
||||
{
|
||||
object_list_callback_call(&obj->list->update_cb, obj);
|
||||
}
|
||||
|
||||
GdkPixmap*
|
||||
object_get_icon(Object_t *obj, GtkWidget *widget, GdkBitmap **mask)
|
||||
{
|
||||
|
@ -556,6 +582,17 @@ object_list_draw(ObjectList_t *list, GdkWindow *window)
|
|||
object_draw((Object_t*) p->data, window);
|
||||
}
|
||||
|
||||
void
|
||||
object_list_draw_selected(ObjectList_t *list, GdkWindow *window)
|
||||
{
|
||||
GList *p;
|
||||
for (p = list->list; p; p = p->next) {
|
||||
Object_t *obj = (Object_t*) p->data;
|
||||
if (obj->selected)
|
||||
object_draw(obj, window);
|
||||
}
|
||||
}
|
||||
|
||||
Object_t*
|
||||
object_list_find(ObjectList_t *list, gint x, gint y)
|
||||
{
|
||||
|
@ -706,6 +743,44 @@ object_list_select_all(ObjectList_t *list)
|
|||
return count;
|
||||
}
|
||||
|
||||
void
|
||||
object_list_select_next(ObjectList_t *list)
|
||||
{
|
||||
GList *p;
|
||||
for (p = list->list; p; p = p->next) {
|
||||
Object_t *obj = (Object_t*) p->data;
|
||||
if (obj->selected) {
|
||||
object_unselect(obj);
|
||||
p = (p->next) ? p->next : list->list;
|
||||
object_select((Object_t*) p->data);
|
||||
for (p = p->next; p; p = p->next) {
|
||||
obj = (Object_t*) p->data;
|
||||
if (obj->selected)
|
||||
object_unselect(obj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void object_list_select_prev(ObjectList_t *list)
|
||||
{
|
||||
GList *p;
|
||||
for (p = list->list; p; p = p->next) {
|
||||
Object_t *obj = (Object_t*) p->data;
|
||||
if (obj->selected) {
|
||||
GList *q = (p->prev) ? p->prev : g_list_last(list->list);
|
||||
for (; p; p = p->next) {
|
||||
obj = (Object_t*) p->data;
|
||||
if (obj->selected)
|
||||
object_unselect(obj);
|
||||
}
|
||||
object_select((Object_t*) q->data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gint
|
||||
object_list_select_region(ObjectList_t *list, gint x, gint y, gint width,
|
||||
gint height)
|
||||
|
@ -784,6 +859,17 @@ object_list_swap_next(ObjectList_t *list, GList *p)
|
|||
object_list_callback_call(&list->move_cb, (Object_t*) p->next->data);
|
||||
}
|
||||
|
||||
void
|
||||
object_list_move_selected(ObjectList_t *list, gint dx, gint dy)
|
||||
{
|
||||
GList *p;
|
||||
for (p = list->list; p; p = p->next) {
|
||||
Object_t *obj = (Object_t*) p->data;
|
||||
if (obj->selected)
|
||||
object_move(obj, dx, dy);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
object_list_move_up(ObjectList_t *list, Object_t *obj)
|
||||
{
|
||||
|
|
|
@ -54,6 +54,7 @@ typedef void (*OutputFunc_t)(gpointer, const char*, ...);
|
|||
struct AreaInfoDialog_t;
|
||||
|
||||
struct ObjectClass_t {
|
||||
gchar *name;
|
||||
AreaInfoDialog_t *info_dialog;
|
||||
GdkPixmap *icon;
|
||||
GdkBitmap *mask;
|
||||
|
@ -61,7 +62,7 @@ struct ObjectClass_t {
|
|||
gboolean (*is_valid)(Object_t *obj);
|
||||
void (*destruct)(Object_t *obj);
|
||||
Object_t* (*clone)(Object_t *obj);
|
||||
Object_t* (*assign)(Object_t *obj, Object_t *des);
|
||||
void (*assign)(Object_t *obj, Object_t *des);
|
||||
void (*normalize)(Object_t *obj);
|
||||
void (*draw)(Object_t *obj, GdkWindow *window, GdkGC* gc);
|
||||
void (*draw_sashes)(Object_t *obj, GdkWindow *window, GdkGC* gc);
|
||||
|
@ -71,7 +72,8 @@ struct ObjectClass_t {
|
|||
gint *height);
|
||||
void (*resize)(Object_t *obj, gint percentage_x, gint percentage_y);
|
||||
void (*move)(Object_t *obj, gint dx, gint dy);
|
||||
gpointer (*create_info_tab)(GtkWidget *notebook);
|
||||
gpointer (*create_info_widget)(GtkWidget *frame);
|
||||
void (*update_info_widget)(Object_t *obj, gpointer data);
|
||||
void (*fill_info_tab)(Object_t *obj, gpointer data);
|
||||
void (*set_initial_focus)(Object_t *obj, gpointer data);
|
||||
void (*update)(Object_t *obj, gpointer data);
|
||||
|
@ -86,13 +88,13 @@ struct ObjectClass_t {
|
|||
Object_t *object_ref(Object_t *obj);
|
||||
void object_unref(Object_t *obj);
|
||||
Object_t* object_init(Object_t *obj, ObjectClass_t *class);
|
||||
Object_t* object_copy(Object_t *src, Object_t *des);
|
||||
Object_t* object_clone(Object_t *obj);
|
||||
Object_t* object_assign(Object_t *src, Object_t *des);
|
||||
void object_draw(Object_t *obj, GdkWindow *window);
|
||||
void object_edit(Object_t *obj, gboolean add);
|
||||
void object_select(Object_t *obj);
|
||||
void object_unselect(Object_t *obj);
|
||||
void object_move(Object_t *obj, gint dx, gint dy);
|
||||
void object_remove(Object_t *obj);
|
||||
void object_lock(Object_t *obj);
|
||||
void object_unlock(Object_t *obj);
|
||||
|
@ -105,7 +107,10 @@ void object_set_focus(Object_t *obj, const gchar *focus);
|
|||
void object_set_blur(Object_t *obj, const gchar *blur);
|
||||
gint object_get_position_in_list(Object_t *obj);
|
||||
GdkPixmap* object_get_icon(Object_t *obj, GtkWidget *widget, GdkBitmap **mask);
|
||||
|
||||
void object_emit_changed_signal(Object_t *obj);
|
||||
void object_emit_geometry_signal(Object_t *obj);
|
||||
void object_emit_update_signal(Object_t *obj);
|
||||
|
||||
#define object_is_valid(obj) \
|
||||
((obj)->class->is_valid(obj))
|
||||
|
@ -116,15 +121,18 @@ void object_emit_changed_signal(Object_t *obj);
|
|||
#define object_normalize(obj) \
|
||||
((obj)->class->normalize(obj))
|
||||
|
||||
#define object_move(obj, dx, dy) \
|
||||
((obj)->class->move((obj), (dx), (dy)))
|
||||
|
||||
#define object_resize(obj, per_x, per_y) \
|
||||
((obj)->class->resize((obj), (per_x), (per_y)))
|
||||
|
||||
#define object_update(obj, data) \
|
||||
((obj)->class->update((obj), (data)))
|
||||
|
||||
#define object_update_info_widget(obj, data) \
|
||||
((obj)->class->update_info_widget((obj), (data)))
|
||||
|
||||
#define object_fill_info_tab(obj, data) \
|
||||
((obj)->class->fill_info_tab((obj), (data)))
|
||||
|
||||
typedef struct {
|
||||
Object_t *obj;
|
||||
gboolean (*finish)(Object_t *obj, gint x, gint y);
|
||||
|
@ -164,6 +172,7 @@ void object_list_remove(ObjectList_t *list, Object_t *object);
|
|||
void object_list_remove_link(ObjectList_t *list, GList *link);
|
||||
void object_list_update(ObjectList_t *list, Object_t *object);
|
||||
void object_list_draw(ObjectList_t *list, GdkWindow *window);
|
||||
void object_list_draw_selected(ObjectList_t *list, GdkWindow *window);
|
||||
Object_t *object_list_find(ObjectList_t *list, gint x, gint y);
|
||||
Object_t *object_list_near_sash(ObjectList_t *list, gint x, gint y,
|
||||
MoveSashFunc_t *sash_func);
|
||||
|
@ -176,12 +185,15 @@ void object_list_remove_all(ObjectList_t *list);
|
|||
void object_list_delete_selected(ObjectList_t *list);
|
||||
void object_list_edit_selected(ObjectList_t *list);
|
||||
gint object_list_select_all(ObjectList_t *list);
|
||||
void object_list_select_next(ObjectList_t *list);
|
||||
void object_list_select_prev(ObjectList_t *list);
|
||||
gint object_list_select_region(ObjectList_t *list, gint x, gint y, gint width,
|
||||
gint height);
|
||||
gint object_list_deselect_all(ObjectList_t *list, Object_t *exception);
|
||||
gint object_list_nr_selected(ObjectList_t *list);
|
||||
void object_list_resize(ObjectList_t *list, gint percentage_x,
|
||||
gint percentage_y);
|
||||
void object_list_move_selected(ObjectList_t *list, gint dx, gint dy);
|
||||
void object_list_move_up(ObjectList_t *list, Object_t *obj);
|
||||
void object_list_move_down(ObjectList_t *list, Object_t *obj);
|
||||
void object_list_move_selected_up(ObjectList_t *list);
|
||||
|
@ -222,6 +234,7 @@ void object_list_remove_add_cb(ObjectList_t *list, gpointer id);
|
|||
void object_list_remove_select_cb(ObjectList_t *list, gpointer id);
|
||||
void object_list_remove_remove_cb(ObjectList_t *list, gpointer id);
|
||||
void object_list_remove_move_cb(ObjectList_t *list, gpointer id);
|
||||
void object_list_remove_geometry_cb(ObjectList_t *list, gpointer id);
|
||||
|
||||
#define object_list_clear_changed(list) ((list)->changed = FALSE)
|
||||
#define object_list_set_changed(list, ischanged) \
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "imap_cmd_delete_point.h"
|
||||
#include "imap_grid.h"
|
||||
#include "imap_cmd_insert_point.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_object_popup.h"
|
||||
|
@ -40,7 +40,7 @@
|
|||
static gboolean polygon_is_valid(Object_t *obj);
|
||||
static void polygon_destruct(Object_t *obj);
|
||||
static Object_t *polygon_clone(Object_t *obj);
|
||||
static Object_t *polygon_assign(Object_t *obj, Object_t *des);
|
||||
static void polygon_assign(Object_t *obj, Object_t *des);
|
||||
static void polygon_draw(Object_t* obj, GdkWindow *window, GdkGC* gc);
|
||||
static void polygon_draw_sashes(Object_t* obj, GdkWindow *window, GdkGC* gc);
|
||||
static MoveSashFunc_t polygon_near_sash(Object_t *obj, gint x, gint y);
|
||||
|
@ -50,7 +50,8 @@ static void polygon_get_dimensions(Object_t *obj, gint *x, gint *y,
|
|||
static void polygon_resize(Object_t *obj, gint percentage_x,
|
||||
gint percentage_y);
|
||||
static void polygon_move(Object_t *obj, gint dx, gint dy);
|
||||
static gpointer polygon_create_info_tab(GtkWidget *notebook);
|
||||
static gpointer polygon_create_info_widget(GtkWidget *frame);
|
||||
static void polygon_update_info_widget(Object_t *obj, gpointer data);
|
||||
static void polygon_fill_info_tab(Object_t *obj, gpointer data);
|
||||
static void polygon_set_initial_focus(Object_t *obj, gpointer data);
|
||||
static void polygon_update(Object_t* obj, gpointer data);
|
||||
|
@ -64,6 +65,7 @@ static void polygon_do_popup(Object_t *obj, GdkEventButton *event);
|
|||
static char** polygon_get_icon_data(void);
|
||||
|
||||
static ObjectClass_t polygon_class = {
|
||||
N_("Polygon"),
|
||||
NULL, /* info_dialog */
|
||||
NULL, /* icon */
|
||||
NULL, /* mask */
|
||||
|
@ -80,7 +82,8 @@ static ObjectClass_t polygon_class = {
|
|||
polygon_get_dimensions,
|
||||
polygon_resize,
|
||||
polygon_move,
|
||||
polygon_create_info_tab,
|
||||
polygon_create_info_widget,
|
||||
polygon_update_info_widget,
|
||||
polygon_fill_info_tab,
|
||||
polygon_set_initial_focus,
|
||||
polygon_update,
|
||||
|
@ -99,13 +102,19 @@ create_polygon(GList *points)
|
|||
return object_init(&polygon->obj, &polygon_class);
|
||||
}
|
||||
|
||||
static void
|
||||
polygon_free_list(Polygon_t *polygon)
|
||||
{
|
||||
g_list_foreach(polygon->points, (GFunc) g_free, NULL);
|
||||
g_list_free(polygon->points);
|
||||
polygon->points = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
polygon_destruct(Object_t *obj)
|
||||
{
|
||||
Polygon_t *polygon = ObjectToPolygon(obj);
|
||||
|
||||
g_list_foreach(polygon->points, (GFunc) g_free, NULL);
|
||||
g_list_free(polygon->points);
|
||||
polygon_free_list(polygon);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -130,19 +139,19 @@ polygon_clone(Object_t *obj)
|
|||
return &clone->obj;
|
||||
}
|
||||
|
||||
static Object_t*
|
||||
static void
|
||||
polygon_assign(Object_t *obj, Object_t *des)
|
||||
{
|
||||
Polygon_t *src_polygon = ObjectToPolygon(obj);
|
||||
Polygon_t *des_polygon = ObjectToPolygon(des);
|
||||
GList *p;
|
||||
|
||||
polygon_free_list(des_polygon);
|
||||
for (p = src_polygon->points; p; p = p->next) {
|
||||
GdkPoint *point = (GdkPoint*) p->data;
|
||||
des_polygon->points = g_list_append(des_polygon->points,
|
||||
new_point(point->x, point->y));
|
||||
}
|
||||
return object_copy(obj, des);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -163,13 +172,14 @@ polygon_draw_sashes(Object_t *obj, GdkWindow *window, GdkGC *gc)
|
|||
}
|
||||
}
|
||||
|
||||
static GdkPoint *sash_point;
|
||||
static GdkPoint *_sash_point;
|
||||
static gint _sash_index;
|
||||
|
||||
static void
|
||||
move_sash(Object_t *obj, gint dx, gint dy)
|
||||
{
|
||||
sash_point->x += dx;
|
||||
sash_point->y += dy;
|
||||
_sash_point->x += dx;
|
||||
_sash_point->y += dy;
|
||||
}
|
||||
|
||||
static MoveSashFunc_t
|
||||
|
@ -177,10 +187,12 @@ polygon_near_sash(Object_t *obj, gint x, gint y)
|
|||
{
|
||||
Polygon_t *polygon = ObjectToPolygon(obj);
|
||||
GList *p;
|
||||
for (p = polygon->points; p; p = p->next) {
|
||||
|
||||
_sash_index = 0;
|
||||
for (p = polygon->points; p; p = p->next, _sash_index++) {
|
||||
GdkPoint *point = (GdkPoint*) p->data;
|
||||
if (near_sash(point->x, point->y, x, y)) {
|
||||
sash_point = point;
|
||||
_sash_point = point;
|
||||
return move_sash;
|
||||
}
|
||||
}
|
||||
|
@ -276,6 +288,7 @@ polygon_move(Object_t *obj, gint dx, gint dy)
|
|||
}
|
||||
|
||||
typedef struct {
|
||||
Object_t *obj;
|
||||
GtkWidget *list;
|
||||
GtkWidget *x;
|
||||
GtkWidget *y;
|
||||
|
@ -284,6 +297,7 @@ typedef struct {
|
|||
GtkWidget *append;
|
||||
GtkWidget *remove;
|
||||
gint selected_row;
|
||||
gint timeout;
|
||||
} PolygonProperties_t;
|
||||
|
||||
static void
|
||||
|
@ -293,6 +307,8 @@ select_row_cb(GtkWidget *widget, gint row, gint column, GdkEventButton *event,
|
|||
gchar *text;
|
||||
data->selected_row = row;
|
||||
|
||||
_sash_point = g_list_nth(ObjectToPolygon(data->obj)->points, row)->data;
|
||||
|
||||
gtk_clist_get_text(GTK_CLIST(data->list), row, 0, &text);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->x), atoi(text));
|
||||
|
||||
|
@ -345,20 +361,39 @@ remove_button_clicked(GtkWidget *widget, PolygonProperties_t *data)
|
|||
set_buttons_sensitivity(data);
|
||||
}
|
||||
|
||||
static gpointer
|
||||
polygon_create_info_tab(GtkWidget *notebook)
|
||||
static void
|
||||
x_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
PolygonProperties_t *data = g_new(PolygonProperties_t, 1);
|
||||
GtkWidget *hbox, *swin, *table, *label;
|
||||
Object_t *obj = ((PolygonProperties_t*) data)->obj;
|
||||
gint x = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
_sash_point->x = x;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
y_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((PolygonProperties_t*) data)->obj;
|
||||
gint y = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
_sash_point->y = y;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static gpointer
|
||||
polygon_create_info_widget(GtkWidget *frame)
|
||||
{
|
||||
PolygonProperties_t *props = g_new(PolygonProperties_t, 1);
|
||||
GtkWidget *hbox, *swin, *table;
|
||||
GtkWidget *list;
|
||||
gint max_width = get_image_width();
|
||||
gint max_height = get_image_height();
|
||||
gchar *titles[] = {"x (pixels)", "y (pixels)"};
|
||||
gchar *titles[] = {N_("x (pixels)"), N_("y (pixels)")};
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 1);
|
||||
gtk_container_add(GTK_CONTAINER(frame), hbox);
|
||||
gtk_widget_show(hbox);
|
||||
|
||||
data->list = list = gtk_clist_new_with_titles(2, titles);
|
||||
props->list = list = gtk_clist_new_with_titles(2, titles);
|
||||
gtk_clist_column_titles_passive(GTK_CLIST(list));
|
||||
|
||||
swin = gtk_scrolled_window_new(NULL, NULL);
|
||||
|
@ -379,7 +414,7 @@ polygon_create_info_tab(GtkWidget *notebook)
|
|||
gtk_clist_set_column_justification(GTK_CLIST(list), 1, GTK_JUSTIFY_RIGHT);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(list), "select_row",
|
||||
GTK_SIGNAL_FUNC(select_row_cb), data);
|
||||
GTK_SIGNAL_FUNC(select_row_cb), props);
|
||||
gtk_clist_set_selection_mode(GTK_CLIST(list), GTK_SELECTION_SINGLE);
|
||||
gtk_widget_show(list);
|
||||
|
||||
|
@ -391,43 +426,71 @@ polygon_create_info_tab(GtkWidget *notebook)
|
|||
gtk_widget_show(table);
|
||||
|
||||
create_label_in_table(table, 0, 0, "x:");
|
||||
data->x = create_spin_button_in_table(table, 0, 1, 1, 0, max_width - 1);
|
||||
gtk_widget_set_usize(data->x, 64, -1);
|
||||
create_label_in_table(table, 0, 2, "pixels");
|
||||
props->x = create_spin_button_in_table(table, 0, 1, 1, 0, max_width - 1);
|
||||
gtk_signal_connect(GTK_OBJECT(props->x), "changed",
|
||||
(GtkSignalFunc) x_changed_cb, (gpointer) props);
|
||||
gtk_widget_set_usize(props->x, 64, -1);
|
||||
create_label_in_table(table, 0, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 1, 0, "y:");
|
||||
data->y = create_spin_button_in_table(table, 1, 1, 1, 0, max_height - 1);
|
||||
gtk_widget_set_usize(data->y, 64, -1);
|
||||
create_label_in_table(table, 1, 2, "pixels");
|
||||
props->y = create_spin_button_in_table(table, 1, 1, 1, 0, max_height - 1);
|
||||
gtk_signal_connect(GTK_OBJECT(props->y), "changed",
|
||||
(GtkSignalFunc) y_changed_cb, (gpointer) props);
|
||||
gtk_widget_set_usize(props->y, 64, -1);
|
||||
create_label_in_table(table, 1, 2, _("pixels"));
|
||||
|
||||
data->update = gtk_button_new_with_label("Update");
|
||||
gtk_signal_connect(GTK_OBJECT(data->update), "clicked",
|
||||
GTK_SIGNAL_FUNC(update_button_clicked), data);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), data->update, 1, 2, 2, 3);
|
||||
gtk_widget_show(data->update);
|
||||
props->update = gtk_button_new_with_label(_("Update"));
|
||||
gtk_signal_connect(GTK_OBJECT(props->update), "clicked",
|
||||
GTK_SIGNAL_FUNC(update_button_clicked), props);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), props->update, 1, 2, 2, 3);
|
||||
gtk_widget_show(props->update);
|
||||
|
||||
data->insert = gtk_button_new_with_label("Insert");
|
||||
gtk_signal_connect(GTK_OBJECT(data->insert), "clicked",
|
||||
GTK_SIGNAL_FUNC(insert_button_clicked), data);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), data->insert, 1, 2, 3, 4);
|
||||
gtk_widget_show(data->insert);
|
||||
props->insert = gtk_button_new_with_label(_("Insert"));
|
||||
gtk_signal_connect(GTK_OBJECT(props->insert), "clicked",
|
||||
GTK_SIGNAL_FUNC(insert_button_clicked), props);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), props->insert, 1, 2, 3, 4);
|
||||
gtk_widget_show(props->insert);
|
||||
|
||||
data->append = gtk_button_new_with_label("Append");
|
||||
gtk_signal_connect(GTK_OBJECT(data->append), "clicked",
|
||||
GTK_SIGNAL_FUNC(append_button_clicked), data);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), data->append, 1, 2, 4, 5);
|
||||
gtk_widget_show(data->append);
|
||||
props->append = gtk_button_new_with_label(_("Append"));
|
||||
gtk_signal_connect(GTK_OBJECT(props->append), "clicked",
|
||||
GTK_SIGNAL_FUNC(append_button_clicked), props);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), props->append, 1, 2, 4, 5);
|
||||
gtk_widget_show(props->append);
|
||||
|
||||
data->remove = gtk_button_new_with_label("Remove");
|
||||
gtk_signal_connect(GTK_OBJECT(data->remove), "clicked",
|
||||
GTK_SIGNAL_FUNC(remove_button_clicked), data);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), data->remove, 1, 2, 5, 6);
|
||||
gtk_widget_show(data->remove);
|
||||
props->remove = gtk_button_new_with_label(_("Remove"));
|
||||
gtk_signal_connect(GTK_OBJECT(props->remove), "clicked",
|
||||
GTK_SIGNAL_FUNC(remove_button_clicked), props);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), props->remove, 1, 2, 5, 6);
|
||||
gtk_widget_show(props->remove);
|
||||
|
||||
label = gtk_label_new("Polygon");
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label);
|
||||
props->timeout = 0;
|
||||
|
||||
return data;
|
||||
return props;
|
||||
}
|
||||
|
||||
static gint
|
||||
update_timeout(gpointer data)
|
||||
{
|
||||
PolygonProperties_t *props = (PolygonProperties_t*) data;
|
||||
polygon_fill_info_tab(props->obj, data);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
polygon_update_info_widget(Object_t *obj, gpointer data)
|
||||
{
|
||||
PolygonProperties_t *props = (PolygonProperties_t*) data;
|
||||
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(props->x), _sash_point->x);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(props->y), _sash_point->y);
|
||||
|
||||
if (props->selected_row != _sash_index) {
|
||||
props->selected_row = _sash_index;
|
||||
gtk_clist_select_row(GTK_CLIST(props->list), _sash_index, -1);
|
||||
}
|
||||
if (props->timeout)
|
||||
gtk_timeout_remove(props->timeout);
|
||||
props->timeout = gtk_timeout_add(1000, update_timeout, data);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -437,6 +500,7 @@ polygon_fill_info_tab(Object_t *obj, gpointer data)
|
|||
PolygonProperties_t *props = (PolygonProperties_t*) data;
|
||||
GList *p;
|
||||
|
||||
props->obj = obj;
|
||||
gtk_clist_freeze(GTK_CLIST(props->list));
|
||||
gtk_clist_clear(GTK_CLIST(props->list));
|
||||
for (p = polygon->points; p; p = p->next) {
|
||||
|
@ -446,12 +510,11 @@ polygon_fill_info_tab(Object_t *obj, gpointer data)
|
|||
|
||||
text[0] = x;
|
||||
text[1] = y;
|
||||
|
||||
sprintf(x, "%d", point->x);
|
||||
sprintf(y, "%d", point->y);
|
||||
gtk_clist_append(GTK_CLIST(props->list), text);
|
||||
}
|
||||
gtk_clist_select_row(GTK_CLIST(props->list), 0, -1);
|
||||
gtk_clist_select_row(GTK_CLIST(props->list), _sash_index, -1);
|
||||
gtk_clist_thaw(GTK_CLIST(props->list));
|
||||
|
||||
set_buttons_sensitivity(props);
|
||||
|
@ -548,7 +611,7 @@ static void
|
|||
polygon_delete_point(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Command_t *command = delete_point_command_new(get_popup_object(),
|
||||
sash_point);
|
||||
_sash_point);
|
||||
command_execute(command);
|
||||
}
|
||||
|
||||
|
@ -599,7 +662,7 @@ polygon_do_popup(Object_t *obj, GdkEventButton *event)
|
|||
static ObjectPopup_t *delete_popup;
|
||||
if (!delete_popup) {
|
||||
delete_popup = make_object_popup();
|
||||
object_popup_prepend_menu(delete_popup, "Delete Point",
|
||||
object_popup_prepend_menu(delete_popup, _("Delete Point"),
|
||||
polygon_delete_point, delete_popup);
|
||||
}
|
||||
object_handle_popup(delete_popup, obj, event);
|
||||
|
@ -613,7 +676,7 @@ polygon_do_popup(Object_t *obj, GdkEventButton *event)
|
|||
|
||||
if (!insert_popup) {
|
||||
insert_popup = make_object_popup();
|
||||
object_popup_prepend_menu(insert_popup, "Insert Point",
|
||||
object_popup_prepend_menu(insert_popup, _("Insert Point"),
|
||||
polygon_insert_point, insert_popup);
|
||||
}
|
||||
object_handle_popup(insert_popup, obj, event);
|
||||
|
|
|
@ -25,9 +25,14 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libgimp/gimpenv.h"
|
||||
|
||||
#include "imap_command.h"
|
||||
#include "imap_file.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_menu.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_mru.h"
|
||||
#include "imap_preferences.h"
|
||||
#include "imap_table.h"
|
||||
|
||||
|
@ -100,6 +105,10 @@ parse_line(PreferencesData_t *data, char *line)
|
|||
data->show_url_tip = parse_yes_no();
|
||||
} else if (!strcmp(token, "use-doublesized")) {
|
||||
data->use_doublesized = parse_yes_no();
|
||||
} else if (!strcmp(token, "mru-size")) {
|
||||
data->mru_size = parse_int();
|
||||
} else if (!strcmp(token, "undo-levels")) {
|
||||
data->undo_levels = parse_int();
|
||||
} else if (!strcmp(token, "normal-fg-color")) {
|
||||
parse_color(&colors->normal_fg);
|
||||
} else if (!strcmp(token, "normal-bg-color")) {
|
||||
|
@ -110,8 +119,6 @@ parse_line(PreferencesData_t *data, char *line)
|
|||
parse_color(&colors->selected_bg);
|
||||
} else if (!strcmp(token, "mru-entry")) {
|
||||
parse_mru_entry();
|
||||
} else if (!strcmp(token, "mru-size")) {
|
||||
data->mru_size = parse_int();
|
||||
} else {
|
||||
/* Unrecognized, just ignore rest of line */
|
||||
}
|
||||
|
@ -124,7 +131,7 @@ preferences_load(PreferencesData_t *data)
|
|||
char buf[256];
|
||||
gchar *filename;
|
||||
|
||||
filename = g_strconcat(getenv("HOME"), "/.gimp/imagemaprc", NULL);
|
||||
filename = g_strconcat(gimp_directory(), "/imagemaprc", NULL);
|
||||
|
||||
in = fopen(filename, "r");
|
||||
g_free(filename);
|
||||
|
@ -147,7 +154,7 @@ preferences_save(PreferencesData_t *data)
|
|||
gchar *filename;
|
||||
ColorSelData_t *colors = &data->colors;
|
||||
|
||||
filename = g_strconcat(getenv("HOME"), "/.gimp/imagemaprc", NULL);
|
||||
filename = g_strconcat(gimp_directory(), "/imagemaprc", NULL);
|
||||
|
||||
out = fopen(filename, "w");
|
||||
if (out) {
|
||||
|
@ -171,6 +178,10 @@ preferences_save(PreferencesData_t *data)
|
|||
(data->show_url_tip) ? "yes" : "no");
|
||||
fprintf(out, "(use-doublesized %s)\n",
|
||||
(data->use_doublesized) ? "yes" : "no");
|
||||
|
||||
fprintf(out, "(undo-levels %d)\n", data->undo_levels);
|
||||
fprintf(out, "(mru-size %d)\n", data->mru_size);
|
||||
|
||||
fprintf(out, "(normal-fg-color %d %d %d)\n",
|
||||
colors->normal_fg.red, colors->normal_fg.green,
|
||||
colors->normal_fg.blue);
|
||||
|
@ -199,6 +210,7 @@ preferences_ok_cb(gpointer data)
|
|||
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
|
||||
PreferencesData_t *old_data = param->old_data;
|
||||
ColorSelData_t *colors = &old_data->colors;
|
||||
MRU_t *mru = get_mru();
|
||||
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(param->cern)))
|
||||
old_data->default_map_type = CERN;
|
||||
|
@ -220,6 +232,14 @@ preferences_ok_cb(gpointer data)
|
|||
old_data->use_doublesized = gtk_toggle_button_get_active(
|
||||
GTK_TOGGLE_BUTTON(param->use_doublesized));
|
||||
|
||||
old_data->mru_size =
|
||||
gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(param->mru_size));
|
||||
old_data->undo_levels =
|
||||
gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(param->undo_levels));
|
||||
mru_set_size(mru, old_data->mru_size);
|
||||
menu_build_mru_items(mru);
|
||||
command_list_set_undo_level(old_data->undo_levels);
|
||||
|
||||
*colors = param->new_colors;
|
||||
|
||||
gdk_gc_set_foreground(old_data->normal_gc, &colors->normal_fg);
|
||||
|
@ -446,6 +466,33 @@ create_general_tab(PreferencesDialog_t *data, GtkWidget *notebook)
|
|||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label);
|
||||
}
|
||||
|
||||
static void
|
||||
create_menu_tab(PreferencesDialog_t *data, GtkWidget *notebook)
|
||||
{
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
GtkWidget *vbox;
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 1);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
table = gtk_table_new(2, 2, FALSE);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
|
||||
gtk_widget_show(table);
|
||||
|
||||
create_label_in_table(table, 0, 0, "Number of Undo levels (1 - 99):");
|
||||
data->undo_levels = create_spin_button_in_table(table, 0, 1, 1, 1, 99);
|
||||
|
||||
create_label_in_table(table, 1, 0, "Number of MRU entries (1 - 16):");
|
||||
data->mru_size = create_spin_button_in_table(table, 1, 1, 1, 1, 16);
|
||||
|
||||
label = gtk_label_new("Menu");
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
create_color_field(PreferencesDialog_t *data, GtkWidget *table, gint row,
|
||||
gint col, GtkSignalFunc func)
|
||||
|
@ -498,7 +545,7 @@ static void
|
|||
switch_page(GtkWidget *widget, GtkNotebookPage *page, gint page_num,
|
||||
gpointer data)
|
||||
{
|
||||
if (page_num == 1) {
|
||||
if (page_num == 2) {
|
||||
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
|
||||
set_button_colors(param, ¶m->old_colors);
|
||||
}
|
||||
|
@ -523,6 +570,7 @@ create_preferences_dialog()
|
|||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog->dialog)->vbox),
|
||||
notebook, TRUE, TRUE, 10);
|
||||
create_general_tab(data, notebook);
|
||||
create_menu_tab(data, notebook);
|
||||
create_colors_tab(data, notebook);
|
||||
|
||||
gtk_widget_show(notebook);
|
||||
|
@ -566,5 +614,10 @@ do_preferences_dialog(void)
|
|||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->use_doublesized),
|
||||
old_data->use_doublesized);
|
||||
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->undo_levels),
|
||||
old_data->undo_levels);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->mru_size),
|
||||
old_data->mru_size);
|
||||
|
||||
default_dialog_show(dialog->dialog);
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ typedef struct {
|
|||
gboolean keep_circles_round;
|
||||
gboolean show_url_tip;
|
||||
gboolean use_doublesized;
|
||||
gint undo_levels;
|
||||
gint mru_size;
|
||||
ColorSelData_t colors;
|
||||
GdkGC *normal_gc;
|
||||
|
@ -59,6 +60,10 @@ typedef struct {
|
|||
GtkWidget *keep_circles_round;
|
||||
GtkWidget *show_url_tip;
|
||||
GtkWidget *use_doublesized;
|
||||
|
||||
GtkWidget *undo_levels;
|
||||
GtkWidget *mru_size;
|
||||
|
||||
GtkWidget *normal_fg;
|
||||
GtkWidget *normal_bg;
|
||||
GtkWidget *selected_fg;
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
|
||||
#include "libgimp/gimp.h"
|
||||
|
||||
#include "imap_cmd_edit_object.h"
|
||||
#include "imap_grid.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_preview.h"
|
||||
#include "imap_rectangle.h"
|
||||
|
||||
#define PREVIEW_MASK GDK_EXPOSURE_MASK | \
|
||||
GDK_MOTION_NOTIFY | \
|
||||
|
@ -338,13 +338,43 @@ preview_zoom(Preview_t *preview, gint zoom_factor)
|
|||
preview_redraw(preview);
|
||||
}
|
||||
|
||||
void
|
||||
GdkCursorType
|
||||
preview_set_cursor(Preview_t *preview, GdkCursorType cursor_type)
|
||||
{
|
||||
GdkCursorType prev_cursor = preview->cursor;
|
||||
GdkCursor *cursor = gdk_cursor_new(cursor_type);
|
||||
gdk_window_set_cursor(preview->window->window, cursor);
|
||||
gdk_cursor_destroy(cursor);
|
||||
gdk_flush();
|
||||
preview->cursor = cursor_type;
|
||||
return prev_cursor;
|
||||
}
|
||||
|
||||
static GtkTargetEntry target_table[] = {
|
||||
{"STRING", 0, 1 },
|
||||
{"text/plain", 0, 2 }
|
||||
};
|
||||
|
||||
static void
|
||||
handle_drop(GtkWidget *widget, GdkDragContext *context, gint x, gint y,
|
||||
GtkSelectionData *data, guint info, guint time)
|
||||
{
|
||||
gboolean success = FALSE;
|
||||
if (data->length >= 0 && data->format == 8) {
|
||||
ObjectList_t *list = get_shapes();
|
||||
Object_t *obj;
|
||||
|
||||
x = get_real_coord(x);
|
||||
y = get_real_coord(y);
|
||||
obj = object_list_find(list, x, y);
|
||||
if (obj && !obj->locked) {
|
||||
command_list_add(edit_object_command_new(obj));
|
||||
object_set_url(obj, data->data);
|
||||
object_emit_update_signal(obj);
|
||||
success = TRUE;
|
||||
}
|
||||
}
|
||||
gtk_drag_finish(context, success, FALSE, time);
|
||||
}
|
||||
|
||||
Preview_t*
|
||||
|
@ -367,6 +397,12 @@ make_preview(GDrawable *drawable)
|
|||
(GtkSignalFunc) preview_expose,
|
||||
data);
|
||||
|
||||
/* Handle drop of links in preview widget */
|
||||
gtk_drag_dest_set(preview, GTK_DEST_DEFAULT_ALL, target_table,
|
||||
2, GDK_ACTION_COPY);
|
||||
gtk_signal_connect(GTK_OBJECT(preview), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC(handle_drop), NULL);
|
||||
|
||||
data->width = gimp_drawable_width(drawable->id);
|
||||
data->height = gimp_drawable_height(drawable->id);
|
||||
gtk_preview_size(GTK_PREVIEW(preview), data->width, data->height);
|
||||
|
|
|
@ -38,6 +38,8 @@ typedef struct {
|
|||
gint height;
|
||||
gint exp_id;
|
||||
GPixelRgn src_rgn;
|
||||
|
||||
GdkCursorType cursor;
|
||||
} Preview_t;
|
||||
|
||||
Preview_t *make_preview(GDrawable *drawable);
|
||||
|
@ -52,6 +54,7 @@ gint preview_get_width(GtkWidget *preview);
|
|||
gint preview_get_height(GtkWidget *preview);
|
||||
|
||||
void preview_zoom(Preview_t *preview, gint zoom_factor);
|
||||
void preview_set_cursor(Preview_t *preview, GdkCursorType cursor_type);
|
||||
GdkCursorType preview_set_cursor(Preview_t *preview,
|
||||
GdkCursorType cursor_type);
|
||||
|
||||
#endif /* _IMAP_PREVIEW_H */
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_object_popup.h"
|
||||
|
@ -31,7 +32,7 @@
|
|||
|
||||
static gboolean rectangle_is_valid(Object_t *obj);
|
||||
static Object_t *rectangle_clone(Object_t *obj);
|
||||
static Object_t *rectangle_assign(Object_t *obj, Object_t *des);
|
||||
static void rectangle_assign(Object_t *obj, Object_t *des);
|
||||
static void rectangle_normalize(Object_t *obj);
|
||||
static void rectangle_draw(Object_t *obj, GdkWindow *window, GdkGC* gc);
|
||||
static void rectangle_draw_sashes(Object_t *obj, GdkWindow *window, GdkGC* gc);
|
||||
|
@ -42,7 +43,7 @@ static void rectangle_get_dimensions(Object_t *obj, gint *x, gint *y,
|
|||
static void rectangle_resize(Object_t *obj, gint percentage_x,
|
||||
gint percentage_y);
|
||||
static void rectangle_move(Object_t *obj, gint dx, gint dy);
|
||||
static gpointer rectangle_create_info_tab(GtkWidget *notebook);
|
||||
static gpointer rectangle_create_info_widget(GtkWidget *frame);
|
||||
static void rectangle_fill_info_tab(Object_t *obj, gpointer data);
|
||||
static void rectangle_set_initial_focus(Object_t *obj, gpointer data);
|
||||
static void rectangle_update(Object_t *obj, gpointer data);
|
||||
|
@ -55,6 +56,7 @@ static void rectangle_write_ncsa(Object_t *obj, gpointer param,
|
|||
static char** rectangle_get_icon_data(void);
|
||||
|
||||
static ObjectClass_t rectangle_class = {
|
||||
N_("Rectangle"),
|
||||
NULL, /* info_dialog */
|
||||
NULL, /* icon */
|
||||
NULL, /* mask */
|
||||
|
@ -71,7 +73,8 @@ static ObjectClass_t rectangle_class = {
|
|||
rectangle_get_dimensions,
|
||||
rectangle_resize,
|
||||
rectangle_move,
|
||||
rectangle_create_info_tab,
|
||||
rectangle_create_info_widget,
|
||||
rectangle_fill_info_tab, /* rectangle_update_info_widget */
|
||||
rectangle_fill_info_tab,
|
||||
rectangle_set_initial_focus,
|
||||
rectangle_update,
|
||||
|
@ -128,7 +131,7 @@ rectangle_clone(Object_t *obj)
|
|||
return &clone->obj;
|
||||
}
|
||||
|
||||
static Object_t*
|
||||
static void
|
||||
rectangle_assign(Object_t *obj, Object_t *des)
|
||||
{
|
||||
Rectangle_t *src_rectangle = ObjectToRectangle(obj);
|
||||
|
@ -137,7 +140,6 @@ rectangle_assign(Object_t *obj, Object_t *des)
|
|||
des_rectangle->y = src_rectangle->y;
|
||||
des_rectangle->width = src_rectangle->width;
|
||||
des_rectangle->height = src_rectangle->height;
|
||||
return object_copy(obj, des);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -317,58 +319,81 @@ typedef struct {
|
|||
GtkWidget *height;
|
||||
} RectangleProperties_t;
|
||||
|
||||
#ifdef _NOT_READY_YET_
|
||||
static void
|
||||
x_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((RectangleProperties_t*) data)->obj;
|
||||
gint x = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToRectangle(obj)->x = x;
|
||||
object_emit_changed_signal(obj);
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
y_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((RectangleProperties_t*) data)->obj;
|
||||
gint y = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToRectangle(obj)->y = y;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
width_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((RectangleProperties_t*) data)->obj;
|
||||
gint width = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToRectangle(obj)->width = width;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
height_changed_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Object_t *obj = ((RectangleProperties_t*) data)->obj;
|
||||
gint height = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
ObjectToRectangle(obj)->height = height;
|
||||
edit_area_info_dialog_emit_geometry_signal(obj->class->info_dialog);
|
||||
}
|
||||
#endif
|
||||
|
||||
static gpointer
|
||||
rectangle_create_info_tab(GtkWidget *notebook)
|
||||
rectangle_create_info_widget(GtkWidget *frame)
|
||||
{
|
||||
RectangleProperties_t *props = g_new(RectangleProperties_t, 1);
|
||||
GtkWidget *vbox, *table, *label;
|
||||
GtkWidget *table;
|
||||
gint max_width = get_image_width();
|
||||
gint max_height = get_image_height();
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 1);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
table = gtk_table_new(5, 3, FALSE);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
|
||||
table = gtk_table_new(4, 3, FALSE);
|
||||
gtk_container_add(GTK_CONTAINER(frame), table);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
|
||||
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
|
||||
gtk_widget_show(table);
|
||||
|
||||
create_label_in_table(table, 0, 0, "Upper left x:");
|
||||
create_label_in_table(table, 0, 0, _("Upper left x:"));
|
||||
props->x = create_spin_button_in_table(table, 0, 1, 1, 0, max_width - 1);
|
||||
/* gtk_signal_connect(GTK_OBJECT(props->x), "changed",
|
||||
(GtkSignalFunc) x_changed_cb, (gpointer) props); */
|
||||
create_label_in_table(table, 0, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(props->x), "changed",
|
||||
(GtkSignalFunc) x_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 0, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 1, 0, "Upper left y:");
|
||||
create_label_in_table(table, 1, 0, _("Upper left y:"));
|
||||
props->y = create_spin_button_in_table(table, 1, 1, 1, 0, max_height - 1);
|
||||
create_label_in_table(table, 1, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(props->y), "changed",
|
||||
(GtkSignalFunc) y_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 1, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 2, 0, "Width:");
|
||||
create_label_in_table(table, 2, 0, _("Width:"));
|
||||
props->width = create_spin_button_in_table(table, 2, 1, 1, 1, max_width);
|
||||
create_label_in_table(table, 2, 2, "pixels");
|
||||
gtk_signal_connect(GTK_OBJECT(props->width), "changed",
|
||||
(GtkSignalFunc) width_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 2, 2, _("pixels"));
|
||||
|
||||
create_label_in_table(table, 3, 0, "Height:");
|
||||
create_label_in_table(table, 3, 0, _("Height:"));
|
||||
props->height = create_spin_button_in_table(table, 3, 1, 1, 1, max_height);
|
||||
create_label_in_table(table, 3, 2, "pixels");
|
||||
|
||||
/* create_check_button_in_table(table, 4, 0, "Preview");*/
|
||||
|
||||
label = gtk_label_new("Rectangle");
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
|
||||
gtk_signal_connect(GTK_OBJECT(props->height), "changed",
|
||||
(GtkSignalFunc) height_changed_cb, (gpointer) props);
|
||||
create_label_in_table(table, 3, 2, _("pixels"));
|
||||
|
||||
return props;
|
||||
}
|
||||
|
|
|
@ -23,10 +23,12 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "imap_cmd_edit_object.h"
|
||||
#include "imap_cmd_select.h"
|
||||
#include "imap_cmd_unselect.h"
|
||||
#include "imap_cmd_unselect_all.h"
|
||||
#include "imap_edit_area_info.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_selection.h"
|
||||
|
@ -62,14 +64,16 @@ select_row_cb(GtkWidget *widget, gint row, gint column, GdkEventButton *event,
|
|||
{
|
||||
data->selected_child = widget;
|
||||
data->selected_row = row;
|
||||
|
||||
|
||||
set_buttons(data);
|
||||
if (data->select_lock) {
|
||||
data->select_lock = FALSE;
|
||||
} else {
|
||||
Object_t *obj = gtk_clist_get_row_data(GTK_CLIST(data->list), row);
|
||||
Command_t *command;
|
||||
if (event->state & GDK_SHIFT_MASK) {
|
||||
/* Note: event can be NULL if select_row_cb is called as a result of
|
||||
a key press! */
|
||||
if (event && event->state & GDK_SHIFT_MASK) {
|
||||
command = select_command_new(obj);
|
||||
} else {
|
||||
Command_t *sub_command;
|
||||
|
@ -104,6 +108,39 @@ unselect_row_cb(GtkWidget *widget, gint row, gint column,
|
|||
set_buttons(data);
|
||||
}
|
||||
|
||||
static void
|
||||
row_move_cb(GtkWidget *widget, gint src, gint des)
|
||||
{
|
||||
printf("move: %d %d\n", src, des);
|
||||
}
|
||||
|
||||
static gboolean doubleclick;
|
||||
|
||||
static void
|
||||
button_press_cb(GtkWidget *widget, GdkEventButton *event, Selection_t *data)
|
||||
{
|
||||
if (event->button == 1) {
|
||||
if (doubleclick) {
|
||||
gint row, column;
|
||||
doubleclick = FALSE;
|
||||
if (gtk_clist_get_selection_info(GTK_CLIST(widget), (gint) event->x,
|
||||
(gint) event->y, &row, &column)) {
|
||||
Object_t *obj = gtk_clist_get_row_data(GTK_CLIST(data->list), row);
|
||||
object_edit(obj, TRUE);
|
||||
}
|
||||
} else {
|
||||
doubleclick = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
button_release_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
||||
{
|
||||
if (event->button == 1)
|
||||
doubleclick = FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
selection_command(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
|
@ -264,6 +301,32 @@ toggle_order(GtkWidget *widget, gint column, gpointer data)
|
|||
/* Fix me! */
|
||||
}
|
||||
|
||||
static GtkTargetEntry target_table[] = {
|
||||
{"STRING", 0, 1 },
|
||||
{"text/plain", 0, 2 }
|
||||
};
|
||||
|
||||
static void
|
||||
handle_drop(GtkWidget *widget, GdkDragContext *context, gint x, gint y,
|
||||
GtkSelectionData *data, guint info, guint time)
|
||||
{
|
||||
gboolean success = FALSE;
|
||||
if (data->length >= 0 && data->format == 8) {
|
||||
gint row, column;
|
||||
if (gtk_clist_get_selection_info(GTK_CLIST(widget), x, y, &row,
|
||||
&column)) {
|
||||
Object_t *obj = gtk_clist_get_row_data(GTK_CLIST(widget), row + 1);
|
||||
if (!obj->locked) {
|
||||
command_list_add(edit_object_command_new(obj));
|
||||
object_set_url(obj, data->data);
|
||||
object_emit_update_signal(obj);
|
||||
success = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
gtk_drag_finish(context, success, FALSE, time);
|
||||
}
|
||||
|
||||
Selection_t*
|
||||
make_selection(GtkWidget *window, ObjectList_t *object_list)
|
||||
{
|
||||
|
@ -271,7 +334,7 @@ make_selection(GtkWidget *window, ObjectList_t *object_list)
|
|||
GtkWidget *swin, *frame, *hbox;
|
||||
GtkWidget *toolbar;
|
||||
GtkWidget *list;
|
||||
gchar *titles[] = {"#", "URL", "Target", "Comment"};
|
||||
gchar *titles[] = {"#", N_("URL"), N_("Target"), N_("Comment")};
|
||||
|
||||
data->object_list = object_list;
|
||||
data->selected_child = NULL;
|
||||
|
@ -292,21 +355,20 @@ make_selection(GtkWidget *window, ObjectList_t *object_list)
|
|||
gtk_container_add(GTK_CONTAINER(hbox), toolbar);
|
||||
|
||||
/* Create selection */
|
||||
frame = gtk_frame_new("Selection");
|
||||
frame = gtk_frame_new(_("Selection"));
|
||||
gtk_container_set_border_width(GTK_CONTAINER(frame), 10);
|
||||
gtk_container_add(GTK_CONTAINER(hbox), frame);
|
||||
gtk_widget_show(frame);
|
||||
|
||||
data->list = list = gtk_clist_new_with_titles(4, titles);
|
||||
GTK_WIDGET_UNSET_FLAGS(data->list, GTK_CAN_FOCUS);
|
||||
gtk_clist_column_titles_passive(GTK_CLIST(list));
|
||||
gtk_clist_column_title_active(GTK_CLIST(list), 0);
|
||||
gtk_clist_set_column_width(GTK_CLIST(list), 0, 16);
|
||||
gtk_clist_set_column_width(GTK_CLIST(list), 1, 80);
|
||||
gtk_clist_set_column_width(GTK_CLIST(list), 2, 64);
|
||||
gtk_clist_set_column_width(GTK_CLIST(list), 3, 64);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(list), "click_column",
|
||||
GTK_SIGNAL_FUNC(toggle_order), (gpointer) data);
|
||||
gtk_clist_set_reorderable(GTK_CLIST(list), TRUE);
|
||||
|
||||
/* Create scrollable window */
|
||||
swin = gtk_scrolled_window_new(NULL, NULL);
|
||||
|
@ -315,19 +377,35 @@ make_selection(GtkWidget *window, ObjectList_t *object_list)
|
|||
gtk_widget_show(swin);
|
||||
|
||||
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(swin), list);
|
||||
|
||||
gtk_object_set_user_data(GTK_OBJECT(list), data);
|
||||
gtk_widget_show(list);
|
||||
|
||||
/* Drop support */
|
||||
gtk_drag_dest_set(list, GTK_DEST_DEFAULT_ALL, target_table,
|
||||
2, GDK_ACTION_COPY);
|
||||
gtk_signal_connect(GTK_OBJECT(list), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC(handle_drop), NULL);
|
||||
|
||||
/* Callbacks we are interested in */
|
||||
gtk_signal_connect(GTK_OBJECT(list), "click_column",
|
||||
GTK_SIGNAL_FUNC(toggle_order), data);
|
||||
gtk_signal_connect(GTK_OBJECT(list), "select_row",
|
||||
GTK_SIGNAL_FUNC(select_row_cb), data);
|
||||
gtk_signal_connect(GTK_OBJECT(list), "unselect_row",
|
||||
GTK_SIGNAL_FUNC(unselect_row_cb), data);
|
||||
gtk_signal_connect(GTK_OBJECT(list), "row_move",
|
||||
GTK_SIGNAL_FUNC(row_move_cb), data);
|
||||
|
||||
/* For handling doubleclick */
|
||||
gtk_signal_connect(GTK_OBJECT(list), "button_press_event",
|
||||
GTK_SIGNAL_FUNC(button_press_cb), data);
|
||||
gtk_signal_connect(GTK_OBJECT(list), "button_release_event",
|
||||
GTK_SIGNAL_FUNC(button_release_cb), data);
|
||||
|
||||
gtk_clist_set_selection_mode(GTK_CLIST(list), GTK_SELECTION_MULTIPLE);
|
||||
|
||||
set_buttons(data);
|
||||
|
||||
/* Set callbacks we're interested in */
|
||||
/* Set object list callbacks we're interested in */
|
||||
object_list_add_add_cb(object_list, object_added_cb, data);
|
||||
object_list_add_update_cb(object_list, object_updated_cb, data);
|
||||
object_list_add_remove_cb(object_list, object_removed_cb, data);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include "imap_browse.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_settings.h"
|
||||
#include "imap_string.h"
|
||||
|
@ -63,7 +64,7 @@ make_settings_dialog()
|
|||
DefaultDialog_t *dialog;
|
||||
GSList *group;
|
||||
|
||||
dialog = data->dialog = make_default_dialog("Settings for this Mapfile");
|
||||
dialog = data->dialog = make_default_dialog(_("Settings for this Mapfile"));
|
||||
default_dialog_set_ok_cb(dialog, settings_ok_cb, (gpointer) data);
|
||||
|
||||
table = gtk_table_new(9, 3, FALSE);
|
||||
|
@ -74,21 +75,21 @@ make_settings_dialog()
|
|||
gtk_container_set_border_width(GTK_CONTAINER(table), 10);
|
||||
gtk_widget_show(table);
|
||||
|
||||
create_label_in_table(table, 0, 0, "Filename:");
|
||||
create_label_in_table(table, 0, 0, _("Filename:"));
|
||||
data->filename = create_label_in_table(table, 0, 1, "");
|
||||
|
||||
create_label_in_table(table, 1, 0, "Image name:");
|
||||
data->imagename = browse_widget_new("Select Image File");
|
||||
create_label_in_table(table, 1, 0, _("Image name:"));
|
||||
data->imagename = browse_widget_new(_("Select Image File"));
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), data->imagename->hbox, 1, 2,
|
||||
1, 2);
|
||||
|
||||
create_label_in_table(table, 2, 0, "Title:");
|
||||
create_label_in_table(table, 2, 0, _("Title:"));
|
||||
data->title = create_entry_in_table(table, 2, 1);
|
||||
create_label_in_table(table, 3, 0, "Author:");
|
||||
create_label_in_table(table, 3, 0, _("Author:"));
|
||||
data->author = create_entry_in_table(table, 3, 1);
|
||||
create_label_in_table(table, 4, 0, "Default URL:");
|
||||
create_label_in_table(table, 4, 0, _("Default URL:"));
|
||||
data->default_url = create_entry_in_table(table, 4, 1);
|
||||
create_label_in_table(table, 5, 0, "Description:");
|
||||
create_label_in_table(table, 5, 0, _("Description:"));
|
||||
|
||||
data->description = gtk_text_new(NULL, NULL);
|
||||
gtk_text_set_editable(GTK_TEXT(data->description), TRUE);
|
||||
|
@ -103,7 +104,7 @@ make_settings_dialog()
|
|||
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
|
||||
gtk_widget_show(vscrollbar);
|
||||
|
||||
frame = gtk_frame_new("Map file format");
|
||||
frame = gtk_frame_new(_("Map file format"));
|
||||
gtk_widget_show(frame);
|
||||
gtk_table_attach_defaults(GTK_TABLE(table), frame, 1, 2, 9, 10);
|
||||
hbox = gtk_hbox_new(FALSE, 1);
|
||||
|
@ -144,7 +145,7 @@ do_settings_dialog(void)
|
|||
dialog = make_settings_dialog();
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(dialog->filename),
|
||||
(filename) ? filename : "<Untitled>");
|
||||
(filename) ? filename : _("<Untitled>"));
|
||||
browse_widget_set_filename(dialog->imagename, info->image_name);
|
||||
gtk_entry_set_text(GTK_ENTRY(dialog->title), info->title);
|
||||
gtk_entry_set_text(GTK_ENTRY(dialog->author), info->author);
|
||||
|
@ -164,3 +165,4 @@ do_settings_dialog(void)
|
|||
gtk_text_insert(GTK_TEXT(dialog->description), NULL, NULL, NULL,
|
||||
info->description, -1);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "imap_default_dialog.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_source.h"
|
||||
|
||||
|
@ -50,7 +51,7 @@ do_source_dialog(void)
|
|||
if (!dialog) {
|
||||
GtkWidget *window;
|
||||
|
||||
dialog = make_default_dialog("View Source");
|
||||
dialog = make_default_dialog(_("View Source"));
|
||||
default_dialog_hide_cancel_button(dialog);
|
||||
default_dialog_hide_apply_button(dialog);
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ make_statusbar(GtkWidget *main_vbox, GtkWidget *window)
|
|||
statusbar->xy = gtk_entry_new();
|
||||
gtk_widget_set_usize(statusbar->xy, 64, -1);
|
||||
gtk_entry_set_editable(GTK_ENTRY(statusbar->xy), FALSE);
|
||||
GTK_WIDGET_UNSET_FLAGS(statusbar->xy, GTK_CAN_FOCUS);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), statusbar->xy, FALSE, FALSE, 0);
|
||||
gtk_widget_show(statusbar->xy);
|
||||
|
||||
|
@ -74,6 +75,7 @@ make_statusbar(GtkWidget *main_vbox, GtkWidget *window)
|
|||
statusbar->dimension = gtk_entry_new();
|
||||
gtk_widget_set_usize(statusbar->dimension, 64, -1);
|
||||
gtk_entry_set_editable(GTK_ENTRY(statusbar->dimension), FALSE);
|
||||
GTK_WIDGET_UNSET_FLAGS(statusbar->dimension, GTK_CAN_FOCUS);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), statusbar->dimension, FALSE, FALSE, 0);
|
||||
gtk_widget_show(statusbar->dimension);
|
||||
|
||||
|
|
|
@ -26,7 +26,10 @@
|
|||
gchar*
|
||||
g_strreplace(gchar **old_str, const gchar *new_str)
|
||||
{
|
||||
g_free(*old_str);
|
||||
return *old_str = g_strdup(new_str);
|
||||
if (*old_str != new_str) {
|
||||
g_free(*old_str);
|
||||
*old_str = g_strdup(new_str);
|
||||
}
|
||||
return *old_str;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "imap_string.h"
|
||||
#include "imap_taglist.h"
|
||||
|
||||
static Tag_t*
|
||||
tag_create(const gchar *name, const gchar *value)
|
||||
{
|
||||
Tag_t *tag = g_new(Tag_t, 1);
|
||||
tag->name = g_strdup(name);
|
||||
tag->value = g_strdup(value);
|
||||
return tag;
|
||||
}
|
||||
|
||||
static Tag_t*
|
||||
tag_clone(Tag_t *src)
|
||||
{
|
||||
return tag_create(src->name, src->value);
|
||||
}
|
||||
|
||||
static void
|
||||
tag_destruct(Tag_t *tag)
|
||||
{
|
||||
g_free(tag->name);
|
||||
g_free(tag->value);
|
||||
g_free(tag);
|
||||
}
|
||||
|
||||
static void
|
||||
tag_write(Tag_t *tag)
|
||||
{
|
||||
printf("\"%s\"=\"%s\"\n", tag->name, tag->value);
|
||||
}
|
||||
|
||||
TagList_t*
|
||||
taglist_create(void)
|
||||
{
|
||||
TagList_t *tlist = g_new(TagList_t, 1);
|
||||
tlist->list = NULL;
|
||||
return tlist;
|
||||
}
|
||||
|
||||
TagList_t*
|
||||
taglist_clone(TagList_t *src)
|
||||
{
|
||||
return taglist_copy(src, taglist_create());
|
||||
}
|
||||
|
||||
static void
|
||||
taglist_remove_all(TagList_t *tlist)
|
||||
{
|
||||
GList *p;
|
||||
for (p = tlist->list; p; p = p->next)
|
||||
tag_destruct((Tag_t*) p->data);
|
||||
g_list_free(tlist->list);
|
||||
tlist->list = NULL;
|
||||
}
|
||||
|
||||
TagList_t*
|
||||
taglist_copy(TagList_t *src, TagList_t *des)
|
||||
{
|
||||
GList *p;
|
||||
|
||||
taglist_remove_all(des);
|
||||
for (p = src->list; p; p = p->next)
|
||||
des->list = g_list_append(des->list, tag_clone((Tag_t*) p->data));
|
||||
return des;
|
||||
}
|
||||
|
||||
void
|
||||
taglist_destruct(TagList_t *tlist)
|
||||
{
|
||||
taglist_remove_all(tlist);
|
||||
g_free(tlist);
|
||||
}
|
||||
|
||||
void
|
||||
taglist_set(TagList_t *tlist, const gchar *name, const gchar *value)
|
||||
{
|
||||
GList *p;
|
||||
Tag_t *tag;
|
||||
|
||||
for (p = tlist->list; p; p = p->next) {
|
||||
tag = (Tag_t*) p->data;
|
||||
if (!g_strcasecmp(tag->name, name)) {
|
||||
g_strreplace(&tag->value, value);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* Tag not found, add a new tag */
|
||||
tlist->list = g_list_append(tlist->list, tag_create(name, value));
|
||||
}
|
||||
|
||||
void
|
||||
taglist_write(TagList_t *tlist)
|
||||
{
|
||||
GList *p;
|
||||
for (p = tlist->list; p; p = p->next)
|
||||
tag_write((Tag_t*) p->data);
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* This is a plug-in for the GIMP.
|
||||
*
|
||||
* Generates clickable image maps.
|
||||
*
|
||||
* Copyright (C) 1998-1999 Maurits Rijk lpeek.mrijk@consunet.nl
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _IMAP_TAGLIST_H
|
||||
#define _IMAP_TAGLIST_H
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
typedef struct {
|
||||
gchar *name;
|
||||
gchar *value;
|
||||
} Tag_t;
|
||||
|
||||
typedef struct {
|
||||
GList *list;
|
||||
} TagList_t;
|
||||
|
||||
TagList_t *taglist_create(void);
|
||||
TagList_t *taglist_clone(TagList_t *src);
|
||||
TagList_t *taglist_copy(TagList_t *src, TagList_t *des);
|
||||
void taglist_destruct(TagList_t *tlist);
|
||||
void taglist_set(TagList_t *tlist, const gchar *id, const gchar *value);
|
||||
void taglist_write(TagList_t *tlist);
|
||||
|
||||
#endif /* _IMAP_TAGLIST_H */
|
|
@ -21,6 +21,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_main.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_toolbar.h"
|
||||
|
@ -107,59 +108,60 @@ make_toolbar(GtkWidget *main_vbox, GtkWidget *window)
|
|||
gtk_container_add(GTK_CONTAINER(handlebox), toolbar);
|
||||
|
||||
make_toolbar_icon(toolbar, window, open_xpm, "Open",
|
||||
"Open", toolbar_command, &data->cmd_open);
|
||||
make_toolbar_icon(toolbar, window, save_xpm, "Save",
|
||||
_("Open"), toolbar_command, &data->cmd_open);
|
||||
make_toolbar_icon(toolbar, window, save_xpm, _("Save"),
|
||||
"Save", toolbar_command, &data->cmd_save);
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
make_toolbar_icon(toolbar, window, preferences_xpm, "Preferences",
|
||||
"Preferences", toolbar_command, &data->cmd_preferences);
|
||||
_("Preferences"), toolbar_command,
|
||||
&data->cmd_preferences);
|
||||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
data->undo = make_toolbar_icon(toolbar, window, undo_xpm, "Undo",
|
||||
"Undo", toolbar_command, &data->cmd_undo);
|
||||
_("Undo"), toolbar_command, &data->cmd_undo);
|
||||
gtk_widget_set_sensitive(data->undo, FALSE);
|
||||
data->redo = make_toolbar_icon(toolbar, window, redo_xpm, "Redo",
|
||||
"Redo", toolbar_command, &data->cmd_redo);
|
||||
_("Redo"), toolbar_command, &data->cmd_redo);
|
||||
gtk_widget_set_sensitive(data->redo, FALSE);
|
||||
command_list_add_update_cb(command_list_changed, data);
|
||||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
data->cut = make_toolbar_icon(toolbar, window, cut_xpm, "Cut",
|
||||
"Cut", toolbar_command, &data->cmd_cut);
|
||||
_("Cut"), toolbar_command, &data->cmd_cut);
|
||||
gtk_widget_set_sensitive(data->cut, FALSE);
|
||||
data->copy = make_toolbar_icon(toolbar, window, copy_xpm, "Copy",
|
||||
"Copy", toolbar_command, &data->cmd_copy);
|
||||
_("Copy"), toolbar_command, &data->cmd_copy);
|
||||
gtk_widget_set_sensitive(data->copy, FALSE);
|
||||
paste = make_toolbar_icon(toolbar, window, paste_xpm, "Paste",
|
||||
"Paste", toolbar_command, &data->cmd_paste);
|
||||
_("Paste"), toolbar_command, &data->cmd_paste);
|
||||
gtk_widget_set_sensitive(paste, FALSE);
|
||||
paste_buffer_add_add_cb(paste_buffer_added, (gpointer) paste);
|
||||
paste_buffer_add_remove_cb(paste_buffer_removed, (gpointer) paste);
|
||||
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
data->zoom_in = make_toolbar_icon(toolbar, window, zoom_in_xpm, "ZoomIn",
|
||||
"Zoom in", toolbar_command,
|
||||
_("Zoom in"), toolbar_command,
|
||||
&data->cmd_zoom_in);
|
||||
data->zoom_out = make_toolbar_icon(toolbar, window, zoom_out_xpm, "ZoomOut",
|
||||
"Zoom out", toolbar_command,
|
||||
_("Zoom out"), toolbar_command,
|
||||
&data->cmd_zoom_out);
|
||||
gtk_widget_set_sensitive(data->zoom_out, FALSE);
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
make_toolbar_icon(toolbar, window, map_info_xpm, "EditMapInfo",
|
||||
"Edit Map Info", toolbar_command,
|
||||
_("Edit Map Info"), toolbar_command,
|
||||
&data->cmd_edit_map_info);
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
data->to_front = make_toolbar_icon(toolbar, window, to_front_xpm, "ToFront",
|
||||
"Move To Front", toolbar_command,
|
||||
_("Move To Front"), toolbar_command,
|
||||
&data->cmd_move_to_front);
|
||||
gtk_widget_set_sensitive(data->to_front, FALSE);
|
||||
data->to_back = make_toolbar_icon(toolbar, window, to_back_xpm, "ToBack",
|
||||
"Send To Back", toolbar_command,
|
||||
_("Send To Back"), toolbar_command,
|
||||
&data->cmd_send_to_back);
|
||||
gtk_widget_set_sensitive(data->to_back, FALSE);
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
data->grid = make_toolbar_toggle_icon(toolbar, window, grid_xpm, "Grid",
|
||||
"Grid", toolbar_command,
|
||||
_("Grid"), toolbar_command,
|
||||
&data->cmd_grid);
|
||||
|
||||
gtk_widget_show(toolbar);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "imap_circle.h"
|
||||
#include "imap_edit_area_info.h"
|
||||
#include "imap_main.h"
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
#include "imap_menu.h"
|
||||
#include "imap_misc.h"
|
||||
#include "imap_polygon.h"
|
||||
|
@ -125,27 +126,27 @@ make_tools(GtkWidget *window)
|
|||
gtk_container_add(GTK_CONTAINER(handlebox), toolbar);
|
||||
|
||||
_tools.arrow = make_toolbar_radio_icon(toolbar, window, NULL, arrow_xpm,
|
||||
"Select", "Select existing area",
|
||||
"Select", _("Select existing area"),
|
||||
arrow_clicked, NULL);
|
||||
_tools.rectangle = make_toolbar_radio_icon(toolbar, window, _tools.arrow,
|
||||
rectangle_xpm, "Rectangle",
|
||||
"Define Rectangle area",
|
||||
_("Define Rectangle area"),
|
||||
rectangle_clicked, NULL);
|
||||
_tools.circle = make_toolbar_radio_icon(toolbar, window, _tools.rectangle,
|
||||
circle_xpm, "Circle",
|
||||
"Define Circle/Oval area",
|
||||
_("Define Circle/Oval area"),
|
||||
circle_clicked, NULL);
|
||||
_tools.polygon = make_toolbar_radio_icon(toolbar, window, _tools.circle,
|
||||
polygon_xpm, "Polygon",
|
||||
"Define Polygon area",
|
||||
_("Define Polygon area"),
|
||||
polygon_clicked, NULL);
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
_tools.edit = make_toolbar_icon(toolbar, window, edit_xpm, "Edit",
|
||||
"Edit selected area info", tools_command,
|
||||
_("Edit selected area info"), tools_command,
|
||||
&_tools.cmd_edit);
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
_tools.delete = make_toolbar_icon(toolbar, window, delete_xpm, "Delete",
|
||||
"Delete selected area", tools_command,
|
||||
_("Delete selected area"), tools_command,
|
||||
&_tools.cmd_delete);
|
||||
|
||||
gtk_widget_show(toolbar);
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
Sun Oct 24 22:52:01 MEST 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* POTFILES.in: added imagemap plug-in
|
||||
|
||||
Sun Oct 24 18:58:16 MEST 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* de.po: Checked in first german version
|
||||
(done by Felix Natter <f.natter@ndh.net>
|
||||
(done by Felix Natter <f.natter@ndh.net>
|
||||
and Daniel Eggert <Daniel.Egger@rz.fh-muenchen.de>)
|
||||
|
||||
1999-10-21 Kjartan Maraas <kmaraas@online.no>
|
||||
|
|
|
@ -3,20 +3,20 @@
|
|||
|
||||
plug-ins/AlienMap/AlienMap.c
|
||||
plug-ins/AlienMap2/AlienMap2.c
|
||||
plug-ins/common/CEL.c
|
||||
plug-ins/common/CML_explorer.c
|
||||
plug-ins/Lighting/lighting_main.c
|
||||
plug-ins/Lighting/lighting_ui.c
|
||||
plug-ins/bmp/bmp.c
|
||||
plug-ins/bmp/bmpread.c
|
||||
plug-ins/bmp/bmpwrite.c
|
||||
plug-ins/borderaverage/borderaverage.c
|
||||
plug-ins/common/CEL.c
|
||||
plug-ins/common/CML_explorer.c
|
||||
plug-ins/common/animationplay.c
|
||||
plug-ins/common/animoptimize.c
|
||||
plug-ins/common/apply_lens.c
|
||||
plug-ins/common/autocrop.c
|
||||
plug-ins/common/autostretch_hsv.c
|
||||
plug-ins/common/blur.c
|
||||
plug-ins/bmp/bmp.c
|
||||
plug-ins/bmp/bmpread.c
|
||||
plug-ins/bmp/bmpwrite.c
|
||||
plug-ins/borderaverage/borderaverage.c
|
||||
plug-ins/common/bumpmap.c
|
||||
plug-ins/common/bz2.c
|
||||
plug-ins/common/c_astretch.c
|
||||
|
@ -29,6 +29,21 @@ plug-ins/common/cubism.c
|
|||
plug-ins/common/decompose.c
|
||||
plug-ins/common/depthmerge.c
|
||||
plug-ins/common/destripe.c
|
||||
plug-ins/common/gif.c
|
||||
plug-ins/common/gifload.c
|
||||
plug-ins/common/film.c
|
||||
plug-ins/common/normalize.c
|
||||
plug-ins/common/oilify.c
|
||||
plug-ins/common/png.c
|
||||
plug-ins/common/ps.c
|
||||
plug-ins/common/rotate.c
|
||||
plug-ins/common/rotators.c
|
||||
plug-ins/common/threshold_alpha.c
|
||||
plug-ins/common/warp.c
|
||||
plug-ins/common/xbm.c
|
||||
plug-ins/common/xpm.c
|
||||
plug-ins/common/xwd.c
|
||||
plug-ins/common/zealouscrop.c
|
||||
plug-ins/gap/gap_arr_dialog.c
|
||||
plug-ins/gap/gap_dbbrowser_utils.c
|
||||
plug-ins/gap/gap_filter_foreach.c
|
||||
|
@ -43,8 +58,6 @@ plug-ins/gap/gap_range_ops.c
|
|||
plug-ins/gap/gap_resi_dialog.c
|
||||
plug-ins/gap/gap_split.c
|
||||
plug-ins/gap/resize.c
|
||||
plug-ins/common/gif.c
|
||||
plug-ins/common/gifload.c
|
||||
plug-ins/gimpressionist/brush.c
|
||||
plug-ins/gimpressionist/color.c
|
||||
plug-ins/gimpressionist/general.c
|
||||
|
@ -60,31 +73,54 @@ plug-ins/gimpressionist/preview.c
|
|||
plug-ins/gimpressionist/repaint.c
|
||||
plug-ins/gimpressionist/size.c
|
||||
plug-ins/gimpressionist/sizemap.c
|
||||
plug-ins/common/guillotine.c
|
||||
plug-ins/common/jpeg.c
|
||||
plug-ins/common/lic.c
|
||||
plug-ins/common/mail.c
|
||||
plug-ins/imagemap/imap_about.c
|
||||
plug-ins/imagemap/imap_circle.c
|
||||
plug-ins/imagemap/imap_cmd_clear.c
|
||||
plug-ins/imagemap/imap_cmd_copy.c
|
||||
plug-ins/imagemap/imap_cmd_copy_object.c
|
||||
plug-ins/imagemap/imap_cmd_create.c
|
||||
plug-ins/imagemap/imap_cmd_cut.c
|
||||
plug-ins/imagemap/imap_cmd_cut_object.c
|
||||
plug-ins/imagemap/imap_cmd_delete.c
|
||||
plug-ins/imagemap/imap_cmd_delete_point.c
|
||||
plug-ins/imagemap/imap_cmd_edit_object.c
|
||||
plug-ins/imagemap/imap_cmd_guides.c
|
||||
plug-ins/imagemap/imap_cmd_insert_point.c
|
||||
plug-ins/imagemap/imap_cmd_move.c
|
||||
plug-ins/imagemap/imap_cmd_move_down.c
|
||||
plug-ins/imagemap/imap_cmd_move_sash.c
|
||||
plug-ins/imagemap/imap_cmd_move_up.c
|
||||
plug-ins/imagemap/imap_cmd_object_down.c
|
||||
plug-ins/imagemap/imap_cmd_object_up.c
|
||||
plug-ins/imagemap/imap_cmd_paste.c
|
||||
plug-ins/imagemap/imap_cmd_select.c
|
||||
plug-ins/imagemap/imap_cmd_select_all.c
|
||||
plug-ins/imagemap/imap_cmd_select_region.c
|
||||
plug-ins/imagemap/imap_cmd_send_to_back.c
|
||||
plug-ins/imagemap/imap_cmd_unselect.c
|
||||
plug-ins/imagemap/imap_cmd_unselect_all.c
|
||||
plug-ins/imagemap/imap_edit_area_info.c
|
||||
plug-ins/imagemap/imap_file.c
|
||||
plug-ins/imagemap/imap_grid.c
|
||||
plug-ins/imagemap/imap_main.c
|
||||
plug-ins/imagemap/imap_polygon.c
|
||||
plug-ins/imagemap/imap_rectangle.c
|
||||
plug-ins/imagemap/imap_selection.c
|
||||
plug-ins/imagemap/imap_settings.c
|
||||
plug-ins/imagemap/imap_source.c
|
||||
plug-ins/imagemap/imap_toolbar.c
|
||||
plug-ins/imagemap/imap_tools.c
|
||||
plug-ins/imagemap/imap_cmd_move_selected.c
|
||||
plug-ins/imagemap/imap_cmd_object_move.c
|
||||
plug-ins/imagemap/imap_cmd_select_next.c
|
||||
plug-ins/mosaic/mosaic.c
|
||||
plug-ins/common/normalize.c
|
||||
plug-ins/common/oilify.c
|
||||
plug-ins/common/png.c
|
||||
plug-ins/print/print-escp2.c
|
||||
plug-ins/print/print-pcl.c
|
||||
plug-ins/print/print-ps.c
|
||||
plug-ins/print/print.c
|
||||
plug-ins/common/ps.c
|
||||
plug-ins/common/rotate.c
|
||||
plug-ins/common/rotators.c
|
||||
plug-ins/sel2path/sel2path.c
|
||||
plug-ins/struc/struc.c
|
||||
plug-ins/common/threshold_alpha.c
|
||||
plug-ins/common/warp.c
|
||||
plug-ins/common/xbm.c
|
||||
plug-ins/common/xpm.c
|
||||
plug-ins/common/xwd.c
|
||||
plug-ins/common/zealouscrop.c
|
||||
plug-ins/script-fu/script-fu-console.c
|
||||
plug-ins/script-fu/script-fu-scripts.c
|
||||
plug-ins/script-fu/script-fu-server.c
|
||||
plug-ins/script-fu/script-fu.c
|
||||
plug-ins/common/film.c
|
||||
plug-ins/sel2path/sel2path.c
|
||||
plug-ins/struc/struc.c
|
||||
|
|
Loading…
Reference in New Issue