Beispiel #1
0
/*
 * 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;
}
Beispiel #2
0
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;
} 
Beispiel #3
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);
}
Beispiel #4
0
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);

}
Beispiel #5
0
/*创建系统托盘*/
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);
}
Beispiel #6
0
/*
 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);
}
Beispiel #7
0
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);
}
Beispiel #8
0
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);
}
Beispiel #9
0
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);
}
Beispiel #10
0
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);
}
Beispiel #11
0
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;
}
Beispiel #12
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;
}
Beispiel #13
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;
}
Beispiel #14
0
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;
}
Beispiel #15
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;
}
Beispiel #16
0
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;
}
Beispiel #17
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;
}
Beispiel #18
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;
}
Beispiel #19
0
/*
 * 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);
}