Gnash  0.8.11dev
gtksup.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_GTKSUP_H
20 #define GNASH_GTKSUP_H
21 
22 #ifdef HAVE_CONFIG_H
23 #include "gnashconfig.h"
24 #endif
25 
26 #include <string>
27 #include <utility>
28 #include <gdk/gdk.h>
29 #include <gtk/gtk.h>
30 
31 #include "gui.h"
32 #include "gtk_glue.h"
33 
34 namespace gnash {
35 
36 class GtkGui : public Gui
37 {
38 public:
39 
40  GtkGui(unsigned long xid, float scale, bool loop, RunResources& r);
41 
42  virtual ~GtkGui();
43 
45 
46  virtual bool init(int argc, char **argv[]);
47  virtual bool createWindow(int width, int height);
48  virtual bool createWindow(const char *title, int width, int height,
49  int xPosition = 0, int yPosition = 0);
50  virtual void resizeWindow(int width, int height);
51 
52  virtual bool run();
53 
54  virtual void quitUI();
55 
56  virtual bool createMenu();
57 
58  virtual bool createMenuAlt(); //an alternative popup menu
59 
61  //
65  virtual bool setupEvents();
66  virtual void beforeRendering();
67  virtual void renderBuffer();
68  virtual void setInterval(unsigned int interval);
69  virtual void setTimeout(unsigned int timeout);
70 
71  virtual void setFullscreen();
72  virtual void unsetFullscreen();
73 
74  virtual void hideMenu();
75 
76  virtual bool yesno(const std::string& question);
77 
79  virtual double getPixelAspectRatio() const;
80  virtual std::pair<int, int> screenResolution() const;
81  virtual double getScreenDPI() const;
82 
83  virtual void setClipboard(const std::string& copy);
84 
86  //
89  void grabFocus();
90 
92  // This should only appear in the standalone player.
93  bool createMenuBar();
94  void createFileMenu(GtkWidget *obj);
95  void createEditMenu(GtkWidget *obj);
96  void createViewMenu(GtkWidget *obj);
97  void createQualityMenu(GtkWidget *obj);
98  void createHelpMenu(GtkWidget *obj);
99  void createControlMenu(GtkWidget *obj);
100 
101  // Display a properties dialogue
102  void showPropertiesDialog();
103 
104  // Display a preferences dialogue
105  void showPreferencesDialog();
106 
107  // Display an About dialogue
108  void showAboutDialog();
109 
110  void expose(const GdkRegion* region);
111 
112  void setInvalidatedRegions(const InvalidatedRanges& ranges);
113 
114  bool want_multiple_regions() { return true; }
115 
116  virtual void setCursor(gnash_cursor_type newcursor);
117 
118  virtual bool showMouse(bool show);
119 
120  virtual void showMenu(bool show);
121 
122  virtual void error(const std::string& msg);
123 
124  bool checkX11Extension(const std::string& ext);
125 
126  virtual bool visible() { return _visible; }
127 
128  void setVisible(bool visible) { _visible = visible; }
129 
130 private:
131 
132  GtkWidget* _window;
133  GtkWidget* _resumeButton;
134 
135  // A window only for rendering the plugin as fullscreen.
136  GtkWidget* _overlay;
137 
138  // The area rendered into by Gnash
139  GtkWidget* _canvas;
140  bool _visible;
141 
142  GtkMenu* _popup_menu;
143  GtkMenu* _popup_menu_alt;
144  GtkWidget* _menubar;
145  GtkWidget* _vbox;
146 
149  bool _exiting;
150 
152  //
156  void setupWindowEvents();
157 
158 #ifdef USE_SWFTREE
159  // Create a tree model for displaying movie info
160  GtkTreeModel* makeTreeModel(const std::unique_ptr<movie_root::InfoTree>& tree);
161 #endif
162 
163  void stopHook();
164  void playHook();
165 
166  guint _advanceSourceTimer;
167 
168  void startAdvanceTimer();
169 
170  void stopAdvanceTimer();
171 };
172 
173 } // namespace gnash
174 
175 #endif
176 
177 // Local Variables:
178 // mode: C++
179 // indent-tabs-mode: nil
180 // End:
virtual void hideMenu()
Definition: gtk.cpp:381
virtual void setTimeout(unsigned int timeout)
Set the time in milliseconds after which the programme should exit.
Definition: gtk.cpp:268
virtual bool createMenuAlt()
Definition: gtk.cpp:707
void createControlMenu(GtkWidget *obj)
Definition: gtk.cpp:2106
void grabFocus()
Grab focus so to receive all key events.
Definition: gtk.cpp:585
virtual ~GtkGui()
Definition: gtk.cpp:131
virtual void setClipboard(const std::string &copy)
Definition: gtk.cpp:306
void expose(const GdkRegion *region)
virtual void beforeRendering()
Definition: gtk.cpp:871
virtual void quitUI()
End main rendering loop calling GUI-specific exit functions.
Definition: gtk.cpp:591
bool createMenuBar()
Create a menu bar for the application, attach to our window.
Definition: gtk.cpp:649
virtual void unsetFullscreen()
Definition: gtk.cpp:357
virtual double getPixelAspectRatio() const
For System.capabilities information.
Definition: gtk.cpp:495
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
void createViewMenu(GtkWidget *obj)
Definition: gtk.cpp:2015
gnash_cursor_type
Enumerates mouse cursor types.
Definition: gui.h:81
virtual bool visible()
Determines whether the Gui is visible (not obscured).
Definition: gtksup.h:126
virtual bool createWindow(int width, int height)
Definition: gtk.cpp:857
bool checkX11Extension(const std::string &ext)
Definition: gtk.cpp:2193
void setInvalidatedRegions(const InvalidatedRanges &ranges)
Definition: gtk.cpp:883
Definition: klash_part.cpp:329
virtual bool setupEvents()
Set up callbacks for key, mouse and other GTK events.
Definition: gtk.cpp:541
virtual bool createMenu()
Definition: gtk.cpp:665
Parent class from which all GUI implementations will depend.
Definition: gui.h:88
Definition: GnashKey.h:164
void showAboutDialog()
Definition: gtk.cpp:1808
virtual void error(const std::string &msg)
Handle error message from the core.
Definition: gtk.cpp:275
virtual void setFullscreen()
Definition: gtk.cpp:314
virtual double getScreenDPI() const
Definition: gtk.cpp:517
Definition: klash_part.cpp:329
virtual void showMenu(bool show)
Sets whether the menus should be shown (for fscommand)
Definition: gtk.cpp:471
virtual void setInterval(unsigned int interval)
Set main loop delay in milliseconds.
Definition: gtk.cpp:630
GtkGui(unsigned long xid, float scale, bool loop, RunResources &r)
Definition: gtk.cpp:135
virtual bool init(int argc, char **argv[])
GUI interface implementation.
Definition: gtk.cpp:153
Class to group together per-run and external resources for Gnash.
Definition: RunResources.h:53
virtual bool yesno(const std::string &question)
Prompt user with a question she can answer with yes/no.
Definition: gtk.cpp:2215
virtual void resizeWindow(int width, int height)
Definition: gtk.cpp:733
Definition: gtksup.h:36
virtual bool showMouse(bool show)
Sets whether the gui should show the system mouse pointer.
Definition: gtk.cpp:427
void createQualityMenu(GtkWidget *obj)
Definition: gtk.cpp:2067
void showPropertiesDialog()
Definition: gtk.cpp:1706
void createEditMenu(GtkWidget *obj)
Definition: gtk.cpp:1975
virtual void renderBuffer()
Definition: gtk.cpp:877
void setVisible(bool visible)
Definition: gtksup.h:128
void createFileMenu(GtkWidget *obj)
Definition: gtk.cpp:1923
bool want_multiple_regions()
Definition: gtksup.h:114
virtual std::pair< int, int > screenResolution() const
Definition: gtk.cpp:511
virtual void setCursor(gnash_cursor_type newcursor)
Sets the current mouse cursor for the Gui window.
Definition: gtk.cpp:392
void showPreferencesDialog()
Definition: gtk.cpp:1698
virtual bool run()
Start main rendering loop.
Definition: gtk.cpp:254
void createHelpMenu(GtkWidget *obj)
Definition: gtk.cpp:1996