コード例 #1
0
 bool NotebooksTreeView::on_drag_motion(const Glib::RefPtr<Gdk::DragContext> &,
                             int x, int y, guint )
 {
   Gtk::TreePath treepath;
   Gtk::TreeViewDropPosition pos;
   if (get_dest_row_at_pos (x, y, treepath,pos) == false) {
     gtk_tree_view_set_drag_dest_row (gobj(), NULL, GTK_TREE_VIEW_DROP_INTO_OR_AFTER);
     return false;
   }
   
   Gtk::TreeIter iter = get_model()->get_iter (treepath);
   if (!iter) {
     gtk_tree_view_set_drag_dest_row (gobj(), NULL, GTK_TREE_VIEW_DROP_INTO_OR_AFTER);
     return false;
   }
   
   Notebook::Ptr destNotebook;
   iter->get_value(0, destNotebook);
   if(std::dynamic_pointer_cast<AllNotesNotebook>(destNotebook)) {
     gtk_tree_view_set_drag_dest_row (gobj(), NULL, GTK_TREE_VIEW_DROP_INTO_OR_AFTER);
     return true;
   }
   
   set_drag_dest_row (treepath , Gtk::TREE_VIEW_DROP_INTO_OR_AFTER);
   
   return true;
 }
コード例 #2
0
ファイル: tcp_client.cpp プロジェクト: GNOME/gst-debugger
void TcpClient::read_data()
{
	const int max_size = 1024;
	char buffer[max_size];
	char *m_buff = buffer;
	auto input_stream = connection->get_input_stream();
	while (connected)
	{
		int size = gst_debugger_protocol_utils_read_header(input_stream->gobj(), cancel->gobj());

		if (size < 0)
			break;

		if (size > max_size)
		{
			m_buff = new char[size];
		}
		else
		{
			m_buff = buffer;
		}
		gst_debugger_protocol_utils_read_requested_size(input_stream->gobj(), size, m_buff, cancel->gobj());

		GstDebugger::GStreamerData data;
		data.ParseFromArray(m_buff, size);
		if (m_buff != buffer)
		{
			delete m_buff;
		}
		signal_frame_received(data);
	}

	connected = false;
	signal_status_changed(false);
}
コード例 #3
0
ファイル: dialog.cpp プロジェクト: wdmchaft/DoonSketch
Dialog::Dialog(Behavior::BehaviorFactory behavior_factory, const char *prefs_path, int verb_num,
               Glib::ustring const &apply_label)
    : _hiddenF12 (false),
      _prefs_path (prefs_path),
      _verb_num(verb_num),
      _apply_label (apply_label)
{
    gchar title[500];

    if (verb_num)
        sp_ui_dialog_title_string (Inkscape::Verb::get(verb_num), title);

    _title = title;

    _behavior = behavior_factory(*this);

    if (Inkscape::NSApplication::Application::getNewGui()) {
        _desktop_activated_connection = Inkscape::NSApplication::Editor::connectDesktopActivated (sigc::mem_fun (*this, &Dialog::onDesktopActivated));
        _dialogs_hidden_connection = Inkscape::NSApplication::Editor::connectDialogsHidden (sigc::mem_fun (*this, &Dialog::onHideF12));
        _dialogs_unhidden_connection = Inkscape::NSApplication::Editor::connectDialogsUnhidden (sigc::mem_fun (*this, &Dialog::onShowF12));
        _shutdown_connection = Inkscape::NSApplication::Editor::connectShutdown (sigc::mem_fun (*this, &Dialog::onShutdown));
    } else {
        g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop", G_CALLBACK(sp_retransientize), (void *)this);
        g_signal_connect(G_OBJECT(INKSCAPE), "dialogs_hide", G_CALLBACK(hideCallback), (void *)this);
        g_signal_connect(G_OBJECT(INKSCAPE), "dialogs_unhide", G_CALLBACK(unhideCallback), (void *)this);
        g_signal_connect(G_OBJECT(INKSCAPE), "shut_down", G_CALLBACK(sp_dialog_shutdown), (void *)this);
    }

    Glib::wrap(gobj())->signal_event().connect(sigc::mem_fun(*this, &Dialog::_onEvent));
    Glib::wrap(gobj())->signal_key_press_event().connect(sigc::mem_fun(*this, &Dialog::_onKeyPress));

    read_geometry();
}
コード例 #4
0
ファイル: dialog.cpp プロジェクト: zanqi/inkscape
Dialog::Dialog(Behavior::BehaviorFactory behavior_factory, const char *prefs_path, int verb_num,
               Glib::ustring const &apply_label)
    : _user_hidden(false), 
      _hiddenF12(false),
      retransientize_suppress(false),
      _prefs_path(prefs_path),
      _verb_num(verb_num),
      _title(),
      _apply_label(apply_label),
      _desktop(NULL),
      _is_active_desktop(true),
      _behavior(0)
{
    gchar title[500];

    if (verb_num) {
        sp_ui_dialog_title_string (Inkscape::Verb::get(verb_num), title);
    }

    _title = title;
    _behavior = behavior_factory(*this);
    _desktop = SP_ACTIVE_DESKTOP;

    g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop", G_CALLBACK(sp_retransientize), (void *)this);
    g_signal_connect(G_OBJECT(INKSCAPE), "dialogs_hide", G_CALLBACK(hideCallback), (void *)this);
    g_signal_connect(G_OBJECT(INKSCAPE), "dialogs_unhide", G_CALLBACK(unhideCallback), (void *)this);
    g_signal_connect(G_OBJECT(INKSCAPE), "shut_down", G_CALLBACK(sp_dialog_shutdown), (void *)this);

    Glib::wrap(gobj())->signal_event().connect(sigc::mem_fun(*this, &Dialog::_onEvent));
    Glib::wrap(gobj())->signal_key_press_event().connect(sigc::mem_fun(*this, &Dialog::_onKeyPress));

    read_geometry();
}
コード例 #5
0
void TableofcontentsNoteAddin::get_toc_popover_items(std::vector<Gtk::Widget*> & items) const
{
  std::vector<TocItem> toc_items;

  get_toc_items(toc_items);
  if(toc_items.size()) {
    auto item = dynamic_cast<Gtk::ModelButton*>(gnote::utils::create_popover_button("win.tableofcontents-goto-heading", ""));
    Gtk::Label *label = (Gtk::Label*)item->get_child();
    label->set_markup("<b>" + get_note()->get_title() + "</b>");
    gtk_actionable_set_action_target_value(GTK_ACTIONABLE(item->gobj()), g_variant_new_int32(0));
    item->property_role() = Gtk::BUTTON_ROLE_NORMAL;
    item->property_inverted() = true;
    item->property_centered() = false;
    items.push_back(item);
  }

  for(auto & toc_item : toc_items) {
    if(toc_item.heading_level == Heading::Level_2) {
      toc_item.heading = "→  " + toc_item.heading;
    }
    auto item = dynamic_cast<Gtk::ModelButton*>(gnote::utils::create_popover_button("win.tableofcontents-goto-heading", toc_item.heading));
    if(toc_item.heading_level == Heading::Level_1) {
      item->set_image(*manage(new Gtk::Image(Gtk::Stock::GO_FORWARD, Gtk::ICON_SIZE_MENU)));
    }
    gtk_actionable_set_action_target_value(GTK_ACTIONABLE(item->gobj()), g_variant_new_int32(toc_item.heading_position));
    item->property_role() = Gtk::BUTTON_ROLE_NORMAL;
    item->property_inverted() = true;
    item->property_centered() = false;
    items.push_back(item);
  }
}
コード例 #6
0
ファイル: aboutbox.cpp プロジェクト: tik0/inkscapeGrid
/**
 * Constructor
 */ 
