void systray_rootmenu_add_submenu(menu_infos_t* mis, menu_type_t type, const char* name, const char* icon) { GtkMenuShell* menu = mis->menu; menu_info_t* mi = &mis->menu_info[type]; systray_menu_add_submenu(menu, mi, name, NULL, icon); systray_menu_add_item(mi->menu, "none", NULL, false); }
void systray_remove_menu_item(menu_info_t* mi, GtkWidget* item) { gtk_container_remove(GTK_CONTAINER(mi->menu), item); /* insert "none" placeholder label for empty menus */ if(!mi->parent) if(g_hash_table_size(mi->items) <= 1) systray_menu_add_item(mi->menu, "none", NULL, false); }
void systray_menu_add_application(GtkMenuShell* menu, const char* name, const char* icon, const char* command) { gchar** exe = g_strsplit_set(command, " ", 2); gchar* c = g_find_program_in_path(exe[0]); g_strfreev(exe); GtkWidget* item = systray_menu_add_item(menu, name, icon, (c != NULL)); g_free(c); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(start_application_cb), (gpointer)command); }
void systray_add_placeholder(menu_info_t* mi) { /* insert "none" placeholder label for empty menus */ if(g_hash_table_size(mi->items) <= 1) systray_menu_add_item(mi->menu, "none", NULL, FALSE); }
void systray_menu_add_action(GtkMenuShell* menu, const char* name, const char* icon, GCallback cb) { GtkWidget* item = systray_menu_add_item(menu, name, icon, TRUE); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(cb), NULL); }