Gnash  0.8.11dev
Qt4Gui.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010,
3 // 2011 Free Software Foundation, Inc
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 
19 #ifndef GNASH_KDE4GUI_H
20 #define GNASH_KDE4GUI_H
21 
22 #ifdef HAVE_CONFIG_H
23 #include "gnashconfig.h"
24 #endif
25 
26 #include "gui.h"
27 #include "rc.h"
28 
29 #include <vector>
30 #include <QX11EmbedWidget>
31 #include <QDialog>
32 
33 #ifdef RENDERER_AGG
34 #include "Qt4GlueAgg.h"
35 #endif
36 
37 #ifdef RENDERER_CAIRO
38 #include "Qt4GlueCairo.h"
39 #endif
40 
41 #ifdef RENDERER_OPENGL
42 #include "Qt4GlueOgl.h"
43 class QGLWidget;
44 #endif
45 
46 
47 class QMainWindow;
48 class QMenuBar;
49 class QMenu;
50 class QRect;
51 class QCheckBox;
52 class QSlider;
53 class QLineEdit;
54 class QSpinBox;
55 class QStackedWidget;
56 
57 namespace gnash {
58  class Qt4Gui;
59  class DrawingWidget;
60 }
61 
62 namespace gnash
63 {
64 
65 class EmbedWidget : public QX11EmbedWidget
66 {
67  Q_OBJECT
68 
69 public:
72 
73  DrawingWidget* drawingWidget() { return _drawingWidget; }
74 
75 public slots:
76  void hidePlayButton();
77  void showPlayButton();
78 
79 private:
80  QPushButton* _playButton;
81  DrawingWidget* _drawingWidget;
82 };
83 
84 
85 class DSOEXPORT Qt4Gui : public Gui
86 {
87 public:
88  Qt4Gui(unsigned long xid, float scale, bool loop, RunResources& r);
89  virtual ~Qt4Gui();
90  virtual bool init(int argc, char **argv[]);
91  virtual bool createWindow(const char* windowtitle, int width, int height,
92  int xPosition = 0, int yPosition = 0);
93  virtual void resizeWindow(int width, int height);
94  virtual bool run();
95  virtual void renderBuffer();
96  virtual void setInterval(unsigned int interval);
97  virtual void setTimeout(unsigned int timeout);
98  virtual void handleKeyEvent(QKeyEvent *event, bool down);
99  virtual void setCursor(gnash_cursor_type newcursor);
100  virtual void setFullscreen();
101  virtual bool showMouse(bool show);
102  virtual void unsetFullscreen();
103  virtual void setClipboard(const std::string& copy);
104  virtual std::pair<int, int> screenResolution() const;
105  virtual double getScreenDPI() const;
106  virtual bool yesno(const std::string& question);
107 
108  void setInvalidatedRegions(const InvalidatedRanges& ranges);
109  void resize(int width, int height);
110  void showProperties();
111  void showPreferences();
112  void quitUI();
113 
114  bool want_multiple_regions() { return true; }
115 
116  void renderWidget(const QRect& updateRect);
117 
118  void popupMenu(const QPoint& point);
119 
120 private:
121  typedef std::vector<geometry::Range2d<int> > DrawBounds;
122  typedef std::map<int, gnash::key::code> KeyMap;
123 
124  void setupActions();
125  void setupMenus();
126  void createMainMenu();
127 
129  void setupKeyMap();
130 
133  void stopHook();
134 
136  void playHook();
137 
138  DrawBounds _drawbounds;
139 
141  int _numArgs;
142 
145  std::unique_ptr<QApplication> _application;
146 
148  EmbedWidget* _embedWidget;
149 
151  //
154  DrawingWidget* _drawingWidget;
155 
157  std::unique_ptr<Qt4Glue> _glue;
158 
160  std::unique_ptr<QMainWindow> _window;
161 
164  KeyMap _keyMap;
165 
167  gnash::key::code qtToGnashKey(QKeyEvent *event);
168  int qtToGnashModifier(const Qt::KeyboardModifiers modifiers);
169 
170  int _interval;
171 
172  int _advanceTimer;
173 
178 
179  // File Menu
180  QMenu* fileMenu;
181  QAction* propertiesAction;
182  QAction* quitAction;
183 
184  // Edit Menu
185  QMenu* editMenu;
186  QAction* preferencesAction;
187 
188  // Movie Control Menu;
189  QMenu* movieControlMenu;
190  QAction* playAction;
191  QAction* pauseAction;
192  QAction* stopAction;
193  QAction* restartAction;
194 
195  // View Menu
196  QMenu* viewMenu;
197  QAction* refreshAction;
198  QAction* fullscreenAction;
199 };
200 
201 namespace Qt4GuiPrefs
202 {
203 
204 class PreferencesDialog : public QDialog
205 {
206 Q_OBJECT
207 
208 public:
209  PreferencesDialog(QWidget* parent);
210 
211 private slots:
212  void savePreferences();
213 
214 private:
216 
217  // Logging tab widgets
218  QSlider* _verbositySlider;
219  QCheckBox* _logToFileToggle;
220  QLineEdit* _logFileName;
221  QCheckBox* _parserDumpToggle;
222  QCheckBox* _actionDumpToggle;
223  QCheckBox* _malformedSWFToggle;
224  QCheckBox* _ASCodingErrorToggle;
225 
226  // Security tab widgets
227  QCheckBox* _localHostToggle;
228  QCheckBox* _localDomainToggle;
229  QCheckBox* _insecureSSLToggle;
230  QLineEdit* _solSandboxDir;
231  QCheckBox* _solReadOnlyToggle;
232  QCheckBox* _solLocalDomainToggle;
233  QCheckBox* _localConnectionToggle;
234 
235  // Network tab widgets
236  QSpinBox* _streamsTimeoutScale;
237 
238  // Media tab widgets
239  QCheckBox* _soundToggle;
240  QCheckBox* _saveStreamingMediaToggle;
241  QCheckBox* _saveLoadedMediaToggle;
242  QLineEdit* _mediaDir;
243 
244  // Player tab widgets
245  QLineEdit* _versionText;
246  QLineEdit* _osText;
247  QLineEdit* _urlOpenerText;
248  QSpinBox* _librarySize;
249  QCheckBox* _startStoppedToggle;
250 
251  // The config storage.
252  RcInitFile& _rcfile;
253 };
254 
255 }
256 
257 }
258 
259 #endif
Definition: Qt4Gui.h:85
Definition: Qt4Glue.h:41
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
gnash_cursor_type
Enumerates mouse cursor types.
Definition: gui.h:81
Definition: klash_part.cpp:329
2D Point class
Definition: Point2d.h:38
void hidePlayButton()
Definition: Qt4Gui.cpp:767
code
Definition: GnashKey.h:43
Parent class from which all GUI implementations will depend.
Definition: gui.h:88
Definition: GnashKey.h:164
Definition: Qt4Gui.h:65
Definition: klash_part.cpp:329
Class to group together per-run and external resources for Gnash.
Definition: RunResources.h:53
bool want_multiple_regions()
Definition: Qt4Gui.h:114
void showPlayButton()
Definition: Qt4Gui.cpp:773
#define DSOEXPORT
Definition: dsodefs.h:55
Definition: rc.h:43
EmbedWidget(Qt4Gui &gui)
EmbedWidget implementation.
Definition: Qt4Gui.cpp:749
DrawingWidget * drawingWidget()
Definition: Qt4Gui.h:73
~EmbedWidget()
Definition: Qt4Gui.h:71