AboutBox::AboutBox() : Gtk::Dialog(_("About Inkscape")) {

    // call this first
    initStrings();

    Gtk::Notebook *tabs=new Gtk::Notebook();

    tabs->set_scrollable();

    Gtk::Widget *splash=build_splash_widget();
    if (splash) {
        tabs->append_page(*manage(splash), _("_Splash"), true);
    }

    tabs->append_page(*manage(
        make_scrolled_text(authors_text)), _("_Authors"), true);
    tabs->append_page(*manage(
        make_scrolled_text(translators_text)), _("_Translators"), true);
    tabs->append_page(*manage(
        make_scrolled_text(license_text)), _("_License"), true);

#if WITH_GTKMM_3_0
    get_content_area()->pack_end(*manage(tabs), true, true);
#else
    get_vbox()->pack_end(*manage(tabs), true, true);
#endif

    tabs->show_all();

    add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE);
    set_default_response(Gtk::RESPONSE_CLOSE);

    Gtk::Label *label=new Gtk::Label();
    gchar *label_text = 
        g_strdup_printf("<small>Inkscape %s</small>",
              Inkscape::version_string);
    label->set_markup(label_text);
    label->set_alignment(Gtk::ALIGN_END, Gtk::ALIGN_CENTER);
    label->set_padding(5,0);
    g_free(label_text);
    label->set_selectable(true);
    label->show();

