From: <js...@us...> - 2005-11-19 07:52:37
|
Update of /cvsroot/exult/exult/mapedit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25358/mapedit Modified Files: exult_studio.glade shapeedit.cc studio.cc studio.h Log Message: Show gump on container page of shape-editor Index: exult_studio.glade =================================================================== RCS file: /cvsroot/exult/exult/mapedit/exult_studio.glade,v retrieving revision 1.128 retrieving revision 1.129 diff -u -d -r1.128 -r1.129 --- exult_studio.glade 18 Jul 2005 23:57:10 -0000 1.128 +++ exult_studio.glade 19 Nov 2005 07:52:24 -0000 1.129 @@ -16,11 +16,10 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="focus_on_map">True</property> <property name="show_fileops">True</property> - <child internal-child="ok_button"> - <widget class="GtkButton" id="ok_button1"> + <child internal-child="cancel_button"> + <widget class="GtkButton" id="cancel_button1"> <property name="visible">True</property> [...2252 lines suppressed...] <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -17979,10 +17258,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> Index: shapeedit.cc =================================================================== RCS file: /cvsroot/exult/exult/mapedit/shapeedit.cc,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- shapeedit.cc 12 Jul 2005 01:53:05 -0000 1.39 +++ shapeedit.cc 19 Nov 2005 07:52:24 -0000 1.40 @@ -166,7 +166,6 @@ } } - /* * Set up 'equipment' dialog's table, which has 10 identical rows. */ @@ -460,6 +459,37 @@ } /* + * Draw gump shape in container page. + */ +C_EXPORT gboolean on_shinfo_gump_draw_expose_event + ( + GtkWidget *widget, // The view window. + GdkEventExpose *event, + gpointer data // ->Shape_chooser. + ) + { + ExultStudio::get_instance()->show_shinfo_gump( + event->area.x, event->area.y, event->area.width, + event->area.height); + return (TRUE); + } + +/* + * Gump shape # changed, so update shape displayed. + */ +C_EXPORT gboolean on_shinfo_gump_num_changed + ( + GtkWidget *widget, + GdkEventFocus *event, + gpointer user_data + ) + { + ExultStudio *studio = ExultStudio::get_instance(); + studio->show_shinfo_gump(); + return TRUE; + } + +/* * Shape window's Equip-Edit button. */ C_EXPORT void on_open_equip_button_clicked @@ -548,6 +578,24 @@ } /* + * Callback for when a gump is dropped in the container page's draw area. + */ + +static void Gump_shape_dropped + ( + int file, + int shape, + int frame, + void *udata + ) + { + if (file == U7_SHAPE_GUMPS && shape >= 0) + { // Set shape #. + ExultStudio::get_instance()->set_spin( + "shinfo_gump_num", shape); + } + } +/* * Set frame-dependent fields in the shape-editing notebook. */ @@ -787,11 +835,7 @@ int container_gump = info.get_container_gump(); set_toggle("shinfo_container_check", container_gump >= 0); set_visible("shinfo_container_box", container_gump >= 0); - if (container_gump >= 0) // Setup container page. - { - set_spin("shinfo_gump_num", container_gump); - } - + set_spin("shinfo_gump_num", container_gump >= 0 ? container_gump : 0); gtk_widget_show(book); } @@ -1003,6 +1047,9 @@ if (shape_draw) // Ifile might have changed. delete shape_draw; shape_draw = 0; + if (gump_draw) + delete gump_draw; + gump_draw = 0; Vga_file *ifile = file_info->get_ifile(); if (ifile && palbuf) { @@ -1010,6 +1057,12 @@ glade_xml_get_widget(app_xml, "shinfo_draw")); // shape_draw->enable_drop(Shape_shape_dropped, this); } + if (gumpfile && palbuf) + { + gump_draw = new Shape_draw(gumpfile->get_ifile(), palbuf, + glade_xml_get_widget(app_xml, "shinfo_gump_draw")); + gump_draw->enable_drop(Gump_shape_dropped, this); + } // Store ->'s. gtk_object_set_user_data(GTK_OBJECT(shapewin), info); gtk_object_set_data(GTK_OBJECT(shapewin), "file_info", file_info); @@ -1112,3 +1165,23 @@ shape_draw->show(); } +/* + * Paint the gump shape on the container page. + */ + +void ExultStudio::show_shinfo_gump + ( + int x, int y, int w, int h // Rectangle. w=-1 to show all. + ) + { + if (!gump_draw) + return; + gump_draw->configure(); + // Yes, this is kind of redundant... + int shnum = get_spin("shinfo_gump_num"); + gump_draw->draw_shape_centered(shnum, 0); + if (w != -1) + gump_draw->show(x, y, w, h); + else + gump_draw->show(); + } Index: studio.cc =================================================================== RCS file: /cvsroot/exult/exult/mapedit/studio.cc,v retrieving revision 1.176 retrieving revision 1.177 diff -u -d -r1.176 -r1.177 --- studio.cc 14 Nov 2005 06:07:30 -0000 1.176 +++ studio.cc 19 Nov 2005 07:52:24 -0000 1.177 @@ -464,7 +464,8 @@ ExultStudio::ExultStudio(int argc, char **argv): files(0), curfile(0), glade_path(0), shape_info_modified(false), shape_names_modified(false), - vgafile(0), facefile(0), eggwin(0), egg_ctx(0), egg_monster_draw(0), + vgafile(0), facefile(0), gumpfile(0), + eggwin(0), egg_ctx(0), egg_monster_draw(0), egg_status_id(0), bargewin(0), barge_ctx(0), barge_status_id(0), server_socket(-1), server_input_tag(-1), @@ -472,7 +473,8 @@ browser(0), palbuf(0), waiting_for_server(0), npcwin(0), npc_draw(0), npc_face_draw(0), npc_ctx(0), npc_status_id(0), game_type(BLACK_GATE), - objwin(0), obj_draw(0), contwin(0), cont_draw(0), shapewin(0), shape_draw(0), + objwin(0), obj_draw(0), contwin(0), cont_draw(0), shapewin(0), + shape_draw(0), gump_draw(0), equipwin(0), locwin(0), combowin(0), compilewin(0), compile_box(0) { // Initialize the various subsystems @@ -615,6 +617,7 @@ if (shapewin) gtk_widget_destroy(shapewin); delete shape_draw; + delete gump_draw; shapewin = 0; if (equipwin) gtk_widget_destroy(equipwin); @@ -969,6 +972,7 @@ files = new Shape_file_set(); vgafile = open_shape_file("shapes.vga"); facefile = open_shape_file("faces.vga"); + gumpfile = open_shape_file("gumps.vga"); Setup_text(); // Read in shape names. setup_file_list(); // Set up file-list window. set_browser("", 0); // No browser. Index: studio.h =================================================================== RCS file: /cvsroot/exult/exult/mapedit/studio.h,v retrieving revision 1.106 retrieving revision 1.107 diff -u -d -r1.106 -r1.107 --- studio.h 14 Nov 2005 06:07:30 -0000 1.106 +++ studio.h 19 Nov 2005 07:52:24 -0000 1.107 @@ -69,6 +69,7 @@ Shape_file_info *curfile; // Current browser file info. Shape_file_info *vgafile; // Main 'shapes.vga'. Shape_file_info *facefile; // 'faces.vga'. + Shape_file_info *gumpfile; // 'gumps.vga'. Object_browser *browser; unsigned char *palbuf; // 3*256 rgb's, each 0-63. // Barge editor: @@ -93,7 +94,7 @@ Shape_draw *cont_draw; // Shape info. editor: GtkWidget *shapewin; - Shape_draw *shape_draw; + Shape_draw *shape_draw, *gump_draw; GtkWidget *equipwin; // Map locator: Locator *locwin; @@ -248,6 +249,7 @@ void save_shape_window(); void close_shape_window(); void show_shinfo_shape(int x = 0, int y = 0, int w = -1, int h = -1); + void show_shinfo_gump(int x = 0, int y = 0, int w = -1, int h = -1); // Map locator. void open_locator_window(); void open_combo_window(); // Combo-object editor. |