/* * Callback for the timer * * This is the callback that the timer is calling in order to check if messages are there. * */ gboolean _tray_change_icon(gpointer data) { if (shutting_down) { return FALSE; } unread_messages = wins_get_total_unread(); if (unread_messages) { if (!prof_tray) { prof_tray = gtk_status_icon_new_from_file(icon_msg_filename->str); } else { gtk_status_icon_set_from_file(prof_tray, icon_msg_filename->str); } } else { if (prefs_get_boolean(PREF_TRAY_READ)) { if (!prof_tray) { prof_tray = gtk_status_icon_new_from_file(icon_filename->str); } else { gtk_status_icon_set_from_file(prof_tray, icon_filename->str); } } else { g_clear_object(&prof_tray); prof_tray = NULL; } } return TRUE; }
int main(int argc, char **argv) { MagickCoreGenesis(*argv, MagickTrue); gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), ""); /* g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL);*/ g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (window), image); gtk_widget_show(image); gtk_widget_show(window); icon = gtk_status_icon_new_from_file("img/pingpong_red.png"); gtk_status_icon_set_visible(icon, TRUE); g_timeout_add(1000, do_timer, NULL); gtk_main(); MagickCoreTerminus(); return 0; }
void create_tray(void) { _get_icons(); prof_tray = gtk_status_icon_new_from_file(icon_filename->str); shutting_down = false; timer = g_timeout_add(5000, _tray_change_icon, NULL); }
void trayIcon_init() { trayicon = gtk_status_icon_new_from_file(ICO_PATH); trayicon_menu = gtk_menu_new(); //trayicon_menuitem_logoff = gtk_menu_item_new_with_label("断开链接"); trayicon_menuitem_exit = gtk_menu_item_new_with_label("退出"); trayicon_menuitem_severMsg = gtk_menu_item_new_with_label("服务器消息"); // trayicon_menuitem_about=gtk_menu_item_new_with_label("关于"); g_signal_connect(G_OBJECT(trayicon_menuitem_exit), "activate", G_CALLBACK(connect_exit), NULL); // g_signal_connect(G_OBJECT(trayicon_menuitem_logoff), "activate", G_CALLBACK(connect_logoff), NULL); g_signal_connect(G_OBJECT(trayicon_menuitem_severMsg), "activate", G_CALLBACK(showMesg), NULL); // g_signal_connect(G_OBJECT(trayicon_menuitem_about),"activeate",G_CALLBACK(showMesg),NULL); gtk_menu_shell_append(GTK_MENU_SHELL(trayicon_menu), trayicon_menuitem_exit); // gtk_menu_shell_append(GTK_MENU_SHELL(trayicon_menu), trayicon_menuitem_logoff); gtk_menu_shell_append(GTK_MENU_SHELL(trayicon_menu), trayicon_menuitem_severMsg); // gtk_menu_shell_append(GTK_MENU_SHELL(trayicon_menu),trayicon_menuitem_about); gtk_widget_show_all(trayicon_menu); gtk_status_icon_set_tooltip (trayicon, "Birl"); gtk_status_icon_set_visible(trayicon, FALSE); g_signal_connect(GTK_STATUS_ICON (trayicon), "activate", GTK_SIGNAL_FUNC (about), NULL); g_signal_connect(GTK_STATUS_ICON (trayicon), "popup-menu", GTK_SIGNAL_FUNC (trayIconPopup), trayicon_menu); }
/*创建系统托盘*/ void create_tray(GtkWidget *win) { GtkStatusIcon *tray; GtkWidget *menu; GtkWidget *item; tray=gtk_status_icon_new_from_file("img/64x64/gtk_goagent.png"); gtk_status_icon_set_tooltip_text(tray,"Gtk GoAgent"); /*设置系统托盘可见*/ gtk_status_icon_set_visible(tray,TRUE); g_signal_connect(G_OBJECT(tray),"activate",G_CALLBACK(tray_on_click),win); menu=gtk_menu_new(); item=gtk_menu_item_new_with_mnemonic(_("_Show")); gtk_menu_shell_append(GTK_MENU_SHELL(menu),item); g_signal_connect(G_OBJECT(item),"activate",G_CALLBACK(tray_on_click),win); item=gtk_menu_item_new_with_mnemonic(_("H_ide")); gtk_menu_shell_append(GTK_MENU_SHELL(menu),item); g_signal_connect(G_OBJECT(item),"activate",G_CALLBACK(hide_win),win); item=gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT,NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu),item); g_signal_connect(G_OBJECT(item),"activate",G_CALLBACK(really_quit),NULL); gtk_widget_show_all(menu); g_signal_connect(G_OBJECT(tray),"popup_menu",G_CALLBACK(tray_on_menu),menu); g_signal_connect(G_OBJECT(win),"window_state_event",G_CALLBACK(hide_window),tray); }
/* Battery levels: 0 .. 10 empty 10 .. 20 0 20 .. 40 1 40 .. 60 2 60 .. 80 3 80 .. 100 4 100 5 */ void update_status_icon(int level, BATT_STATUS status) { gchar *icon; static int old_level=-1; static BATT_STATUS old_status=BATT_NORMAL; if(level==old_level && status==old_status) return; old_level=level; old_status=status; if(level<10 && status==BATT_NORMAL){ icon=g_strdup("_empty"); }else if(level==100){ icon=g_strdup("_5"); }else if(status==BATT_CHARGING){ icon=g_strdup_printf("_ch_%d",level/20); }else{ icon=g_strdup_printf("_%d",level/20); } gchar *path=g_strdup_printf("%sbatt%s.png",ICONS_PATH,icon); if(!status_icon_batt_meter) status_icon_batt_meter=gtk_status_icon_new_from_file(ICONS_PATH "network-strength-none.png"); else gtk_status_icon_set_from_file(status_icon_batt_meter,path); gchar *tip=g_strdup_printf("%d%%",level); gtk_status_icon_set_tooltip_text(status_icon_batt_meter,tip); g_free(tip); g_free(path); g_free(icon); }
void tray_enable(void) { prof_tray = gtk_status_icon_new_from_file(icon_filename->str); shutting_down = FALSE; _tray_change_icon(NULL); int interval = prefs_get_tray_timer() * 1000; timer = g_timeout_add(interval, _tray_change_icon, NULL); }
static void ui_create_status_icon(KIM * im) { GtkStatusIcon *trayIcon; trayIcon = gtk_status_icon_new_from_file("/home/auv/right.png"); gtk_status_icon_set_visible(trayIcon, TRUE); gtk_status_icon_set_blinking(trayIcon, TRUE); gtk_status_icon_set_tooltip(trayIcon, "auv is a good v!"); g_signal_connect(trayIcon, "popup-menu", G_CALLBACK(status_icon_popup_menu_cb), NULL); }
static void shoes_native_systray_old(char *title, char *message, char *path) { if (stsicon == NULL) { stsicon = gtk_status_icon_new_from_file(path); stspath = path; } // detect change of icon if (strcmp(path, stspath)) { stspath = path; gtk_status_icon_set_from_file (stsicon, stspath); } gtk_status_icon_set_title(stsicon, title); gtk_status_icon_set_tooltip_text(stsicon, message); }
void NotifyInit() { strcpy(icon_n,RDir); strcat(icon_n,"/icon.png"); strcpy(icon_d,RDir); strcat(icon_d,"/icon_d.png"); strcpy(icon_c,RDir); strcat(icon_c,"/icon_c.png"); Notify=gtk_status_icon_new_from_file (icon_n); g_signal_connect (G_OBJECT(Notify), "activate", G_CALLBACK (NotifyActivate), NULL); g_signal_connect (G_OBJECT(Notify), "popup-menu", G_CALLBACK (NotifyPopup), NULL); }
int main(int argc, char *argv[]) { QwertickleGUI* gui = g_new0(QwertickleGUI, 1); gst_init(NULL, NULL); gtk_init(&argc, &argv); gui->statusicon = gtk_status_icon_new_from_file(DATADIR"/qwertickle.png"); gtk_status_icon_set_visible(gui->statusicon, TRUE); gui->mainmenu = GTK_MENU(gtk_menu_new()); gui->play = GTK_MENU_ITEM(gtk_menu_item_new()); gui->sep = GTK_SEPARATOR_MENU_ITEM(gtk_separator_menu_item_new()); gui->quit = GTK_IMAGE_MENU_ITEM(gtk_image_menu_item_new_from_stock("gtk-quit", NULL)); gui->about = GTK_IMAGE_MENU_ITEM(gtk_image_menu_item_new_from_stock("gtk-about", NULL)); gui->enable = GTK_CHECK_MENU_ITEM(gtk_check_menu_item_new_with_label("Enable")); gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->enable)); gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->about)); gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->sep)); gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->quit)); /* initialize widgets */ gtk_check_menu_item_set_active(gui->enable, TRUE); /* connect signals */ g_signal_connect(gui->statusicon, "popup-menu", G_CALLBACK(on_menu_pop), gui); g_signal_connect(gui->enable, "toggled", G_CALLBACK(on_enable_toggled), gui); g_signal_connect(gui->quit, "activate", G_CALLBACK(on_quit_activate), gui); g_signal_connect(gui->about, "activate", G_CALLBACK(on_about_activate), gui); g_signal_connect(gui->play, "activate", G_CALLBACK(on_play_activate), NULL); gtk_widget_show_all(GTK_WIDGET(gui->mainmenu)); /* Fix freezing bug? close stdout and stdin so Xorg won't have to process * the input to stdout when program exit*/ close(0); close(1); pthread_create(&thread, NULL, intercept_key_thread, gui->play); gtk_main(); return 0; }
int main(int argc, char **argv) { bindtextdomain("tray_eject", LOCALE_DIR); textdomain("tray_eject"); gtk_init(&argc, &argv); count = 0; dev = g_hash_table_new_full(g_str_hash, g_str_equal, key_destroy, value_destroy); icon = (GtkStatusIcon *) gtk_status_icon_new_from_file(ICON_PATH "dev1.png"); update_status(); menu = gtk_menu_new(); item = gtk_menu_item_new_with_label(_("Safely remove all")); gtk_widget_show(item); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(eject), NULL); sep = gtk_separator_menu_item_new(); gtk_widget_show(sep); gtk_menu_shell_append(GTK_MENU_SHELL(menu), sep); g_signal_connect(G_OBJECT(icon), "popup-menu", G_CALLBACK(popup), NULL); if (init_hal() < 0) return 1; dialog = gtk_dialog_new_with_buttons("Error", NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, NULL); gtk_window_set_icon_from_file(GTK_WINDOW(dialog), ICON_PATH "error.png", NULL); msg = gtk_label_new(_("Unable to unmount this device. Some\napplication is likely to be using it.\nPlease close the offending application\nand try again.")); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), msg, TRUE, TRUE, 10); gtk_widget_show(msg); gtk_main(); return 0; }
static GtkStatusIcon *si_create(void) { GtkStatusIcon *icon; GtkIconTheme *theme; theme = gtk_icon_theme_get_default(); if (gtk_icon_theme_has_icon(theme, "audacious-panel")) icon = gtk_status_icon_new_from_icon_name("audacious-panel"); else if (gtk_icon_theme_has_icon(theme, "audacious")) icon = gtk_status_icon_new_from_icon_name("audacious"); else { gchar * path = g_strdup_printf ("%s/images/audacious.png", aud_get_path (AUD_PATH_DATA_DIR)); icon = gtk_status_icon_new_from_file (path); g_free (path); } return icon; }
int main(int argc, char **argv) { bindtextdomain("tray_randr", LOCALE_DIR); textdomain("tray_randr"); gtk_init(&argc, &argv); icon = (GtkStatusIcon *) gtk_status_icon_new_from_file(ICON_PATH "randr.png"); menu = gtk_menu_new(); newitem(&item_swext, _("Switch to external display"), CMD_SWEXT); newitem(&item_swint, _("Switch to built-in display"), CMD_SWINT); newitem(&item_clone, _("Use both displays"), CMD_CLONE); sep = gtk_separator_menu_item_new(); gtk_widget_show(sep); gtk_menu_shell_append(GTK_MENU_SHELL(menu), sep); newitem(&item_ext1024, _("Set ext. resolution to 1024x768"), CMD_1024); newitem(&item_ext800, _("Set ext. resolution to 800x600"), CMD_800); newitem(&item_ext640, _("Set ext. resolution to 640x480"), CMD_640); g_signal_connect(G_OBJECT(icon), "popup-menu", G_CALLBACK(popup), NULL); sep = gtk_separator_menu_item_new(); gtk_widget_show(sep); gtk_menu_shell_append(GTK_MENU_SHELL(menu), sep); item_quit = gtk_menu_item_new_with_label(_("Quit")); gtk_widget_show(item_quit); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item_quit); g_signal_connect(G_OBJECT(item_quit), "activate", G_CALLBACK(quit), NULL); gtk_main(); return 0; }
void load_tray_icon_win32() { dbg("load_tray_icon_win32\n"); #if WIN32 // when login, creating icon too early may cause block in gtk_status_icon_new_from_file if (win32_tray_disabled /* || !gcin_status_tray */) return; #endif // dbg("load_tray_icon_win32\n"); #if UNIX char *tip; tip=""; #else wchar_t *tip; tip=L""; #endif char *iconame="en-tsin.png"; char tt[32]; strcpy(tt, iconame); if (!current_CS || current_CS->im_state == GCIN_STATE_DISABLED||current_CS->im_state == GCIN_STATE_ENG_FULL) { iconame=capslock_on?"en-gcin-A.png":GCIN_TRAY_PNG; } else { iconame=inmd[current_CS->in_method].icon; } // dbg("caps %d %s\n", capslock_on, iconame); // dbg("tsin_pho_mode() %d\n", tsin_pho_mode()); gboolean is_tsin = current_method_type()==method_type_TSIN; if (current_CS && current_CS->im_state == GCIN_STATE_CHINESE && !tsin_pho_mode()) { if ((is_tsin || current_method_type()==method_type_MODULE)) { strcpy(tt, "en-"); strcat(tt, iconame); if (capslock_on && is_tsin) strcpy(tt, "en-tsin-A.png"); } else { if (current_method_type()==method_type_GTAB) { strcpy(tt, capslock_on?"en-gtab-A.png":"en-gtab.png"); } } iconame = tt; } dbg("iconame %s\n", iconame); char fname[128]; fname[0]=0; if (iconame) get_icon_path(iconame, fname); char *icon_st=NULL; char fname_state[128]; // dbg("%d %d\n",current_CS->im_state,current_CS->b_half_full_char); if (current_CS && (current_CS->im_state == GCIN_STATE_ENG_FULL || current_CS->im_state != GCIN_STATE_DISABLED && current_CS->b_half_full_char || current_method_type()==method_type_TSIN && tss.tsin_half_full)) { if (gb_output) { icon_st="full-simp.png"; tip = _L("全形/簡體輸出"); } else { icon_st="full-trad.png"; tip = _L("全形/正體輸出"); } } else { if (gb_output) { icon_st="half-simp.png"; tip= _L("半形/簡體輸出"); } else { icon_st="half-trad.png"; tip = _L("半形/正體輸出"); } } get_icon_path(icon_st, fname_state); // dbg("wwwwwwww %s\n", fname_state); if (gcin_status_win) disp_win_screen_status(fname, fname_state); if (!gcin_status_tray) return; #if UNIX if (gcin_win32_icon==GCIN_TRAY_UNIX) return; #endif if (icon_main) { // dbg("set %s %s\n", fname, fname_state); gtk_status_icon_set_from_file(icon_main, fname); gtk_status_icon_set_from_file(icon_state, fname_state); } else { // dbg("gtk_status_icon_new_from_file a\n"); icon_main = gtk_status_icon_new_from_file(fname); g_signal_connect(G_OBJECT(icon_main),"activate", G_CALLBACK (cb_activate), NULL); g_signal_connect(G_OBJECT(icon_main),"popup-menu", G_CALLBACK (cb_popup), NULL); // dbg("gtk_status_icon_new_from_file %s b\n", fname_state); icon_state = gtk_status_icon_new_from_file(fname_state); g_signal_connect(G_OBJECT(icon_state),"activate", G_CALLBACK (cb_activate_state), NULL); g_signal_connect(G_OBJECT(icon_state),"popup-menu", G_CALLBACK (cb_popup_state), NULL); // dbg("icon %s %s\n", fname, fname_state); } #if GTK_CHECK_VERSION(2,16,0) if (icon_state) gtk_status_icon_set_tooltip_text(icon_state, _(tip)); #endif if (icon_main) { char tt[64]; if (current_CS && inmd[current_CS->in_method].cname && inmd[current_CS->in_method].cname[0]) { dbg("cname %s\n", inmd[current_CS->in_method].cname); strcpy(tt, inmd[current_CS->in_method].cname); } if (!iconame || !strcmp(iconame, GCIN_TRAY_PNG) || !tsin_pho_mode()) strcpy(tt, "English"); #if GTK_CHECK_VERSION(2,16,0) gtk_status_icon_set_tooltip_text(icon_main, tt); #endif } return; }
int main(int argc, char **argv) { int o; char *name = "Master"; char *iname = "Capture"; int showinput = 0; bindtextdomain("tray_mixer", LOCALE_DIR); textdomain("tray_mixer"); while ((o = getopt(argc, argv, "e:Ii:")) >= 0) { switch (o) { case 'e': name = optarg; break; case 'i': iname = optarg; /* fall through */ case 'I': showinput = 1; break; } } gtk_init(&argc, &argv); mixer_init(name, iname); icon = gtk_status_icon_new_from_file(ICON_PATH "speaker.png"); g_signal_connect(G_OBJECT(icon), "activate", G_CALLBACK(click), NULL); item = gtk_menu_item_new_with_label(_("Quit")); menu = gtk_menu_new(); gtk_widget_show(item); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); g_signal_connect(G_OBJECT(icon), "popup-menu", G_CALLBACK(popup), NULL); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(quit), NULL); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_decorated(GTK_WINDOW(window), FALSE); gtk_container_set_border_width(GTK_CONTAINER(window), 10); gtk_window_set_skip_taskbar_hint(GTK_WINDOW(window), TRUE); gtk_window_set_skip_pager_hint(GTK_WINDOW(window), TRUE); gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_default_size(GTK_WINDOW(window), 60, 140); hbox = gtk_hbox_new(TRUE, 5); gtk_container_add(GTK_CONTAINER(window), hbox); add_channel(&ch[0]); if (showinput) add_channel(&ch[1]); gtk_status_icon_set_visible(GTK_STATUS_ICON(icon), TRUE); gtk_main(); return 0; }
int main(int argc, char *argv[]) { DBusError error; /* Initialize translation stuff */ setlocale(LC_ALL, ""); bindtextdomain("kerneloops", "/usr/share/locale"); textdomain("kerneloops"); gtk_init(&argc, &argv); /* read the config file early; we may be able to bug out of stuff */ read_config(); /* * initialize the dbus connection; we want to listen to the system * bus (which is where all daemons send their messages */ dbus_error_init(&error); bus = dbus_bus_get(DBUS_BUS_SYSTEM, &error); if (bus == NULL) { g_printerr(_("Connecting to system bus failed: %s\n"), error.message); dbus_error_free(&error); exit(EXIT_FAILURE); } /* hook dbus into the main loop */ dbus_connection_setup_with_g_main(bus, NULL); statusicon = gtk_status_icon_new_from_file("/usr/share/kerneloops/icon.png"); gtk_status_icon_set_tooltip(statusicon, _("kerneloops client")); notify_init("kerneloops-ui"); /* by default, don't show our icon */ gtk_status_icon_set_visible(statusicon, FALSE); /* set the dbus message to listen for */ dbus_bus_add_match(bus, "type='signal',interface='org.kerneloops.submit.permission'", &error); dbus_bus_add_match(bus, "type='signal',interface='org.kerneloops.submit.sent'", &error); dbus_bus_add_match(bus, "type='signal',interface='org.kerneloops.submit.url'", &error); dbus_connection_add_filter(bus, dbus_gotmessage, NULL, NULL); /* * if the user said always/never in the config file, let the daemon * know right away */ if (user_preference < 0) send_permission("never"); if (user_preference > 0) send_permission("always"); /* send a ping to the userspace daemon to see if it has pending oopses */ trigger_daemon(); gtk_main(); close_notification(); return 0; }
void load_tray_icon_double() { if (!hime_status_tray) return; if (hime_tray_display != HIME_TRAY_DISPLAY_DOUBLE) return; #if WIN32 // when login, creating icon too early may cause block in gtk_status_icon_new_from_file if (win32_tray_disabled) return; #endif destroy_other_tray(); // dbg("load_tray_icon_win32\n"); #if UNIX char *tip; tip=""; #else wchar_t *tip; tip=L""; #endif char *iconame; if (!current_CS || current_CS->im_state == HIME_STATE_DISABLED||current_CS->im_state == HIME_STATE_ENG_FULL) { iconame=HIME_TRAY_PNG; } else { iconame=inmd[current_CS->in_method].icon; } // dbg("tsin_pho_mode() %d\n", tsin_pho_mode()); char tt[32]; if (current_CS && current_CS->im_state == HIME_STATE_CHINESE && !tsin_pho_mode()) { if ((current_method_type()==method_type_TSIN || current_method_type()==method_type_MODULE)) { strcpy(tt, "en-"); strcat(tt, iconame); } else { strcpy(tt, "en-tsin.png"); } iconame = tt; } // dbg("iconame %s\n", iconame); char fname[128]; fname[0]=0; if (iconame) get_icon_path(iconame, fname); char *icon_st=NULL; char fname_state[128]; // dbg("%d %d\n",current_CS->im_state,current_CS->b_half_full_char); if (current_CS && (current_CS->im_state == HIME_STATE_ENG_FULL || (current_CS->im_state != HIME_STATE_DISABLED && current_CS->b_half_full_char) || (current_method_type()==method_type_TSIN && tss.tsin_half_full))) { if (gb_output) { icon_st="full-simp.png"; tip = _("全形/簡體輸出"); } else { icon_st="full-trad.png"; tip = _("全形/正體輸出"); } } else { if (gb_output) { icon_st="half-simp.png"; tip= _("半形/簡體輸出"); } else { icon_st="half-trad.png"; tip = _("半形/正體輸出"); } } get_icon_path(icon_st, fname_state); // dbg("wwwwwwww %s\n", fname_state); if (icon_main) { // dbg("set %s %s\n", fname, fname_state); gtk_status_icon_set_from_file(icon_main, fname); gtk_status_icon_set_from_file(icon_state, fname_state); } else { // dbg("gtk_status_icon_new_from_file a\n"); icon_main = gtk_status_icon_new_from_file(fname); g_signal_connect(G_OBJECT(icon_main),"activate", G_CALLBACK (cb_activate), NULL); g_signal_connect(G_OBJECT(icon_main),"popup-menu", G_CALLBACK (cb_popup), NULL); // dbg("gtk_status_icon_new_from_file %s b\n", fname_state); icon_state = gtk_status_icon_new_from_file(fname_state); g_signal_connect(G_OBJECT(icon_state),"activate", G_CALLBACK (cb_activate_state), NULL); g_signal_connect(G_OBJECT(icon_state),"popup-menu", G_CALLBACK (cb_popup_state), NULL); // dbg("icon %s %s\n", fname, fname_state); } #if GTK_CHECK_VERSION(2,16,0) if (icon_state) gtk_status_icon_set_tooltip_text(icon_state, _(tip)); #endif if (icon_main) { char tt[64]; if (current_CS && inmd[current_CS->in_method].cname[0]) strcpy(tt, inmd[current_CS->in_method].cname); if (!iconame || !strcmp(iconame, HIME_TRAY_PNG) || !tsin_pho_mode()) strcpy(tt, "English"); #if GTK_CHECK_VERSION(2,16,0) gtk_status_icon_set_tooltip_text(icon_main, tt); #endif } return; }
/* * Function: init_interface * * Creates the GUI according to 'arguments' structure. */ void init_interface(app_elems * interface, args * arguments, int source) { interface->askedforkill = FALSE; GdkPixbuf *pixbuf; GError *error = NULL; int i, size = 10; /* Heading label text (sub-program command line) */ for (i = 0; arguments->program[i] != NULL; i++) { size += strlen(arguments->program[i]) + 1; } char command[size]; command[0] = '\0'; for (i = 0; arguments->program[i] != NULL; i++) { strcat(command, arguments->program[i]); strncat(command, " ", size); } /* Main window */ interface->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(interface->window), arguments->title); gtk_window_set_default_size(GTK_WINDOW(interface->window), arguments->width, arguments->height); gtk_container_set_border_width(GTK_CONTAINER(interface->window), 10); g_signal_connect(G_OBJECT(interface->window), "destroy", G_CALLBACK(cb_close_or_reduce), interface); /* Notification icon */ interface->icon = gtk_status_icon_new_from_file(arguments->iconpath); pixbuf = gdk_pixbuf_new_from_file(arguments->iconpath, &error); if (pixbuf == NULL) { fprintf(stderr, _("Can't find specified icon\n")); } else { gtk_window_set_icon(GTK_WINDOW(interface->window), pixbuf); } gtk_status_icon_set_tooltip_text(GTK_STATUS_ICON(interface->icon), arguments->tooltip); gtk_status_icon_set_visible(GTK_STATUS_ICON(interface->icon), TRUE); g_signal_connect(GTK_STATUS_ICON(interface->icon), "activate", G_CALLBACK(cb_toggle_display), interface); /* Body */ /* To compile with GTK+2.0, replace by: GtkWidget *vb1 = gtk_vbox_new(FALSE, VPADDING); GtkWidget *hb1 = gtk_hbox_new(FALSE, HPADDING); */ GtkWidget *vb1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, VPADDING); GtkWidget *hb1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, HPADDING); /* Quit button */ GtkWidget *b1 = gtk_button_new_with_mnemonic(_("_Hide")); gtk_button_set_image(GTK_BUTTON(b1), gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_BUTTON)); g_signal_connect(G_OBJECT(b1), "clicked", G_CALLBACK(cb_close_or_reduce), interface); interface->quitbutton = b1; /* Kill button */ GtkWidget *b2 = gtk_button_new_with_mnemonic(_("_Stop (SIGINT)")); gtk_button_set_image(GTK_BUTTON(b2), gtk_image_new_from_stock(GTK_STOCK_STOP, GTK_ICON_SIZE_BUTTON)); g_signal_connect(G_OBJECT(b2), "clicked", G_CALLBACK(cb_kill_child), interface); interface->killbutton = b2; //STDOUT & STDERR Scrolling TextView GtkWidget *stdout_child = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(stdout_child), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(stdout_child), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(stdout_child), GTK_WRAP_CHAR); gtk_widget_modify_font(stdout_child, pango_font_description_from_string ("monospace")); add_textview_refresher(GTK_TEXT_VIEW(stdout_child), source); GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll), GTK_SHADOW_IN); gtk_container_add(GTK_CONTAINER(scroll), stdout_child); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); /* Heading label */ GtkWidget *command_line = gtk_label_new(command); gtk_label_set_line_wrap(GTK_LABEL(command_line), TRUE); gtk_label_set_line_wrap_mode(GTK_LABEL(command_line), GTK_WRAP_CHAR); gtk_widget_modify_font(command_line, pango_font_description_from_string("bold")); /* Line break checkbox */ GtkWidget *ch1 = gtk_check_button_new_with_mnemonic(_("_Line breaks")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ch1), TRUE); g_signal_connect(G_OBJECT(ch1), "toggled", G_CALLBACK(cb_toggle_line_break), stdout_child); /* Link all widgets together */ gtk_box_pack_end(GTK_BOX(hb1), b1, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hb1), b2, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hb1), ch1, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vb1), command_line, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vb1), scroll, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vb1), hb1, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(interface->window), vb1); }