aboutsummaryrefslogtreecommitdiff
path: root/gui/dialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'gui/dialog.h')
-rw-r--r--gui/dialog.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/gui/dialog.h b/gui/dialog.h
new file mode 100644
index 0000000000..424af5cebb
--- /dev/null
+++ b/gui/dialog.h
@@ -0,0 +1,83 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2002 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef DIALOG_H
+#define DIALOG_H
+
+#include "scummsys.h"
+
+
+class Widget;
+class NewGui;
+
+class Dialog {
+ friend class Widget;
+ friend class StaticTextWidget;
+protected:
+ NewGui *_gui;
+ Widget *_firstWidget;
+ int16 _x, _y;
+ uint16 _w, _h;
+public:
+ Dialog(NewGui *gui, int x, int y, int w, int h)
+ : _gui(gui), _firstWidget(0), _x(x), _y(y), _w(w), _h(h)
+ {}
+
+ virtual void draw();
+
+ //virtual void handleIdle(); // Called periodically
+ virtual void handleClick(int x, int y, int button);
+ virtual void handleKey(char key, int modifiers) // modifiers = alt/shift/ctrl etc.
+ { if (key == 27) close(); }
+ virtual void handleCommand(uint32 cmd)
+ {}
+
+protected:
+ Widget* findWidget(int x, int y); // Find the widget at pos x,y if any
+ void close();
+
+ void addResText(int x, int y, int w, int h, int resID);
+ void addButton(int x, int y, int w, int h, char hotkey, const char *label, uint32 cmd);
+ void addButton(int x, int y, int w, int h, char hotkey, int resID, uint32 cmd);
+};
+
+class SaveLoadDialog : public Dialog {
+public:
+ SaveLoadDialog(NewGui *gui);
+
+ virtual void handleCommand(uint32 cmd);
+};
+
+class PauseDialog : public Dialog {
+public:
+ PauseDialog(NewGui *gui);
+
+ virtual void handleClick(int x, int y, int button)
+ { close(); }
+ virtual void handleKey(char key, int modifiers)
+ {
+ if (key == 32)
+ close();
+ else
+ Dialog::handleKey(key, modifiers);
+ }
+};
+
+#endif