示例#1
0
文件: main.c 项目: tsmetana/majacd
int main(int argc, char **argv)
{
	gchar *backend = NULL;
	gchar *backend_opt = NULL;
	gchar *majacd_app = NULL;
	GOptionEntry entries[] =
	{
		{"backend", 'b', 0, G_OPTION_ARG_STRING, &backend_opt,
			"Path to majacd application", "<path>"},
		{NULL}
	};
	GError *err = NULL;
	GOptionContext *context;
	GtkWidget *err_dialog;

	context = g_option_context_new("- system tray icon to "
			"control the majacd application");
	g_option_context_add_group(context, gtk_get_option_group(TRUE));
	g_option_context_add_main_entries(context, entries, NULL);
	g_option_context_parse(context, &argc, &argv, &err);
	g_option_context_free(context);

	if (backend_opt)
	{
		backend = g_strdup(backend_opt);
	}
	else
	{
		backend = g_strdup(MAJACD_APP);
	}

	gtk_init(&argc, &argv);
	if (!(majacd_app = g_find_program_in_path(backend)))
	{
		err_dialog = gtk_message_dialog_new(NULL,
				GTK_DIALOG_MODAL,
				GTK_MESSAGE_ERROR,
				GTK_BUTTONS_CLOSE,
				"Could not locate the majacd application");
		gtk_window_set_title(GTK_WINDOW(err_dialog), "Error");
		gtk_dialog_run(GTK_DIALOG(err_dialog));
		gtk_widget_destroy(err_dialog);
		g_error("Could not locate the majacd application\n");
		/* NOT REACHED */
		return EXIT_FAILURE;
	}
	if (backend_ctl_command(CMD_INIT, (gpointer) majacd_app) < 0)
	{
		g_error("Error starting %s", majacd_app);
	}
	main_window_create();
	main_window_hide();
	tray_icon_create();
	gtk_main();

	g_free(backend);
	g_free(majacd_app);
	
	return EXIT_SUCCESS;
}
示例#2
0
GtkWidget *
mca_info_panel_init (MCAInfoPanel *g_ipnl, cmd_callback_t exec_ipnl_event,
		     status_callback_t proc_status)
{
  GtkWidget *panel, *event_box;
  
  ipnl = g_ipnl;
  ipnl->notify_timeout = 15;
  ipnl->wnd_exit = exit_wnd_create(ipnl);
  ipnl->wnd_help = help_wnd_create(ipnl);
  ipnl->event_cb = exec_ipnl_event;
  ipnl->status_cb = proc_status;
	//ipnl->tray_icon = init_status_icon(ipnl);
	ipnl->tray_icon = tray_icon_create(ipnl);
	ipnl->is_wnd_help_up = FALSE;
	ipnl->is_wnd_exit_up = FALSE;
	ipnl->is_wnd_panel_up = FALSE;

  panel = info_panel_internal_create(ipnl);
  /*if (!info_panel_menu_init(panel)){
    g_print("Unable to init menu\n");
		}*/
  event_box = gtk_event_box_new ();
  //gtk_container_add (GTK_CONTAINER (event_box), image);
  /*  g_signal_connect (G_OBJECT (event_box), 
		    "button_press_event",
		    G_CALLBACK (info_panel_on_button_press),
		    panel);
  */
  gtk_widget_reparent(GTK_WIDGET(panel), GTK_WIDGET(event_box));

	ipnl->wnd_ipnl = mca_info_panel_host(event_box);

  return event_box;
}