#if WITH_GTKMM_3_0
    get_content_area()->pack_start(*manage(label), false, false);
#else
    get_vbox()->pack_start(*manage(label), false, false);
#endif

    Gtk::Requisition requisition;
#if GTK_CHECK_VERSION(3,0,0)
    gtk_widget_get_preferred_size(reinterpret_cast<GtkWidget*>(gobj()), &requisition, NULL);
#else
    gtk_widget_size_request (reinterpret_cast<GtkWidget*>(gobj()), &requisition);
#endif
    // allow window to shrink
    set_size_request(0, 0);
    set_default_size(requisition.width, requisition.height);
}
コード例 #7
0
ファイル: thread_summary.cpp プロジェクト: talisein/Horizon
	const std::string ThreadSummary::get_hash() const {
		std::stringstream s;
		s << "{FAKEHASH}" 
		  << horizon_thread_summary_get_board(gobj())
		  << "-" << horizon_thread_summary_get_id(gobj()) 
		  << "-" << horizon_thread_summary_get_unix_date(gobj());

		return s.str();
	}
コード例 #8
0
void CGLDrawingArea::GTK_EndGL()
/***************************************/
{
    GtkWidget*     widget     = reinterpret_cast<GtkWidget*>(gobj());
    GdkGLDrawable* gldrawable = gtk_widget_get_gl_drawable (widget);
    gdk_gl_drawable_gl_end (gldrawable);
}
コード例 #9
0
void
cb_cpu_color_changed (GsmColorButton *cp, gpointer data)
{
    guint cpu_i = GPOINTER_TO_UINT (data);
    auto settings = Gio::Settings::create (GSM_GSETTINGS_SCHEMA);

    /* Get current values */
    GVariant *cpu_colors_var = g_settings_get_value (settings->gobj(), GSM_SETTING_CPU_COLORS);
    gsize children_n = g_variant_n_children(cpu_colors_var);

    /* Create builder to contruct new setting with updated value for cpu i */
    GVariantBuilder builder;
    g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);

    for (guint i = 0; i < children_n; i++) {
        if(cpu_i == i) {
            gchar *color;
            GdkRGBA button_color;
            gsm_color_button_get_color(cp, &button_color);
            color = gdk_rgba_to_string (&button_color);
            g_variant_builder_add(&builder, "(us)", i, color);
            g_free (color);
        } else {
            g_variant_builder_add_value(&builder,
                                        g_variant_get_child_value(cpu_colors_var, i));
        }
    }

    /* Just set the value and let the changed::cpu-colors signal callback do the rest. */
    settings->set_value (GSM_SETTING_CPU_COLORS, Glib::wrap (g_variant_builder_end(&builder)));
}
コード例 #10
0
void CGLDrawingArea::RegisterSignalHandlers()
/***************************************/
{
    //TODO: There's probably a better way to do this with gtkmm, but I don't really want to figure it out.
    //I have the C-style handler functions turn around and call the C++ virtual methods.

    GtkWidget* drawing_area = reinterpret_cast<GtkWidget*>(gobj());

    g_signal_connect_after (G_OBJECT (drawing_area), "realize",
                            G_CALLBACK (realize), this);
    g_signal_connect (G_OBJECT (drawing_area), "configure_event",
                      G_CALLBACK (configure_event), this);
    g_signal_connect (G_OBJECT (drawing_area), "expose_event",
                      G_CALLBACK (expose_event), this);
    g_signal_connect (G_OBJECT (drawing_area), "unrealize",
                      G_CALLBACK (unrealize), this);

    g_signal_connect (G_OBJECT (drawing_area), "map_event",
                      G_CALLBACK (map_event), this);
    g_signal_connect (G_OBJECT (drawing_area), "unmap_event",
                      G_CALLBACK (unmap_event), this);
    g_signal_connect (G_OBJECT (drawing_area), "visibility_notify_event",
                      G_CALLBACK (visibility_notify_event), this);

    //Here are the ones for mouse+keyboard
    add_events((Gdk::EventMask)(Gdk::BUTTON_PRESS_MASK | Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK));

}
コード例 #11
0
ファイル: AppWindow.cpp プロジェクト: yoosamui/DockLight
/*
 * http://web.mit.edu/ghudson/dev/nokrb/third/libwnck/libwnck/test-wnck.c
 * constructor 
 * set the window transparence
 */
