Beispiel #1
0
static void
tray_init (void)
{
	flash_tag = 0;
	tray_status = TS_NONE;
	custom_icon1 = NULL;
	custom_icon2 = NULL;

	sticon = gtk_status_icon_new_from_pixbuf (ICON_NORMAL);
	if (!sticon)
		return;
	g_signal_connect (G_OBJECT (sticon), "popup-menu",
							G_CALLBACK (tray_menu_cb), sticon);
	g_signal_connect (G_OBJECT (sticon), "activate",
							G_CALLBACK (tray_menu_restore_cb), NULL);
}
static GdkPixbuf* notification_trayicon_create(void)
{
  GdkPixbuf *trayicon_nomail;
	GtkActionGroup *action_group;

  trayicon_nomail = notification_pixbuf_get(NOTIFICATION_TRAYICON_NOMAIL);

  notification_trayicon_destroy();

  trayicon = gtk_status_icon_new_from_pixbuf(trayicon_nomail);

  g_signal_connect(G_OBJECT(trayicon), "activate",
		   G_CALLBACK(notification_trayicon_on_activate), NULL);
  g_signal_connect(G_OBJECT(trayicon), "popup-menu",
		   G_CALLBACK(notification_trayicon_on_popup_menu), NULL);
  g_signal_connect(G_OBJECT(trayicon), "size-changed",
		   G_CALLBACK(notification_trayicon_on_size_changed), NULL);

  /* Popup-Menu */
	action_group = cm_menu_create_action_group("SysTrayiconPopup", trayicon_popup_menu_entries,
																						 G_N_ELEMENTS(trayicon_popup_menu_entries), NULL);
	gtk_action_group_add_toggle_actions(action_group, trayicon_popup_toggle_menu_entries,
																			G_N_ELEMENTS(trayicon_popup_toggle_menu_entries), NULL);

	MENUITEM_ADDUI("/Menus", "SysTrayiconPopup", "SysTrayiconPopup", GTK_UI_MANAGER_MENU)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "GetMail", "SysTrayiconPopup/GetMail", GTK_UI_MANAGER_MENUITEM)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "GetMailAcc", "SysTrayiconPopup/GetMailAcc", GTK_UI_MANAGER_MENU)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator1", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Email", "SysTrayiconPopup/Email", GTK_UI_MANAGER_MENUITEM)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "EmailAcc", "SysTrayiconPopup/EmailAcc", GTK_UI_MANAGER_MENU)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator2", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "OpenAB", "SysTrayiconPopup/OpenAB", GTK_UI_MANAGER_MENUITEM)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator3", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "ToggleOffline", "SysTrayiconPopup/ToggleOffline", GTK_UI_MANAGER_MENUITEM)
#ifdef HAVE_LIBNOTIFY
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "ShowBubbles", "SysTrayiconPopup/ShowBubbles", GTK_UI_MANAGER_MENUITEM)
#endif
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator4", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR)
	MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Exit", "SysTrayiconPopup/Exit", GTK_UI_MANAGER_MENUITEM)

	traymenu_popup = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
				gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/SysTrayiconPopup")));


  return trayicon_nomail;
}
Beispiel #3
0
static GtkStatusIcon *create_tray_icon() {
    GtkStatusIcon *tray_icon;

    pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
                            TRUE, 8, PIX_W, PIX_H);
    
    tray_icon = gtk_status_icon_new_from_pixbuf(pixbuf);

#if 0
    g_signal_connect(G_OBJECT(tray_icon), "activate", 
             G_CALLBACK(tray_icon_on_click), NULL);
    g_signal_connect(G_OBJECT(tray_icon), 
             "popup-menu",
             G_CALLBACK(tray_icon_on_menu), NULL);
