annotate engine/core/gui/guichan/guichanguimanager.i @ 697:ecaa4d98f05f tip

Abstracted the GUI code and refactored the GUIChan-specific code into its own module. * Most of the GUIChan code has been refactored into its own gui/guichan module. However, references to the GuiFont class still persist in the Engine and GuiManager code and these will need further refactoring. * GuiManager is now an abstract base class which specific implementations (e.g. GUIChan) should subclass. * The GUIChan GUI code is now a concrete implementation of GuiManager, most of which is in the new GuiChanGuiManager class. * The GUI code in the Console class has been refactored out of the Console and into the GUIChan module as its own GuiChanConsoleWidget class. The rest of the Console class related to executing commands was left largely unchanged. * Existing client code may need to downcast the GuiManager pointer received from FIFE::Engine::getGuiManager() to GuiChanGuiManager, since not all functionality is represented in the GuiManager abstract base class. Python client code can use the new GuiChanGuiManager.castTo static method for this purpose.
author M. George Hansen <technopolitica@gmail.com>
date Sat, 18 Jun 2011 00:28:40 -1000
parents
children
rev   line source
697
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
1 /***************************************************************************
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
2 * Copyright (C) 2005-2008 by the FIFE team *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
3 * http://www.fifengine.de *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
4 * This file is part of FIFE. *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
5 * *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
6 * FIFE is free software; you can redistribute it and/or *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
8 * License as published by the Free Software Foundation; either *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version. *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
10 * *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
11 * This library is distributed in the hope that it will be useful, *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
14 * Lesser General Public License for more details. *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
15 * *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
17 * License along with this library; if not, write to the *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
18 * Free Software Foundation, Inc., *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
20 ***************************************************************************/
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
21
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
22 %module fife
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
23 %{
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
24 #include <guichan.hpp>
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
25 #include "gui/guimanager.h"
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
26 #include "gui/guichan/guichanguimanager.h"
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
27 %}
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
28
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
29 namespace FIFE {
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
30 class GuiChanConsoleWidget {
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
31 public:
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
32 GuiChanConsoleWidget();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
33
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
34 virtual ~GuiChanConsoleWidget();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
35
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
36 void println(const std::string& s);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
37 void show();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
38 void hide();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
39 void toggleShowHide();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
40 void clear();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
41 void updateCaption();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
42 void updateAnimation();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
43 void reLayout();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
44
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
45 void setIOFont(GuiFont* font);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
46
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
47 void action(const gcn::ActionEvent & event);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
48 void focusLost(const gcn::Event& event);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
49 };
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
50
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
51 class GuiChanGuiManager {
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
52 public:
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
53 GuiChanGuiManager(ImagePool& pool);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
54 virtual ~GuiChanGuiManager();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
55
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
56 gcn::Gui* getGuiChanGui() const;
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
57
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
58 void turn();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
59 void init(RenderBackend* render_backend, int screenWidth,
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
60 int screenHeight);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
61 void resize(unsigned int x, unsigned int y, unsigned int width,
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
62 unsigned int height);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
63 void add(gcn::Widget* widget);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
64 void remove(gcn::Widget* widget);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
65
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
66 gcn::Container* getTopContainer() const {
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
67 return m_gcn_topcontainer;
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
68 }
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
69
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
70 void showConsole();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
71 void hideConsole();
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
72
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
73 GuiFont* setDefaultFont(const std::string& path, unsigned int size,
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
74 const std::string& glyphs);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
75
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
76 bool onSdlEvent(SDL_Event& evt);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
77
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
78 KeyEvent translateKeyEvent(const gcn::KeyEvent& evt);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
79 MouseEvent translateMouseEvent(const gcn::MouseEvent& evt);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
80
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
81 /** Hack to downcast the GuiManager pointer for GuiChan clients.
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
82 * Should be removed once the GuiManager's interface is established.
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
83 */
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
84 %extend {
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
85 static GuiChanGuiManager* castTo(GuiManager* gui_manager) {
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
86 return dynamic_cast<FIFE::GuiChanGuiManager*>(gui_manager);
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
87 }
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
88 }
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
89 };
ecaa4d98f05f Abstracted the GUI code and refactored the GUIChan-specific code into its own module.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
90 }