GxSplashBox::GxSplashBox() : Gtk::Window(Gtk::WINDOW_POPUP) { set_redraw_on_allocate(true); set_app_paintable(); signal_expose_event().connect( sigc::group(&gx_cairo::splash_expose, GTK_WIDGET(gobj()), sigc::_1, (void*)0), false); set_decorated(false); set_type_hint(Gdk::WINDOW_TYPE_HINT_SPLASHSCREEN); set_position(Gtk::WIN_POS_CENTER ); set_default_size(280,80); show_all(); }
Image::Image(const Glib::RefPtr<Post> &post_, const std::shared_ptr<ImageFetcher>& image_fetcher, sigc::slot<void, const ImageState&> state_change_callback) : Gtk::Bin(), post(post_), event_box(Gtk::manage(new Gtk::EventBox())), image(Gtk::manage(new Gtk::Image())), image_state(NONE), is_changing_state(false), scaled_width(-1), scaled_height(-1), is_scaled(false), am_fetching_thumb(false), am_fetching_image(false), canceller(std::make_shared<Canceller>()), ifetcher(image_fetcher) { set_has_window(false); set_redraw_on_allocate(false); set_name("imagewindow"); event_box->set_events(Gdk::BUTTON_PRESS_MASK); event_box->set_visible_window(false); event_box->signal_button_press_event().connect( sigc::mem_fun(*this, &Image::on_image_click) ); image->set_name("image"); image->set_halign(Gtk::ALIGN_START); image->set_valign(Gtk::ALIGN_START); event_box->add(*image); add(*event_box); state_changed_dispatcher.connect(sigc::mem_fun(*this, &Image::run_state_changed_callbacks)); signal_state_changed.connect(state_change_callback); if (post->has_image()) { std::string ext = post->get_image_ext(); if (ext.compare(".gif") == 0) { fetch_image(); } else { fetch_thumbnail(); } } else { g_error("Horizon::Image created for post %" G_GINT64_FORMAT " that has no image.", post->get_id()); } image->signal_unmap() .connect(sigc::mem_fun(*this, &Image::on_image_unmap)); image->signal_unrealize().connect(sigc::mem_fun(*this, &Image::on_image_unrealize)); image->signal_draw() .connect(sigc::mem_fun(*this, &Image::on_image_draw), false); }