[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r2635 - in trunk/src: . editor gui worldmap
From: |
jave27 |
Subject: |
[Pingus-CVS] r2635 - in trunk/src: . editor gui worldmap |
Date: |
Mon, 24 Apr 2006 06:00:38 +0200 |
Author: jave27
Date: 2006-04-24 06:00:19 +0200 (Mon, 24 Apr 2006)
New Revision: 2635
Modified:
trunk/src/credits.cxx
trunk/src/editor/context_menu.cxx
trunk/src/editor/editor_panel.cxx
trunk/src/editor/editor_panel.hxx
trunk/src/editor/editor_screen.cxx
trunk/src/editor/level_head.cxx
trunk/src/file_dialog.cxx
trunk/src/gui/gui_manager.cxx
trunk/src/gui/gui_manager.hxx
trunk/src/pingus_menu.cxx
trunk/src/result_screen.cxx
trunk/src/start_screen.cxx
trunk/src/story_screen.cxx
trunk/src/worldmap/manager.cxx
Log:
Applied Aggro's patch. This may still have segfault issues on exit, but it is
more correct than previously coded.
Modified: trunk/src/credits.cxx
===================================================================
--- trunk/src/credits.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/credits.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -69,7 +69,7 @@
background = Resource::load_sprite("core/menu/startscreenbg");
pingu = Resource::load_sprite("core/misc/creditpingu");
- gui_manager->add(new CreditsOkButton(this));
+ gui_manager->add(new CreditsOkButton(this), true);
background.set_alignment(origin_center);
pingu.set_alignment(origin_center);
Modified: trunk/src/editor/context_menu.cxx
===================================================================
--- trunk/src/editor/context_menu.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/editor/context_menu.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -166,7 +166,7 @@
if (available_attribs & CAN_ROTATE)
{
menu = new ContextMenu(objs, Vector(pos.x + width,
pos.y), viewport, false);
- viewport->get_screen()->get_gui_manager()->add(menu);
+ viewport->get_screen()->get_gui_manager()->add(menu,
true);
menu->add_action(ContextItem("0 degrees", "ROT0",
ROTATE, 0));
menu->add_action(ContextItem("90 Degrees", "ROT90",
ROTATE, 0));
menu->add_action(ContextItem("180 Degrees", "ROT180",
ROTATE, 0));
@@ -180,7 +180,7 @@
if (available_attribs & HAS_OWNER)
{
menu = new ContextMenu(objs, Vector(pos.x + width,
pos.y), viewport, false);
- viewport->get_screen()->get_gui_manager()->add(menu);
+ viewport->get_screen()->get_gui_manager()->add(menu,
true);
menu->add_action(ContextItem("0", "0", SET_OWNER, 0));
menu->add_action(ContextItem("1", "1", SET_OWNER, 0));
menu->add_action(ContextItem("2", "2", SET_OWNER, 0));
@@ -190,14 +190,14 @@
if (available_attribs & HAS_DIRECTION)
{
menu = new ContextMenu(objs, Vector(pos.x + width,
pos.y), viewport, false);
- viewport->get_screen()->get_gui_manager()->add(menu);
+ viewport->get_screen()->get_gui_manager()->add(menu,
true);
menu->add_action(ContextItem("Left", "left",
SET_DIRECTION, 0));
menu->add_action(ContextItem("Right", "right",
SET_DIRECTION, 0));
menu->add_action(ContextItem("Misc.", "misc",
SET_DIRECTION, 0));
add_action(ContextItem("Direction >", "",
SET_DIRECTION, menu));
}
menu = new ContextMenu(objs, Vector(pos.x + width, pos.y),
viewport, false);
- viewport->get_screen()->get_gui_manager()->add(menu);
+ viewport->get_screen()->get_gui_manager()->add(menu, true);
menu->add_action(ContextItem("-50", "-50", SET_Z_POS, 0));
menu->add_action(ContextItem("-25", "-25", SET_Z_POS, 0));
menu->add_action(ContextItem("0", "0", SET_Z_POS, 0));
Modified: trunk/src/editor/editor_panel.cxx
===================================================================
--- trunk/src/editor/editor_panel.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/editor/editor_panel.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -67,15 +67,15 @@
add((PanelButton*)(new PanelButtonHead(this)));
// Create Checkboxes
snap_to_checkbox = new GUI::Checkbox(Vector(370, 5), "Snap To Grid: ",
this);
- get_screen()->get_gui_manager()->add(snap_to_checkbox);
+ get_screen()->get_gui_manager()->add(snap_to_checkbox, true);
// Create Comboboxes
combobox_3 = new GUI::Combobox(Vector(500, 36), this);
combobox_2 = new GUI::Combobox(Vector(500, 18), this);
combobox_1 = new GUI::Combobox(Vector(500, 0), this);
- get_screen()->get_gui_manager()->add(combobox_3);
- get_screen()->get_gui_manager()->add(combobox_2);
- get_screen()->get_gui_manager()->add(combobox_1);
+ get_screen()->get_gui_manager()->add(combobox_3, true);
+ get_screen()->get_gui_manager()->add(combobox_2, true);
+ get_screen()->get_gui_manager()->add(combobox_1, true);
combobox_3->set_enabled(false);
combobox_2->set_enabled(false);
combobox_1->set_enabled(false);
@@ -109,7 +109,7 @@
button->set_pos(new_pos);
// Add the button to the GUI Manager
- get_screen()->get_gui_manager()->add((GUI::Component*)button);
+ get_screen()->get_gui_manager()->add((GUI::Component*)button, true);
}
void
Modified: trunk/src/editor/editor_panel.hxx
===================================================================
--- trunk/src/editor/editor_panel.hxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/editor/editor_panel.hxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -72,7 +72,8 @@
void init();
/** Add a button to the panel
- @param button The PanelButton that you'd like to add */
+ @param button The PanelButton that you'd like to add. The given
object will be
+ deleted automaticly at the end. */
void add(PanelButton* button);
/** Draws the panel */
Modified: trunk/src/editor/editor_screen.cxx
===================================================================
--- trunk/src/editor/editor_screen.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/editor/editor_screen.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -64,11 +64,11 @@
{
// Create the viewport for the images and data
viewport = new EditorViewport(this);
- gui_manager->add(viewport);
+ gui_manager->add(viewport, true);
// Create the panel for the buttons
panel = new EditorPanel(this);
- gui_manager->add(panel);
+ gui_manager->add(panel, true);
panel->init();
}
Modified: trunk/src/editor/level_head.cxx
===================================================================
--- trunk/src/editor/level_head.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/editor/level_head.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -79,7 +79,7 @@
gui_manager(p->get_screen()->get_gui_manager()),
pos(Vector(50, 75))
{
- gui_manager->add((GUI::Component*)this);
+ gui_manager->add((GUI::Component*)this, false);
// Create GUI items
name = new GUI::InputBox(400, Vector(pos.x + 175, pos.y + 10),
@@ -88,12 +88,12 @@
impl->description, false, "Level Description");
// Add GUI Items to the GUIManager
- gui_manager->add((GUI::Component*)name);
- gui_manager->add((GUI::Component*)desc);
+ gui_manager->add((GUI::Component*)name, true);
+ gui_manager->add((GUI::Component*)desc, true);
// Add close button
close_button = new LevelHeadCloseButton(this);
- gui_manager->add((GUI::Component*)close_button);
+ gui_manager->add((GUI::Component*)close_button, true);
}
LevelHead::~LevelHead()
Modified: trunk/src/file_dialog.cxx
===================================================================
--- trunk/src/file_dialog.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/file_dialog.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -256,7 +256,7 @@
gui_manager->add(up_button, true);
gui_manager->add(down_button, true);
gui_manager->add(new FileDialogCancelButton(this), true);
- gui_manager->add(new FileDialogParentFolderButton(this));
+ gui_manager->add(new FileDialogParentFolderButton(this), true);
// FIXME: Ugly - hardcoded values for items in file dialog.
Should be dynamic.
// Create 8 FileDialogItems and add them to the gui_manager.
@@ -265,7 +265,7 @@
inputbox = new GUI::InputBox(450, Vector(center_x - 225,
center_y - 170), "", for_loading);
- gui_manager->add((GUI::Component*)inputbox);
+ gui_manager->add((GUI::Component*)inputbox, true);
file_dialog_items.push_back(new FileDialogItem(this,
Vector(center_x - 280, center_y - 140)));
@@ -286,7 +286,7 @@
for (std::vector<FileDialogItem*>::const_iterator i =
file_dialog_items.begin();
i != file_dialog_items.end(); i++)
- gui_manager->add((GUI::Component*)(*i));
+ gui_manager->add((GUI::Component*)(*i), true);
refresh();
}
Modified: trunk/src/gui/gui_manager.cxx
===================================================================
--- trunk/src/gui/gui_manager.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/gui/gui_manager.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -38,6 +38,17 @@
{
}
+GUIManager::~GUIManager ()
+{
+ for (std::vector<Component*>::iterator i = components_for_delete.begin ();
+ i != components_for_delete.end (); ++i)
+ {
+ delete (*i);
+ }
+
+ components_for_delete.clear();
+}
+
void
GUIManager::draw (DrawingContext& gc)
{
@@ -97,7 +108,8 @@
GUIManager::add(Component* c, bool delete_component)
{
components.push_back(c);
- UNUSED_ARG(delete_component);
+ if( delete_component )
+ components_for_delete.push_back(c);
}
void
Modified: trunk/src/gui/gui_manager.hxx
===================================================================
--- trunk/src/gui/gui_manager.hxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/gui/gui_manager.hxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -45,6 +45,7 @@
private:
typedef std::vector<Component*> Components;
Components components;
+ Components components_for_delete;
/** The component which recieved the last pressed event */
Component* primary_pressed_component;
@@ -71,7 +72,7 @@
public:
GUIManager ();
- virtual ~GUIManager () {}
+ virtual ~GUIManager ();
virtual void draw (DrawingContext& gc);
virtual void update (const GameDelta& delta);
@@ -81,7 +82,7 @@
the component will get deleted on destruction of the manager,
if false is supplied the user has to handle the component
itself */
- void add (Component*, bool delete_component = true);
+ void add (Component*, bool delete_component);
/** */
void remove (Component*);
Modified: trunk/src/pingus_menu.cxx
===================================================================
--- trunk/src/pingus_menu.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/pingus_menu.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -101,8 +101,8 @@
gui_manager->remove(multiplayer_button);
gui_manager->remove(editor_button);
- gui_manager->add(quit_button);
- gui_manager->add(start_button);
+ gui_manager->add(quit_button, false);
+ gui_manager->add(start_button, false);
}
void
@@ -110,12 +110,12 @@
{
gui_manager->remove(start_button);
- gui_manager->add(contrib_button);
- gui_manager->add(story_button);
- gui_manager->add(editor_button);
+ gui_manager->add(contrib_button, false);
+ gui_manager->add(story_button, false);
+ gui_manager->add(editor_button, false);
// FIXME: Re-enable this next line once multiplayer functionality
// is actually available.
- //gui_manager->add(multiplayer_button);
+ //gui_manager->add(multiplayer_button, false);
}
void
Modified: trunk/src/result_screen.cxx
===================================================================
--- trunk/src/result_screen.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/result_screen.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -258,19 +258,19 @@
ResDescriptor cancel_desc("core/result/retry");
ResultScreenComponent* comp = new ResultScreenComponent(result);
- gui_manager->add(comp);
+ gui_manager->add(comp, true);
if (result.success())
{
- gui_manager->add(new ResultScreenOkButton(this));
+ gui_manager->add(new ResultScreenOkButton(this), true);
}
else
{
- gui_manager->add(new ResultScreenAbortButton(this));
- gui_manager->add(new ResultScreenRetryButton(this));
+ gui_manager->add(new ResultScreenAbortButton(this), true);
+ gui_manager->add(new ResultScreenRetryButton(this), true);
}
- //gui_manager->add(new GUI::SurfaceButton(500, 500, cancel_desc,
cancel_desc, cancel_desc));
+ //gui_manager->add(new GUI::SurfaceButton(500, 500, cancel_desc,
cancel_desc, cancel_desc), true);
}
void
Modified: trunk/src/start_screen.cxx
===================================================================
--- trunk/src/start_screen.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/start_screen.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -206,9 +206,9 @@
: plf(arg_plf)
{
StartScreenComponent* comp = new StartScreenComponent(plf);
- gui_manager->add(comp);
- gui_manager->add(new StartScreenOkButton(this));
- gui_manager->add(new StartScreenAbortButton(this));
+ gui_manager->add(comp, true);
+ gui_manager->add(new StartScreenOkButton(this), true);
+ gui_manager->add(new StartScreenAbortButton(this), true);
}
void
Modified: trunk/src/story_screen.cxx
===================================================================
--- trunk/src/story_screen.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/story_screen.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -95,8 +95,8 @@
StoryScreen::StoryScreen(WorldMapNS::WorldMapStory *arg_pages)
{
story_comp = new StoryScreenComponent(arg_pages);
- gui_manager->add (story_comp);
- gui_manager->add (new StoryScreenContinueButton(story_comp));
+ gui_manager->add (story_comp, true);
+ gui_manager->add (new StoryScreenContinueButton(story_comp), true);
}
StoryScreen::~StoryScreen()
Modified: trunk/src/worldmap/manager.cxx
===================================================================
--- trunk/src/worldmap/manager.cxx 2006-04-13 00:58:13 UTC (rev 2634)
+++ trunk/src/worldmap/manager.cxx 2006-04-24 04:00:19 UTC (rev 2635)
@@ -222,11 +222,11 @@
// FIXME: well enough. GUIScreen could also use multi-inheritage,
// FIXME: but that could lead to member function name conflicts
worldmap_component = new WorldMapComponent();
- gui_manager->add (worldmap_component);
- gui_manager->add(new WorldMapManagerCloseButton());
- gui_manager->add(new WorldMapManagerEnterButton());
+ gui_manager->add (worldmap_component, true);
+ gui_manager->add(new WorldMapManagerCloseButton(), true);
+ gui_manager->add(new WorldMapManagerEnterButton(), true);
- gui_manager->add(new WorldMapManagerStoryButton());
+ gui_manager->add(new WorldMapManagerStoryButton(), true);
}
void
@@ -242,7 +242,7 @@
credits_unlocked);
if (credits_unlocked)
{
- gui_manager->add(new WorldMapManagerCreditsButton());
+ gui_manager->add(new WorldMapManagerCreditsButton(), true);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r2635 - in trunk/src: . editor gui worldmap,
jave27 <=