pingus-cvs
[Top][All Lists]
Advanced

[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);
        }
 }
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]