1 | Index: backends/platform/sdl/sdl.cpp
|
---|
2 | ===================================================================
|
---|
3 | --- backends/platform/sdl/sdl.cpp (revision 28758)
|
---|
4 | +++ backends/platform/sdl/sdl.cpp (working copy)
|
---|
5 | @@ -473,3 +473,25 @@
|
---|
6 | _cdEndTime = SDL_GetTicks() + _cdrom->track[_cdTrack].length * 1000 / CD_FPS;
|
---|
7 | }
|
---|
8 | }
|
---|
9 | +
|
---|
10 | +enum {
|
---|
11 | + kCmdTestBtn = 'TEST'
|
---|
12 | +};
|
---|
13 | +
|
---|
14 | +GUI::StaticTextWidget *_stw;
|
---|
15 | +
|
---|
16 | +void OSystem_SDL::generateBackendTab (GUI::GuiObject *boss) {
|
---|
17 | + new GUI::ButtonWidget(boss, "gameoptions_extrapath", "Click!", kCmdTestBtn, 'Q');
|
---|
18 | + _stw = new GUI::StaticTextWidget(boss, "gameoptions_id", "test");
|
---|
19 | +}
|
---|
20 | +
|
---|
21 | +bool OSystem_SDL::handleBackendTabCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) {
|
---|
22 | + switch(cmd) {
|
---|
23 | + case kCmdTestBtn:
|
---|
24 | + _stw->setEnabled(!_stw->isEnabled());
|
---|
25 | + _stw->draw();
|
---|
26 | + return true;
|
---|
27 | + default:
|
---|
28 | + return false;
|
---|
29 | + }
|
---|
30 | +}
|
---|
31 | Index: backends/platform/sdl/sdl.h
|
---|
32 | ===================================================================
|
---|
33 | --- backends/platform/sdl/sdl.h (revision 28758)
|
---|
34 | +++ backends/platform/sdl/sdl.h (working copy)
|
---|
35 | @@ -34,6 +34,8 @@
|
---|
36 | #include "graphics/scaler.h"
|
---|
37 | #include "backends/intern.h"
|
---|
38 |
|
---|
39 | +#include "gui/object.h"
|
---|
40 | +#include "gui/widget.h"
|
---|
41 |
|
---|
42 | namespace Audio {
|
---|
43 | class Mixer;
|
---|
44 | @@ -410,6 +412,18 @@
|
---|
45 | virtual bool remapKey(SDL_Event &ev, Common::Event &event);
|
---|
46 |
|
---|
47 | void handleScalerHotkeys(const SDL_KeyboardEvent &key);
|
---|
48 | +
|
---|
49 | + // backend lib methods
|
---|
50 | +
|
---|
51 | +public:
|
---|
52 | +
|
---|
53 | + virtual Common::String getBackendTabName () {
|
---|
54 | + return "test";
|
---|
55 | + }
|
---|
56 | +
|
---|
57 | + virtual void generateBackendTab (GUI::GuiObject *boss);
|
---|
58 | +
|
---|
59 | + virtual bool handleBackendTabCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
|
---|
60 | };
|
---|
61 |
|
---|
62 | #endif
|
---|
63 | Index: common/system.h
|
---|
64 | ===================================================================
|
---|
65 | --- common/system.h (revision 28758)
|
---|
66 | +++ common/system.h (working copy)
|
---|
67 | @@ -31,6 +31,8 @@
|
---|
68 | #include "common/noncopyable.h"
|
---|
69 | #include "common/rect.h"
|
---|
70 |
|
---|
71 | +#include "gui/object.h"
|
---|
72 | +
|
---|
73 | namespace Audio {
|
---|
74 | class Mixer;
|
---|
75 | }
|
---|
76 | @@ -885,6 +887,30 @@
|
---|
77 | */
|
---|
78 | virtual Common::SaveFileManager *getSavefileManager() = 0;
|
---|
79 |
|
---|
80 | + // backend lib methods
|
---|
81 | +
|
---|
82 | + // backend specific game options tab methods
|
---|
83 | +
|
---|
84 | + /**
|
---|
85 | + * Returns the name of the backend specific tab in game edit dialog
|
---|
86 | + */
|
---|
87 | + virtual Common::String getBackendTabName() {
|
---|
88 | + return "";
|
---|
89 | + }
|
---|
90 | +
|
---|
91 | + /**
|
---|
92 | + * Hook method to allow the backends generate their own specific tab in game edit dialog
|
---|
93 | + */
|
---|
94 | + virtual void generateBackendTab(GUI::GuiObject *boss) {}
|
---|
95 | +
|
---|
96 | + /**
|
---|
97 | + * Hook method to allow the backends process the events from their
|
---|
98 | + * own specific tab in game edit dialog
|
---|
99 | + */
|
---|
100 | + virtual bool handleBackendTabCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) {
|
---|
101 | + return false;
|
---|
102 | + }
|
---|
103 | +
|
---|
104 | //@}
|
---|
105 | };
|
---|
106 |
|
---|
107 | Index: gui/launcher.cpp
|
---|
108 | ===================================================================
|
---|
109 | --- gui/launcher.cpp (revision 28758)
|
---|
110 | +++ gui/launcher.cpp (working copy)
|
---|
111 | @@ -259,6 +259,14 @@
|
---|
112 | _savePathWidget->setLabel("Default");
|
---|
113 | }
|
---|
114 |
|
---|
115 | + //
|
---|
116 | + // 8) Backend tab
|
---|
117 | + //
|
---|
118 | + if (!g_system->getBackendTabName().empty()){
|
---|
119 | + tab->addTab(g_system->getBackendTabName());
|
---|
120 | + g_system->genereteBackendTab(tab);
|
---|
121 | + }
|
---|
122 | +
|
---|
123 | // Activate the first tab
|
---|
124 | tab->setActiveTab(0);
|
---|
125 |
|
---|
126 | @@ -464,7 +472,9 @@
|
---|
127 | }
|
---|
128 | // FALL THROUGH to default case
|
---|
129 | default:
|
---|
130 | - OptionsDialog::handleCommand(sender, cmd, data);
|
---|
131 | + if (!g_system->handleBackendTabCommand(sender, cmd, data)) {
|
---|
132 | + OptionsDialog::handleCommand(sender, cmd, data);
|
---|
133 | + }
|
---|
134 | }
|
---|
135 | }
|
---|
136 |
|
---|
137 | |
---|