#endif
 
    gtk_status_icon_set_visible(tray_icon, TRUE);

    return tray_icon;
}
Beispiel #4
0
void create_tray_icon(GtkWidget *app)
{
	GtkIconTheme *icontheme;
	GdkPixbuf *pixbuf;

	
	icontheme = gtk_icon_theme_get_default ();
	pixbuf = gtk_icon_theme_load_icon (icontheme, "gnomeradio", 16, 0, NULL);
	g_return_if_fail(pixbuf);
	tray_icon = gtk_status_icon_new_from_pixbuf (pixbuf);
	g_object_unref (pixbuf);

	g_signal_connect (tray_icon,
                          "activate",
                          G_CALLBACK (tray_activate_cb),
                          (gpointer) app);
	g_signal_connect (tray_icon,
                          "popup-menu",
                          G_CALLBACK (tray_popup_menu),
                          (gpointer) app);
}
Beispiel #5
0
GtkWidget *fd_systray_create()
{
    GtkStatusIcon *status_icon = NULL;
    GdkPixbuf *pixbuf;

    pixbuf = create_pixbuf ("pixmaps/freedict.png");
    if (pixbuf) {
        status_icon = gtk_status_icon_new_from_pixbuf(pixbuf);
        gdk_pixbuf_unref(pixbuf);
    }

    g_signal_connect((gpointer)status_icon,
                     "activate", G_CALLBACK (status_icon_activate_cb), NULL);
    g_signal_connect((gpointer)status_icon,
                     "popup-menu", G_CALLBACK(status_icon_popup_menu_cb), NULL);

    gtk_status_icon_set_tooltip(status_icon, "Freedict");

    GLADE_HOOKUP_OBJECT_NO_REF(status_icon, status_icon, "status_icon");

    return (GtkWidget *)status_icon;
}
Beispiel #6
0
int CUIHandler::CreateMainWnd()
{
    GtkWidget* menubar;
    GtkWidget* filemenu, *helpmenu;
    GtkWidget* file, *quit;
    GtkWidget* help, *about;
    GtkWidget* vbox, *hbox;
    GtkWidget* align;
    GtkToolItem* toolitem;
    GtkWidget* frame;
    GtkWidget* status_menu;
    GtkWidget* status_menu_item;
    GtkWidget *hseparator;

    GtkWidget *statusbarHBox;
    GtkWidget *statusbarFrameConnection;
    GtkWidget *statusbarAlignmentConnection;
    GtkWidget *statusbarHBoxConnection;
    GtkWidget *statusbarFrameFps;
    GtkWidget *statusbarAlignmentFps;
    GtkWidget *statusbarFrameResolution;
    GtkWidget *statusbarAlignmentResolution;

    // set up tray icon
    trayIcon = gtk_status_icon_new_from_pixbuf(disconnectedTrayIcon);
    gtk_status_icon_set_tooltip(trayIcon, TRAY_TOOLTIP_DISCONNECTED);
    gtk_status_icon_set_visible(trayIcon, TRUE);
    g_signal_connect(G_OBJECT(trayIcon), "popup-menu", G_CALLBACK(status_popup), NULL);
    g_signal_connect(G_OBJECT(trayIcon), "activate", G_CALLBACK(status_activate), NULL);

    // set up main mainWindow
    mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(G_OBJECT(mainWindow), "delete_event", G_CALLBACK(delete_event), NULL);
    g_signal_connect(G_OBJECT(mainWindow), "destroy", G_CALLBACK(destroy), NULL);
    g_signal_connect(G_OBJECT(mainWindow), "window_state_event", G_CALLBACK(track_minimize), NULL);

    gtk_window_set_title(GTK_WINDOW(mainWindow), SMARTCAM_WND_TITLE);
    gtk_container_set_border_width(GTK_CONTAINER(mainWindow), 1);
    gtk_window_set_resizable(GTK_WINDOW(mainWindow), FALSE);
    gtk_widget_set_size_request(mainWindow, MAIN_WND_WIDTH, MAIN_WND_HEIGHT);
    gtk_window_set_position(GTK_WINDOW(mainWindow), GTK_WIN_POS_NONE);
    gtk_window_set_gravity(GTK_WINDOW (mainWindow), GDK_GRAVITY_CENTER);

    gtk_window_set_default_icon(connectedTrayIcon);

    GdkPixbuf* icon;
    GList* icon_list = NULL;
    icon = gdk_pixbuf_new_from_file(DATADIR "/icons/hicolor/16x16/apps/smartcam.png", NULL);
    icon_list = g_list_append(icon_list, icon);
    icon = gdk_pixbuf_new_from_file(DATADIR "/icons/hicolor/22x22/apps/smartcam.png", NULL);
    icon_list = g_list_append(icon_list, icon);
    icon = gdk_pixbuf_new_from_file(DATADIR "/icons/hicolor/24x24/apps/smartcam.png", NULL);
    icon_list = g_list_append(icon_list, icon);
    icon = gdk_pixbuf_new_from_file(DATADIR "/icons/hicolor/32x32/apps/smartcam.png", NULL);
    icon_list = g_list_append(icon_list, icon);
    icon = gdk_pixbuf_new_from_file(DATADIR "/icons/hicolor/48x48/apps/smartcam.png", NULL);
    icon_list = g_list_append(icon_list, icon);

    gtk_window_set_default_icon_list(icon_list);

    g_list_foreach(icon_list, (GFunc)g_object_unref, NULL );
    g_list_free(icon_list);

    // create menubar
    menubar = gtk_menu_bar_new();

    filemenu = gtk_menu_new();
    file = gtk_menu_item_new_with_mnemonic("_File");
    miSettings = gtk_image_menu_item_new_with_label("Settings");
    gtk_image_menu_item_set_image(
        GTK_IMAGE_MENU_ITEM(miSettings),
        gtk_image_new_from_stock(GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU));
    g_signal_connect(G_OBJECT(miSettings), "activate", G_CALLBACK(OnSettingsClicked), (gpointer) NULL);
    quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL);
    g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(destroy), NULL);

    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
    gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), miSettings);
    gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quit);

    helpmenu = gtk_menu_new();
    help = gtk_menu_item_new_with_mnemonic("_Help");
    about = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
    g_signal_connect(about, "activate", G_CALLBACK(show_about_dialog), NULL);

    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), help);
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), helpmenu);
    gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu), about);

    // create toolbar
    toolbar = gtk_toolbar_new();
    gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS);
    gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_MENU);
    g_object_set(G_OBJECT(toolbar), "can-focus", FALSE, NULL);

    tbSettings = gtk_tool_button_new_from_stock(GTK_STOCK_PREFERENCES);
    g_signal_connect(G_OBJECT(tbSettings), "clicked", G_CALLBACK(OnSettingsClicked), NULL);
    g_object_set(G_OBJECT(tbSettings), "tooltip-text", "Settings", NULL);
    g_object_set(G_OBJECT(tbSettings), "can-focus", FALSE, NULL);
    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tbSettings, 0);

    tbDisconnect = gtk_tool_button_new_from_stock(GTK_STOCK_DISCONNECT);
    g_signal_connect(G_OBJECT(tbDisconnect), "clicked", G_CALLBACK(OnDisconnectClicked), NULL);
    g_object_set(G_OBJECT(tbDisconnect), "tooltip-text", "Disconnect", NULL);
    g_object_set(G_OBJECT(tbDisconnect), "can-focus", FALSE, NULL);
    g_object_set(G_OBJECT(tbDisconnect), "sensitive", FALSE, NULL); // disable disconnect
    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tbDisconnect, 1);

    // create preview frame
    vbox = gtk_vbox_new(FALSE, 1);
    gtk_container_set_border_width(GTK_CONTAINER(vbox), 1);
    gtk_container_add(GTK_CONTAINER(mainWindow), vbox);

    align = gtk_alignment_new(0.5, 0.5, 0, 0);

    frame = gtk_frame_new(NULL);
    gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);

    image = gtk_image_new_from_pixbuf(logoIcon);

    gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), align, TRUE, TRUE, 0);

    gtk_container_add(GTK_CONTAINER(align), frame);
    gtk_container_add(GTK_CONTAINER(frame), image);

    // set up status bar
    hseparator = gtk_hseparator_new ();
    gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, FALSE, 0);

    statusbarHBox = gtk_hbox_new (FALSE, 0);
    gtk_box_pack_start (GTK_BOX (vbox), statusbarHBox, FALSE, FALSE, 0);

    statusbarFrameConnection = gtk_frame_new (NULL);
    gtk_box_pack_start (GTK_BOX (statusbarHBox), statusbarFrameConnection, TRUE, TRUE, 0);
    gtk_widget_set_size_request (statusbarFrameConnection, 55, 25);
    gtk_frame_set_label_align (GTK_FRAME (statusbarFrameConnection), 0, 0);
    gtk_frame_set_shadow_type (GTK_FRAME (statusbarFrameConnection), GTK_SHADOW_IN);

    statusbarAlignmentConnection = gtk_alignment_new (0, 0.5, 1, 1);
    gtk_container_add (GTK_CONTAINER (statusbarFrameConnection), statusbarAlignmentConnection);
    gtk_alignment_set_padding (GTK_ALIGNMENT (statusbarAlignmentConnection), 0, 0, 3, 0);

    statusbarHBoxConnection = gtk_hbox_new (FALSE, 0);
    gtk_container_add (GTK_CONTAINER (statusbarAlignmentConnection), statusbarHBoxConnection);

    if(pSmartEngine->GetSettings().connectionType == CONN_BLUETOOTH)
    {
        statusbarImageConnection = gtk_image_new_from_pixbuf(btStatusIcon);
    }
    else
    {
        statusbarImageConnection = gtk_image_new_from_pixbuf(inetStatusIcon);
    }
    gtk_box_pack_start (GTK_BOX (statusbarHBoxConnection), statusbarImageConnection, FALSE, FALSE, 0);
    gtk_misc_set_alignment (GTK_MISC (statusbarImageConnection), 0, 0.5);

    statusbarLabelConnection = gtk_label_new ("Disconnected");
    gtk_box_pack_start (GTK_BOX (statusbarHBoxConnection), statusbarLabelConnection, TRUE, TRUE, 0);
    gtk_misc_set_alignment (GTK_MISC (statusbarLabelConnection), 0, 0.5);

    statusbarFrameFps = gtk_frame_new (NULL);
    gtk_box_pack_start (GTK_BOX (statusbarHBox), statusbarFrameFps, TRUE, TRUE, 0);
    gtk_widget_set_size_request (statusbarFrameFps, 17, 25);
    gtk_frame_set_shadow_type (GTK_FRAME (statusbarFrameFps), GTK_SHADOW_IN);

    statusbarAlignmentFps = gtk_alignment_new (0, 0.5, 1, 1);
    gtk_container_add (GTK_CONTAINER (statusbarFrameFps), statusbarAlignmentFps);
    gtk_alignment_set_padding (GTK_ALIGNMENT (statusbarAlignmentFps), 0, 0, 3, 0);

    statusbarLabelFps = gtk_label_new (CUIHandler::STATUS_LABEL_FPS);
    gtk_container_add (GTK_CONTAINER (statusbarAlignmentFps), statusbarLabelFps);
    gtk_misc_set_alignment (GTK_MISC (statusbarLabelFps), 0, 0.5);

    statusbarFrameResolution = gtk_frame_new (NULL);
    gtk_box_pack_start (GTK_BOX (statusbarHBox), statusbarFrameResolution, TRUE, TRUE, 0);
    gtk_widget_set_size_request (statusbarFrameResolution, 92, 25);
    gtk_frame_set_shadow_type (GTK_FRAME (statusbarFrameResolution), GTK_SHADOW_IN);

    statusbarAlignmentResolution = gtk_alignment_new (0, 0.5, 1, 1);
    gtk_container_add (GTK_CONTAINER (statusbarFrameResolution), statusbarAlignmentResolution);
    gtk_alignment_set_padding (GTK_ALIGNMENT (statusbarAlignmentResolution), 0, 0, 3, 0);

    statusbarLabelResolution = gtk_label_new (CUIHandler::STATUS_LABEL_RESOLUTION);
    gtk_container_add (GTK_CONTAINER (statusbarAlignmentResolution), statusbarLabelResolution);
    gtk_misc_set_alignment (GTK_MISC (statusbarLabelResolution), 0, 0.5);

    gtk_widget_show_all(mainWindow);

    return 0;
}
Beispiel #7
0
void wxTaskBarIcon::Private::SetIcon()
{
#if GTK_CHECK_VERSION(2,10,0)
    if (GTK_CHECK_VERSION(3,0,0) || gtk_check_version(2,10,0) == NULL)
    {
        if (m_statusIcon)
            gtk_status_icon_set_from_pixbuf(m_statusIcon, m_bitmap.GetPixbuf());
        else
        {
            m_statusIcon = gtk_status_icon_new_from_pixbuf(m_bitmap.GetPixbuf());
            g_signal_connect(m_statusIcon, "activate",
                G_CALLBACK(icon_activate), m_taskBarIcon);
            g_signal_connect(m_statusIcon, "popup_menu",
                G_CALLBACK(status_icon_popup_menu), m_taskBarIcon);
        }
    }
    else
#endif
    {
#ifndef __WXGTK3__
        m_size = 0;
        if (m_eggTrayIcon)
        {
            GtkWidget* image = gtk_bin_get_child(GTK_BIN(m_eggTrayIcon));
            gtk_image_set_from_pixbuf(GTK_IMAGE(image), m_bitmap.GetPixbuf());
        }
        else
        {
            m_eggTrayIcon = GTK_WIDGET(egg_tray_icon_new("wxTaskBarIcon"));
            gtk_widget_add_events(m_eggTrayIcon, GDK_BUTTON_PRESS_MASK);
            g_signal_connect(m_eggTrayIcon, "size_allocate",
                G_CALLBACK(icon_size_allocate), this);
            g_signal_connect(m_eggTrayIcon, "destroy",
                G_CALLBACK(icon_destroy), this);
            g_signal_connect(m_eggTrayIcon, "button_press_event",
                G_CALLBACK(icon_button_press_event), m_taskBarIcon);
            g_signal_connect(m_eggTrayIcon, "popup_menu",
                G_CALLBACK(icon_popup_menu), m_taskBarIcon);
            GtkWidget* image = gtk_image_new_from_pixbuf(m_bitmap.GetPixbuf());
            gtk_container_add(GTK_CONTAINER(m_eggTrayIcon), image);
            gtk_widget_show_all(m_eggTrayIcon);
        }
#endif
    }
#if wxUSE_TOOLTIPS
    const char *tip_text = NULL;
    if (!m_tipText.empty())
        tip_text = m_tipText.utf8_str();

#if GTK_CHECK_VERSION(2,10,0)
    if (m_statusIcon)
    {
#if GTK_CHECK_VERSION(2,16,0)
        if (GTK_CHECK_VERSION(3,0,0) || gtk_check_version(2,16,0) == NULL)
            gtk_status_icon_set_tooltip_text(m_statusIcon, tip_text);
        else
#endif
        {
#ifndef __WXGTK3__
            gtk_status_icon_set_tooltip(m_statusIcon, tip_text);
#endif
        }
    }
    else
#endif // GTK_CHECK_VERSION(2,10,0)
    {
#ifndef __WXGTK3__
        if (tip_text && m_tooltips == NULL)
        {
            m_tooltips = gtk_tooltips_new();
            g_object_ref(m_tooltips);
            gtk_object_sink(GTK_OBJECT(m_tooltips));
        }
        if (m_tooltips)
            gtk_tooltips_set_tip(m_tooltips, m_eggTrayIcon, tip_text, "");
#endif
    }
#endif // wxUSE_TOOLTIPS
}