+
+ class base_window : public Gtk::Window
+ {
+ public:
+ base_window(const video::frame_params & frame_params);
+
+ protected:
+ video::frame_params frame_params_;
+ browser_widget browser_widget_;
+ };
+
+ base_window::base_window(const video::frame_params & frame_params)
+ : frame_params_(frame_params)
+ {
+ set_size_request(frame_params_.width, frame_params_.height);
+ set_resizable(false);
+
+ add(browser_widget_);
+ browser_widget_.show();
+ }
+
+ class preview_window : public base_window
+ {
+ public:
+ preview_window(const video::frame_params & frame_params,
+ const std::string & main_page_uri);
+
+ private:
+ bool on_idle();
+ bool on_key_press(GdkEventKey *);
+
+ std::string main_page_uri_;
+ };
+
+ preview_window::preview_window(const video::frame_params & frame_params,
+ const std::string & main_page_uri)
+ : base_window(frame_params),
+ main_page_uri_(main_page_uri)
+ {
+ Glib::signal_idle().connect(
+ sigc::mem_fun(this, &preview_window::on_idle));
+ signal_key_press_event().connect(
+ sigc::mem_fun(this, &preview_window::on_key_press));
+ }
+
+ bool preview_window::on_idle()
+ {
+ browser_widget_.load_uri(main_page_uri_);
+ return false; // don't call again
+ }
+
+ bool preview_window::on_key_press(GdkEventKey * event)
+ {
+ switch (event->keyval)
+ {
+ case GDK_t: // = top menu
+ browser_widget_.load_uri(main_page_uri_);
+ return true;
+ case GDK_q: // = quit
+ Gtk::Main::quit();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ class conversion_window : public base_window