AppWindow::AppWindow()
{
    add_events(Gdk::BUTTON_PRESS_MASK);
    set_app_paintable(true);

    GdkScreen *screen;
    GdkVisual *visual;

    gtk_widget_set_app_paintable(GTK_WIDGET(gobj()), TRUE);
    screen = gdk_screen_get_default();
    visual = gdk_screen_get_rgba_visual(screen);

    if (visual != NULL && gdk_screen_is_composited(screen)) {
        gtk_widget_set_visual(GTK_WIDGET(gobj()), visual);
    }

}
コード例 #12
0
ファイル: RenderArea.cpp プロジェクト: modemuser/y60
void
RenderArea::deactivateGLContext() {
    DB(cerr << "RenderArea::deactivateGLContext()" << endl);
    if (--_myContextRefCount == 0) {
        GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (GTK_WIDGET(gobj()));
        gdk_gl_drawable_gl_end (gldrawable);
    }
}
コード例 #13
0
ファイル: thread_summary.cpp プロジェクト: talisein/Horizon
	const std::string ThreadSummary::get_url() const {
		const gchar *url = horizon_thread_summary_get_url(gobj());
		std::stringstream s;

		if (url)
			s << static_cast<const char *>(url);

		return s.str();
	}
コード例 #14
0
ファイル: thread_summary.cpp プロジェクト: talisein/Horizon
	Glib::RefPtr<Horizon::Post> ThreadSummary::get_proxy_post() const {
		HorizonPost *cpost = HORIZON_POST(g_object_new(horizon_post_get_type(),
		                                               "md5",
		                                               get_hash().c_str(),
		                                               NULL));
		horizon_post_set_thumb_url(cpost, horizon_thread_summary_get_thumb_url(gobj()));
		auto post = Glib::wrap(cpost);
		return post;
	}
コード例 #15
0
ファイル: RenderArea.cpp プロジェクト: modemuser/y60
//virtual
void
RenderArea::swapBuffers() {
    GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (GTK_WIDGET(gobj()));
    if (gdk_gl_drawable_is_double_buffered (gldrawable)) {
        gdk_gl_drawable_swap_buffers (gldrawable);
    } else {
        glFlush ();
    }
}
コード例 #16
0
ファイル: RenderArea.cpp プロジェクト: modemuser/y60
void
RenderArea::activateGLContext() {
    DB(cerr << "RenderArea::activateGLContext()" << endl);
    if (_myContextRefCount++ == 0) {
        GdkGLContext *glcontext = gtk_widget_get_gl_context (GTK_WIDGET(gobj()));
        GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (GTK_WIDGET(gobj()));
        gdk_gl_drawable_gl_begin (gldrawable, glcontext);

        // init glew
        unsigned int myGlewError = glewInit();
        if (GLEW_OK != myGlewError) {
            throw RendererException(std::string("Glew Initialization Error: ") +
                    std::string(reinterpret_cast<const char*>(glewGetErrorString(myGlewError))),
                    PLUS_FILE_LINE);
        }
        GLResourceManager::get().initCaps();
    }
}
コード例 #17
0
ZoomStatus::ZoomStatus()
    : _adj(0.0, -1.0, 1.0, 0.1, 0.1)
{
    _dt = 0;
    _upd_f = false;

    property_numeric() = false;
    property_update_policy() = Gtk::UPDATE_ALWAYS;
    sp_set_font_size_smaller(static_cast<GtkWidget*>((void*)gobj()));
}
コード例 #18
0
void CGLDrawingArea::MakeDrawingAreaAnOpenGLContext()
/***************************************/
{
    GtkWidget* widget = reinterpret_cast<GtkWidget*>(gobj());
    gtk_widget_set_gl_capability(widget,
                                 GLConfig(),
                                 NULL,
                                 TRUE,
                                 GDK_GL_RGBA_TYPE);
}
コード例 #19
0
void CGLDrawingArea::GTK_FlushBufferGL()
/***************************************/
{
    GtkWidget*     widget     = reinterpret_cast<GtkWidget*>(gobj());
    GdkGLDrawable* gldrawable = gtk_widget_get_gl_drawable (widget);
    if (gdk_gl_drawable_is_double_buffered (gldrawable))
        gdk_gl_drawable_swap_buffers (gldrawable);
    else
        glFlush();
}
コード例 #20
0
void CGLDrawingArea::GTK_BeginGL()
/***************************************/
{
    GtkWidget*     widget = reinterpret_cast<GtkWidget*>(gobj());
    GdkGLContext*  glcontext = gtk_widget_get_gl_context (widget);
    GdkGLDrawable* gldrawable = gtk_widget_get_gl_drawable (widget);

    /*** OpenGL BEGIN ***/
    if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
        throw(CGLException());
}
コード例 #21
0
ファイル: closebutton.cpp プロジェクト: JohnCC330/gobby
void Gobby::CloseButton::on_style_changed(
	const Glib::RefPtr<Gtk::Style>& previous_style)
#endif
{
	int width;
	int height;

	gtk_icon_size_lookup_for_settings(
		gtk_widget_get_settings(GTK_WIDGET(gobj())),
		GTK_ICON_SIZE_MENU, &width, &height);
	set_size_request(width + 2, height + 2);
}
コード例 #22
0
MyWidget::MyWidget() :
  //The GType name will actually be gtkmm__CustomObject_mywidget
  Glib::ObjectBase("mywidget"),
  Gtk::Widget(),
  m_scale(1000)
{
  set_has_window(true);

  //This shows the GType name, which must be used in the CSS file.
  std::cout << "GType name: " << G_OBJECT_TYPE_NAME(gobj()) << std::endl;

  //This shows that the GType still derives from GtkWidget:
  //std::cout << "Gtype is a GtkWidget?:" << GTK_IS_WIDGET(gobj()) << std::endl;

  //Install a style so that an aspect of this widget may be themed via a CSS
  //style sheet file:
  gtk_widget_class_install_style_property(GTK_WIDGET_CLASS(
              G_OBJECT_GET_CLASS(gobj())),
      g_param_spec_int("example_scale",
        "Scale of Example Drawing",
        "The scale to use when drawing. This is just a silly example.",
        G_MININT,
        G_MAXINT,
        500,
        G_PARAM_READABLE) );

  m_refStyleProvider = Gtk::CssProvider::create();
  Glib::RefPtr<Gtk::StyleContext> refStyleContext = get_style_context();
  refStyleContext->add_provider(m_refStyleProvider,
    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

  try
  {
    m_refStyleProvider->load_from_path("custom_gtk.css");
  }
  catch(const Glib::Error& ex)
  {
    std::cerr << "Gtk::CssProvider::load_from_path() failed: " << ex.what() << std::endl;
  }
}
コード例 #23
0
ファイル: gx_main.cpp プロジェクト: dafx/guitarix
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();
}
コード例 #24
0
ファイル: RenderArea.cpp プロジェクト: modemuser/y60
RenderArea::RenderArea(RenderAreaPtr theContext) : AbstractRenderWindow(jslib::JSApp::ShellErrorReporter),
    _myContextRefCount(0),
    _isFirstFrame(true)
{
    GdkGLConfig * myGLConfig = gdk_gl_config_new_by_mode(
                GdkGLConfigMode(GDK_GL_MODE_RGBA | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE | GDK_GL_MODE_ALPHA));
    if (myGLConfig == 0) {
        throw asl::Exception("can't init GL",PLUS_FILE_LINE);
    }

    // If another render area is supplied as constructor paramter, this render area is uses as
    // source for a shared y60-gl-context and gdk-gl-context.
    GdkGLContext * myGdkGLContext = 0;
    if (theContext) {
        myGdkGLContext = theContext->getGdkGlContext();
        if (!myGdkGLContext) {
            throw asl::Exception("RenderArea: Failed to get gdk GL context from shared render area.", PLUS_FILE_LINE);
        }
        setGLContext(theContext->getGLContext());
    } else {
        setGLContext(GLContextPtr(new GLContext()));
    }

    /* Set OpenGL-capability to the widget. */
    DB(cerr << "RenderArea::RenderArea() sharing with " << myGdkGLContext << endl);
    if (!gtk_widget_set_gl_capability (GTK_WIDGET(gobj()),
                myGLConfig,
                myGdkGLContext,
                true,
                GDK_GL_RGBA_TYPE))
    {
        throw asl::Exception("RenderArea: could not create GL context!", PLUS_FILE_LINE);
    }

    // enable mouse events
    Gdk::EventMask flags = get_events();
    flags |= Gdk::BUTTON_PRESS_MASK;
    flags |= Gdk::POINTER_MOTION_MASK;
    flags |= Gdk::BUTTON_RELEASE_MASK;
    flags |= Gdk::SCROLL_MASK;
    flags |= Gdk::ENTER_NOTIFY_MASK;
    flags |= Gdk::LEAVE_NOTIFY_MASK;
    set_events(flags);

    y60::EventDispatcher::get().addSource(&_myEventAdapter);
    y60::EventDispatcher::get().addSink(this);
    // TODO: createRenderer(theOtherRenderer);

    ShaderLibrary::setGLisReadyFlag(true);
}
コード例 #25
0
// Activate parent if necessary
void PersistentTransientWindow::activateParent()
{
	// Only activate if this window is active already
	if (gobj()->is_active)
	{
		Gtk::Container* toplevel = get_toplevel();

		if (toplevel != NULL && toplevel->is_toplevel() &&
			toplevel->is_visible() && dynamic_cast<Gtk::Window*>(toplevel) != NULL)
		{
			static_cast<Gtk::Window*>(toplevel)->present();
		}
	}
}
コード例 #26
0
ファイル: chatsessionview.cpp プロジェクト: FluffyStuff/gobby
Gobby::ChatSessionView::ChatSessionView(InfChatSession* session,
                                        const Glib::ustring& title,
                                        const Glib::ustring& path,
                                        const Glib::ustring& hostname,
                                        Preferences& preferences):
	SessionView(INF_SESSION(session), title, path, hostname),
	m_preferences(preferences), m_chat(INF_GTK_CHAT(inf_gtk_chat_new()))
{
	inf_gtk_chat_set_session(m_chat, session);
	gtk_widget_show(GTK_WIDGET(m_chat));

	gtk_box_pack_start(GTK_BOX(gobj()), GTK_WIDGET(m_chat),
	                   TRUE, TRUE, 0);
}
コード例 #27
0
ファイル: RenderArea.cpp プロジェクト: modemuser/y60
bool
RenderArea::on_expose_event (GdkEventExpose *event) {
    try {
        /*GdkGLDrawable *gldrawable =*/ gtk_widget_get_gl_drawable (GTK_WIDGET(gobj()));
        ScopedGLContext myContext(this);

        if (_myRenderer && _myScene) {
            if (_isFirstFrame) {
                _myRenderer->getCurrentScene()->updateAllModified();
                _isFirstFrame = false;
            }

            STOP_TIMER(frames);
            asl::getDashboard().cycle();
            START_TIMER(frames);

            onFrame();

            //START_TIMER(dispatchEvents);
            //y60::EventDispatcher::get().dispatch();
            //STOP_TIMER(dispatchEvents);

            START_TIMER(handleRequests);
            _myRequestManager.handleRequests();
            STOP_TIMER(handleRequests);

            renderFrame();
            swapBuffers();

            /** done rendering **/
        } else {
            // nothing to render... just clear the buffer to avoid pixel garbage
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            swapBuffers();
        }

        if (_myJSContext) {
            MAKE_SCOPE_TIMER(gc);
            JS_GC(_myJSContext);
        }
    } catch (const asl::Exception & ex) {
        AC_FATAL << "Exception caught: " << ex;
    } catch (const exception & ex) {
        AC_FATAL << "Exception caught: " << ex.what();
    } catch (...) {
        AC_FATAL << "Unknown exception";
    }
    return true;
}
コード例 #28
0
PageFlipPanel::PageFlipPanel()
    : up_button("U"), down_button("D")
{
    int width = 50;

    up_button.signal_clicked().connect(
        sigc::mem_fun(*this, &PageFlipPanel::up_button_pressed));
    down_button.signal_clicked().connect(
        sigc::mem_fun(*this, &PageFlipPanel::down_button_pressed));


    vbox.pack_start(up_button, Gtk::PACK_EXPAND_WIDGET);
    vbox.pack_start(down_button);
    add(vbox);
    up_button.show();
    down_button.show();
    vbox.show();

    set_default_size(width, Gdk::screen_height());
    move(Gdk::screen_width()-width, 0);
    set_type_hint(Gdk::WINDOW_TYPE_HINT_DOCK);
    show();

    gulong val[12];
    val[0] = 0;
    val[1] = width;
    val[2] = 0;
    val[3] = 0;
    val[4] = 0;
    val[5] = 0;
    val[6] = 0;
    val[7] = 200;
    val[8] = 0;
    val[9] = 0;
    val[10] = 0;
    val[11] = 0;

    GtkWindow* gtkWindow = gobj();

    gdk_property_change(
        GTK_WIDGET(gtkWindow)->window,
        gdk_atom_intern("_NET_WM_STRUT_PARTIAL", FALSE),
        gdk_atom_intern ("CARDINAL", FALSE),
        32,
        GDK_PROP_MODE_REPLACE,
        (unsigned char *)val, 12);


}
コード例 #29
0
ファイル: Port.cpp プロジェクト: EQ4/lad
/* Construct a Port on an existing module. */
Port::Port(Module&            module,
           const std::string& name,
           bool               is_input,
           uint32_t           color)
	: Box(module.canvas(),
	      GANV_BOX(
		      ganv_port_new(module.gobj(), is_input,
		                           "fill-color", color,
		                           "border-color", highlight_color(color, 0x20),
		                           "label", name.c_str(),
		                           NULL)))
{
	g_signal_connect(gobj(), "value-changed",
	                 G_CALLBACK(on_value_changed), this);
}
コード例 #30
0
ファイル: closebutton.cpp プロジェクト: JohnCC330/gobby
Gobby::CloseButton::CloseButton()
{
        set_relief(Gtk::RELIEF_NONE);
        set_focus_on_click(false);
	//set_flags(get_flags() & ~Gtk::CAN_FOCUS);

        GtkRcStyle* rc_style = gtk_rc_style_new();
        rc_style->xthickness = 0;
        rc_style->ythickness = 0;
        gtk_widget_modify_style(GTK_WIDGET(gobj()), rc_style);
        g_object_unref(rc_style);

        Gtk::Image* button_image = Gtk::manage(
                new Gtk::Image(Gtk::Stock::CLOSE, Gtk::ICON_SIZE_MENU));
        add(*button_image);
        button_image->show();
}