コード例 #1
0
ファイル: eggdesktopfile.c プロジェクト: 4eremuxa/evince
static void
egg_set_desktop_file_internal (const char *desktop_file_path,
                               gboolean set_defaults)
{
  GError *error = NULL;

  G_LOCK (egg_desktop_file);
  if (egg_desktop_file)
    egg_desktop_file_free (egg_desktop_file);

  egg_desktop_file = egg_desktop_file_new (desktop_file_path, &error);
  if (error)
    {
      g_warning ("Could not load desktop file '%s': %s",
		 desktop_file_path, error->message);
      g_error_free (error);
    }

  if (set_defaults && egg_desktop_file != NULL) {
    /* Set localized application name and default window icon */
    if (egg_desktop_file->name)
      g_set_application_name (egg_desktop_file->name);
    if (egg_desktop_file->icon)
      {
        if (g_path_is_absolute (egg_desktop_file->icon))
          gtk_window_set_default_icon_from_file (egg_desktop_file->icon, NULL);
        else
          gtk_window_set_default_icon_name (egg_desktop_file->icon);
      }
  }

  G_UNLOCK (egg_desktop_file);
}
コード例 #2
0
ファイル: main.c プロジェクト: wazari972/Grisbi
/**
 * charge le fichier de configuration et initialise les variabes.
 *
 *
 *
 * */
gboolean gsb_grisbi_init_app ( void )
{
    gboolean first_use = FALSE;
    gchar *string;

#ifdef HAVE_PLUGINS
    gsb_plugins_scan_dir ( gsb_dirs_get_plugins_dir ( ) );
#endif

    /* create the icon of grisbi (set in the panel of gnome or other) */
    string = g_build_filename ( gsb_dirs_get_pixmaps_dir ( ), "grisbi-logo.png", NULL );
    if ( g_file_test ( string, G_FILE_TEST_EXISTS ) )
        gtk_window_set_default_icon_from_file ( string, NULL );
    g_free (string);

    /* initialisation of the variables */
    gsb_color_initialise_couleurs_par_defaut ( );
    init_variables ();
    register_import_formats ();

    /* firt use ? */
    if ( ! gsb_file_config_load_config () )
        first_use = TRUE;

    return first_use;
}
コード例 #3
0
/**************************************************************** MAIN WINDOW */
static void
bmd_activate (GtkApplication *app, gpointer data)
{

	bmd_widgets *a = (bmd_widgets *) data;

	// create a window with title, default size and icons
	a->window = gtk_application_window_new (app);
	gtk_window_set_application (GTK_WINDOW (a->window), GTK_APPLICATION (app));
	gtk_window_set_position (GTK_WINDOW (a->window), GTK_WIN_POS_CENTER);
	gtk_window_set_title (GTK_WINDOW (a->window), "Book Management Demo");
	gtk_window_set_default_size (GTK_WINDOW (a->window), XSIZE, YSIZE);
	gtk_window_set_default_icon_from_file ("bmd_icon.png", NULL);
	a->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	gtk_container_add (GTK_CONTAINER (a->window), a->box);


	/* moved the creation of the menu to a dedicated function */
	bmd_construct_menu (app, (gpointer) a);
	a->paned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
	gtk_box_pack_start (GTK_BOX (a->box), a->paned, TRUE, TRUE, 0);
	bmd_construct_editablecells (app, (gpointer) a);
	bmd_construct_imagedemo (app, (gpointer) a);

	gtk_widget_show_all (GTK_WIDGET (a->window));
}
コード例 #4
0
ファイル: gui.c プロジェクト: samm-git/stoken
int main(int argc, char **argv)
{
	GtkWidget *window;
	char *cmd;

	gtk_init(&argc, &argv);
	gtk_window_set_default_icon_from_file(
		DATA_DIR "/pixmaps/stoken-gui.png", NULL);

	cmd = parse_cmdline(argc, argv, IS_GUI);

	/* check for a couple of error conditions */

	if (common_init(cmd))
		error_dialog("Application error",
			"Unable to initialize crypto library.");

	if (!current_token)
		error_dialog("Missing token",
			"Please use 'stoken import' to add a new seed.");

	if (securid_devid_required(current_token))
		error_dialog("Unsupported token",
			"Please use 'stoken' to handle tokens encrypted with a device ID.");

	/* check for token expiration */
	token_days_left = securid_check_exp(current_token, time(NULL));
	if (!opt_force && !opt_small) {
		if (token_days_left < 0)
			error_dialog("Token expired",
				"Please obtain a new token from your administrator.");

		if (token_days_left < EXP_WARN_DAYS) {
			char msg[BUFLEN];

			sprintf(msg, "This token will expire in %d day%s.",
				token_days_left,
				token_days_left == 1 ? "" : "s");
			warning_dialog(NULL, "Expiration warning", msg);
		}
	}

	/* request password / PIN, if missing */
	if (request_credentials(current_token) != ERR_NONE)
		return 1;

	token_interval = securid_token_interval(current_token);
	token_uses_pin = securid_pin_required(current_token);

	window = opt_small ? create_small_app_window() : create_app_window();

	update_tokencode(NULL);
	gtk_widget_show_all(window);

	g_timeout_add(250, update_tokencode, NULL);
	gtk_main();

	return 0;
}
コード例 #5
0
ファイル: main.c プロジェクト: IrleiNascimento/_C-Cpp_
void init_Calc(Calc_win *calc,GtkBuilder *builder) {
    // passando os objetos do xml para a struct
    calc->janela = GTK_WIDGET (gtk_builder_get_object(builder,"calcWin"));
    calc->button_0 =GTK_WIDGET (gtk_builder_get_object (builder, "button_0"));
    calc->button_1 =GTK_WIDGET (gtk_builder_get_object (builder, "button_1"));
    calc->button_2 =GTK_WIDGET (gtk_builder_get_object (builder, "button_2"));
    calc->button_3 =GTK_WIDGET (gtk_builder_get_object (builder, "button_3"));
    calc->button_4 =GTK_WIDGET (gtk_builder_get_object (builder, "button_4"));
    calc->button_5 =GTK_WIDGET (gtk_builder_get_object (builder, "button_5"));
    calc->button_6 =GTK_WIDGET (gtk_builder_get_object (builder, "button_6"));
    calc->button_7 =GTK_WIDGET (gtk_builder_get_object (builder, "button_7"));
    calc->button_8 =GTK_WIDGET (gtk_builder_get_object (builder, "button_8"));
    calc->button_9 =GTK_WIDGET (gtk_builder_get_object (builder, "button_9"));
    calc->button_div =GTK_WIDGET (gtk_builder_get_object (builder, "button_div"));
    calc->button_mult =GTK_WIDGET (gtk_builder_get_object (builder, "button_mult"));
    calc->button_sub =GTK_WIDGET (gtk_builder_get_object (builder, "button_sub"));
    calc->button_soma =GTK_WIDGET (gtk_builder_get_object (builder, "button_soma"));
    calc->button_mod =GTK_WIDGET (gtk_builder_get_object (builder, "button_mod"));
    calc->button_exp =GTK_WIDGET (gtk_builder_get_object (builder, "button_exp"));
    calc->button_ce =GTK_WIDGET (gtk_builder_get_object (builder, "button_ce"));
    calc->button_igual =GTK_WIDGET (gtk_builder_get_object (builder, "button_igual"));
    calc->button_vigula = GTK_WIDGET (gtk_builder_get_object (builder, "button_vigula"));
    calc->painel_resultado =GTK_WIDGET (gtk_builder_get_object (builder, "painel_resultado"));
    calc->fixed1 = GTK_WIDGET (gtk_builder_get_object (builder, "fixed1"));
    calc->painel_parcial = GTK_WIDGET (gtk_builder_get_object (builder, "painel_parcial"));
// declarando a tarefa de cada  botão
    g_signal_connect (G_OBJECT (calc->janela), "destroy", G_CALLBACK (gtk_main_quit),(gpointer)calc->janela);
    g_signal_connect (G_OBJECT (calc->button_0), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_1), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_2), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_3), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_4), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_5), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_6), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_7), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_8), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_9), "clicked", G_CALLBACK (inserir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_igual), "clicked", G_CALLBACK (resultado),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_ce), "clicked", G_CALLBACK (limpar),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_soma), "clicked", G_CALLBACK (soma),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_sub), "clicked", G_CALLBACK (subtrair),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_exp), "clicked", G_CALLBACK (expoente),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_div), "clicked", G_CALLBACK (dividir),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_mult), "clicked", G_CALLBACK (multiplicar),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_mod), "clicked", G_CALLBACK (oprMod),(gpointer)calc);
    g_signal_connect (G_OBJECT (calc->button_vigula), "clicked", G_CALLBACK (virgulaPress),(gpointer)calc);


GError *er;
    gtk_window_set_default_icon_from_file ("gnome-calculator.png",er); // icone do programa
    g_object_unref (G_OBJECT (builder));
    gtk_entry_set_text(GTK_ENTRY(calc->painel_resultado),"0");// iniciando painel com valor zero
}
コード例 #6
0
ファイル: gui-back-end.c プロジェクト: ejona86/quarry
static void
initialize_main_loop (void)
{
    GtpEngineList site_configuration_engines;

#if THREADS_SUPPORTED
    thread_events_queue = g_async_queue_new ();

    thread_events = g_source_new (&thread_events_functions, sizeof (GSource));
    g_source_set_callback (thread_events, thread_event_callback, NULL, NULL);
    g_source_attach (thread_events, NULL);
#endif

    quarry_stock_init ();

    user_real_name = g_get_real_name ();
    configuration_init (gtk_configuration_sections,
                        NUM_GTK_CONFIGURATION_SECTIONS);

    /* Try to read site configuration file.  Later,
     * configuration_write_to_file() will effectively copy all
     * site-default settings to user's configuration, with any changes
     * she has made.
     *
     * Site configuration file is meant for distributions, to
     * e.g. automatically register GNU Go with Quarry.
     */
    configuration_read_from_file (gtk_configuration_sections,
                                  NUM_GTK_CONFIGURATION_SECTIONS,
                                  PACKAGE_DATA_DIR "/quarry.cfg");

    gtp_engine_list_init (&site_configuration_engines);
    string_list_steal_items (&site_configuration_engines, &gtp_engines);

    configuration_file = g_build_path (G_DIR_SEPARATOR_S,
                                       g_get_home_dir (), ".quarry", NULL);
    configuration_read_from_file (gtk_configuration_sections,
                                  NUM_GTK_CONFIGURATION_SECTIONS,
                                  configuration_file);

    configuration_combine_string_lists (&gtp_engines,
                                        &site_configuration_engines,
                                        (G_STRUCT_OFFSET
                                         (GtpEngineListItem,
                                          site_configuration_name)));

    gtk_preferences_init ();

#if GTK_2_2_OR_LATER
    gtk_window_set_default_icon_from_file (DATA_DIR "/pixmaps/quarry.png", NULL);
#endif
}
コード例 #7
0
ファイル: ephy-web-app-utils.c プロジェクト: GNOME/epiphany
void
ephy_web_application_setup_from_profile_directory (const char *profile_directory)
{
  const char *program_name;
  const char *id;
  char *app_icon;
  char *desktop_basename;
  char *desktop_filename;
  GDesktopAppInfo *desktop_info;

  g_assert (profile_directory != NULL);

  program_name = ephy_web_application_get_program_name_from_profile_directory (profile_directory);
  if (!program_name)
    exit (1);

  g_set_prgname (program_name);

  id = get_app_id_from_program_name (program_name);
  if (!id)
    exit (1);

  /* Get display name from desktop file */
  desktop_basename = get_app_desktop_filename (id);
  desktop_filename = g_build_filename (profile_directory, desktop_basename, NULL);
  desktop_info = g_desktop_app_info_new_from_filename (desktop_filename);
  if (!desktop_info) {
    g_warning ("Required desktop file not present at %s", desktop_filename);
    exit (1);
  }
  g_set_application_name (g_app_info_get_name (G_APP_INFO (desktop_info)));

  app_icon = g_build_filename (profile_directory, EPHY_WEB_APP_ICON_NAME, NULL);
  gtk_window_set_default_icon_from_file (app_icon, NULL);

  /* We need to re-set this because we have already parsed the
   * options, which inits GTK+ and sets this as a side effect.
   */
  gdk_set_program_class (program_name);

  g_free (app_icon);
  g_free (desktop_basename);
  g_free (desktop_filename);
  g_object_unref (desktop_info);
}
コード例 #8
0
ファイル: main.c プロジェクト: cristiklein/gthumb
static void
gth_application_init (GthApplication *app)
{
#ifdef GDK_WINDOWING_X11

	GDesktopAppInfo *app_info;

	app_info = g_desktop_app_info_new ("gthumb.desktop");
	if (app_info == NULL)
		return;

	if (g_desktop_app_info_has_key (app_info, "Name")) {
		char *app_name;

		app_name = g_desktop_app_info_get_string (app_info, "Name");
		g_set_application_name (app_name);

		g_free (app_name);
	}

	if (g_desktop_app_info_has_key (app_info, "Icon")) {
		char *icon;

		icon = g_desktop_app_info_get_string (app_info, "Icon");
		if (g_path_is_absolute (icon))
			gtk_window_set_default_icon_from_file (icon, NULL);
		else
			gtk_window_set_default_icon_name (icon);

		g_free (icon);
	}

	g_object_unref (app_info);

#else

	/* manually set name and icon */

	g_set_application_name (_("gThumb"));
	gtk_window_set_default_icon_name ("gthumb");

#endif
}
コード例 #9
0
// app bmd_activate callback - creates the window
static void
bmd_activate (GtkApplication* app,
	      gpointer        user_data)
{
	GtkWidget *vbox;
	bmd_widgets *a = (bmd_widgets *) user_data;

	/* create window, etc */
	a->window = gtk_application_window_new (a->app);
	gtk_window_set_title (GTK_WINDOW (a->window), "Book Management");
	gtk_container_set_border_width (GTK_CONTAINER (a->window), 5);
	gtk_window_set_default_size (GTK_WINDOW (a->window), 800, 400);
	gtk_window_set_default_icon_from_file ("bmd_icon.png", NULL);

	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
	gtk_container_add (GTK_CONTAINER (a->window), vbox);

	/* moved the creation of the program to a dedicated function */
	construct_editablecells (app, GTK_WIDGET (vbox), (gpointer) a);

	gtk_widget_show_all (a->window);
}
コード例 #10
0
ファイル: gnome-ssh-askpass2.c プロジェクト: sokoow/openssh
int
main(int argc, char **argv)
{
    char *message;
    int result;

    gtk_init(&argc, &argv);

    gtk_window_set_default_icon_from_file ("/usr/share/pixmaps/ssh-askpass-gnome.png", NULL);

    if (argc > 1) {
        message = g_strjoinv(" ", argv + 1);
    } else {
        message = g_strdup("Enter your OpenSSH passphrase:");
    }

    setvbuf(stdout, 0, _IONBF, 0);
    result = passphrase_dialog(message);
    g_free(message);

    return (result);
}
コード例 #11
0
// app bmd_activate callback - creates the window
static void
bmd_activate (GtkApplication* app,
	      gpointer        user_data)
{
	GtkWidget *box;
	GtkWidget *hbox;
	GtkWidget *pbutton, *nbutton;
	bmd_widgets *a = (bmd_widgets *) user_data;

	// create the window and set a title
	a->window = gtk_application_window_new (a->app);
	gtk_window_set_title (GTK_WINDOW (a->window), "Demo");
	gtk_window_set_resizable (GTK_WINDOW (a->window), FALSE);
	gtk_window_set_default_icon_from_file ("bmd_icon.png", NULL);

	// create a grid to be used as layout container
	box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	gtk_container_add (GTK_CONTAINER (a->window), box);

	// create the inner horizontal box
	hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	gtk_box_pack_start (GTK_BOX (box), hbox, TRUE, TRUE, 0);

	// PREV button
	pbutton = gtk_button_new_with_mnemonic ("_Prev");
	gtk_box_pack_start (GTK_BOX (hbox), pbutton, TRUE, TRUE, 2);
	g_signal_connect (pbutton, "clicked", G_CALLBACK (bmd_prev_clicked), (gpointer) a);
	// NEXT button
	nbutton = gtk_button_new_with_mnemonic ("_Next");
	gtk_box_pack_start (GTK_BOX (hbox), nbutton, TRUE, TRUE, 2);
	g_signal_connect (nbutton, "clicked", G_CALLBACK (bmd_next_clicked), (gpointer) a);

	/* moved the creation of the program to a dedicated function */
	bmd_construct_imagedemo (app, GTK_WIDGET (box), (gpointer) a);

	gtk_widget_show_all (a->window);
}
コード例 #12
0
ファイル: ephy-web-app-utils.c プロジェクト: GNOME/epiphany
void
ephy_web_application_setup_from_desktop_file (GDesktopAppInfo *desktop_info)
{
  GAppInfo *app_info;
  const char *wm_class;
  GIcon *icon;

  g_assert (G_IS_DESKTOP_APP_INFO (desktop_info));

  app_info = G_APP_INFO (desktop_info);
  g_set_prgname (g_app_info_get_name (app_info));
  g_set_application_name (g_app_info_get_display_name (app_info));

  icon = g_app_info_get_icon (app_info);
  if (G_IS_FILE_ICON (icon)) {
    GFile *file = g_file_icon_get_file (G_FILE_ICON (icon));
    char *path = file ? g_file_get_path (file) : NULL;

    if (path) {
      gtk_window_set_default_icon_from_file (path, NULL);
      g_free (path);
    }
    g_clear_object (&file);
  } else if (G_IS_THEMED_ICON (icon)) {
    const char * const *names = g_themed_icon_get_names (G_THEMED_ICON (icon));
    if (names)
      gtk_window_set_default_icon_name (names[0]);
  }
  g_clear_object (&icon);

  /* We need to re-set this because we have already parsed the
   * options, which inits GTK+ and sets this as a side effect.
   */
  wm_class = g_desktop_app_info_get_startup_wm_class (desktop_info);
  if (wm_class)
    gdk_set_program_class (wm_class);
}
コード例 #13
0
ファイル: main.c プロジェクト: mahiso/JudoShiai
int main( int   argc,
          char *argv[] )
{
    /* GtkWidget is the storage type for widgets */
    GtkWidget *window;
    GtkWidget *menubar;
    time_t     now;
    struct tm *tm;
    GThread   *gth = NULL;         /* thread id */
    gboolean   run_flag = TRUE;   /* used as exit flag for threads */
    int i;

    putenv("UBUNTU_MENUPROXY=");

    //init_trees();

    gdk_color_parse("#FFFF00", &color_yellow);
    gdk_color_parse("#FFFFFF", &color_white);
    gdk_color_parse("#404040", &color_grey);
    gdk_color_parse("#00FF00", &color_green);
    gdk_color_parse("#007700", &color_darkgreen);
    gdk_color_parse("#0000FF", &color_blue);
    gdk_color_parse("#FF0000", &color_red);
    gdk_color_parse("#770000", &color_darkred);
    gdk_color_parse("#000000", &color_black);

    font = pango_font_description_from_string("Sans bold 12");

#ifdef WIN32
    installation_dir = g_win32_get_package_installation_directory_of_module(NULL);
#else
    gbr_init(NULL);
    installation_dir = gbr_find_prefix(NULL);
#endif

    program_path = argv[0];

    current_directory[0] = 0;

    if (current_directory[0] == 0)
        strcpy(current_directory, ".");

    conffile = g_build_filename(g_get_user_data_dir(), "judoproxy.ini", NULL);

    /* create video download dir */
    video_dir = g_build_filename(g_get_home_dir(), "rpivideos", NULL);
    g_print("Video dir = %s\n", video_dir);
    g_mkdir_with_parents(video_dir, 0755);

    keyfile = g_key_file_new();
    g_key_file_load_from_file(keyfile, conffile, 0, NULL);

    now = time(NULL);
    tm = localtime(&now);
    current_year = tm->tm_year+1900;
    srand(now); //srandom(now);
    my_address = now + getpid()*10000;

    gtk_init (&argc, &argv);

    main_window = window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(main_window), "JudoProxy");
    gtk_widget_set_size_request(window, FRAME_WIDTH, FRAME_HEIGHT);

    gchar *iconfile = g_build_filename(installation_dir, "etc", "judoproxy.png", NULL);
    gtk_window_set_default_icon_from_file(iconfile, NULL);
    g_free(iconfile);

    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);

    main_vbox = gtk_grid_new();
    gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 1);
    gtk_container_add (GTK_CONTAINER (window), main_vbox);
    gtk_widget_show(main_vbox);

    /* menubar */
    menubar = get_menubar_menu(window);
    gtk_widget_show(menubar);

    gtk_grid_attach(GTK_GRID(main_vbox), menubar, 0, 0, 1, 1);
    gtk_widget_set_hexpand(menubar, TRUE);

    /* judoka info */
    //name_box = gtk_label_new("?");
    //gtk_box_pack_start(GTK_BOX(main_vbox), name_box, FALSE, TRUE, 0);

    //GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
    //gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, TRUE, 0);

    notebook = gtk_notebook_new();
    gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE);
    gtk_widget_set_hexpand(notebook, TRUE);
    //gtk_widget_set_vexpand(notebook, TRUE);
    gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
    /*
    GtkWidget *camera_table = gtk_grid_new();
    gtk_grid_set_column_spacing(GTK_GRID(camera_table), 10);
    gtk_grid_set_row_spacing(GTK_GRID(camera_table), 10);
    */

    for (i = 0; i < NUM_TATAMIS; i++) {
        gchar buf[32];
        GtkWidget *data_table = gtk_grid_new();
        connections[i].scrolled_window = data_table;
        //connections[i].scrolled_window = gtk_scrolled_window_new(NULL, NULL);
        gtk_container_set_border_width(GTK_CONTAINER(connections[i].scrolled_window), 10);

        snprintf(buf, sizeof(buf), "T%d [--]", i+1);
        gtk_notebook_append_page(GTK_NOTEBOOK(notebook), connections[i].scrolled_window,
                                 gtk_label_new(buf));

        gtk_grid_attach(GTK_GRID(data_table), gtk_label_new(_("Camera")),    0, 0, 2, 1);
        gtk_grid_attach(GTK_GRID(data_table), gtk_label_new(_("JudoTimer")), 4, 0, 2, 1);

	GtkWidget *reload = gtk_button_new_with_label(_("Reload"));
        gtk_grid_attach(GTK_GRID(data_table), reload, 0, 1, 1, 1);

        connections[i].in_addr = gtk_entry_new();
        connections[i].out_addr = gtk_entry_new();
        gtk_entry_set_width_chars(GTK_ENTRY(connections[i].in_addr), 15);
        gtk_entry_set_width_chars(GTK_ENTRY(connections[i].out_addr), 15);
        gtk_grid_attach(GTK_GRID(data_table), connections[i].in_addr, 2, 0, 2, 1);
        gtk_grid_attach(GTK_GRID(data_table), connections[i].out_addr, 6, 0, 2, 1);
        gtk_grid_attach(GTK_GRID(data_table), gtk_label_new(" "), 0, 1, 1, 1);


        //gtk_container_add(GTK_CONTAINER(connections[i].scrolled_window), data_table);
        g_signal_connect (connections[i].out_addr, "activate",
                          G_CALLBACK(enter_callback),
                          gint_to_ptr(i));
        g_signal_connect (connections[i].in_addr, "activate",
                          G_CALLBACK(camera_ip_enter_callback),
                          gint_to_ptr(i));
#ifdef WEBKIT
        g_signal_connect (reload, "clicked",
                          G_CALLBACK(reload_web),
                          gint_to_ptr(i));
#else
        g_signal_connect (reload, "clicked",
                          G_CALLBACK(select_camera_video),
                          gint_to_ptr(i));
#endif
    }

    gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 0);
    gtk_grid_attach_next_to(GTK_GRID(main_vbox), notebook, NULL, GTK_POS_BOTTOM, 1, 1);

    progress_bar = gtk_progress_bar_new();
    gtk_grid_attach_next_to(GTK_GRID(main_vbox), progress_bar, NULL, GTK_POS_BOTTOM, 1, 1);

    GtkWidget *w = GTK_WIDGET(gtk_scrolled_window_new(NULL, NULL));
#ifdef WEBKIT
    web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
    webkit_web_view_set_transparent(web_view, TRUE);

    gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(web_view));
    gtk_widget_set_vexpand(GTK_WIDGET(web_view), TRUE);

    WebKitWebSettings *web_settings = webkit_web_settings_new();
    //g_object_set(G_OBJECT(web_settings), "enable-java-applet", FALSE, NULL);
    //g_object_set(G_OBJECT(web_settings), "enable-plugins", FALSE, NULL);
    webkit_web_view_set_settings(web_view, web_settings);

    gtk_grid_attach_next_to(GTK_GRID(main_vbox), GTK_WIDGET(w), NULL, GTK_POS_BOTTOM, 1, 1);
    gtk_widget_grab_focus(GTK_WIDGET(web_view));

    //webkit_web_view_load_uri(web_view, "http://www.hs.fi");
    webkit_web_view_load_uri(web_view, "http://www.quirksmode.org/html5/tests/video.html");

    g_signal_connect(web_view, "download-requested", G_CALLBACK(download_req), NULL);
    //g_signal_connect(web_view, "load-changed", G_CALLBACK(load_changed), NULL);
#else
    /* HTML page */
    html_page = create_html_page();
    gtk_grid_attach_next_to(GTK_GRID(main_vbox), GTK_WIDGET(html_page), NULL, GTK_POS_BOTTOM, 1, 1);

    /* Video display */
    camera_image = gtk_image_new();
    gtk_widget_set_size_request(GTK_WIDGET(camera_image), 640, 360);

    GtkWidget *event_box = gtk_event_box_new();
    gtk_container_add(GTK_CONTAINER(event_box), camera_image);

    gtk_widget_set_events(event_box, gtk_widget_get_events(event_box) |
                          GDK_BUTTON_PRESS_MASK |
                          GDK_BUTTON_RELEASE_MASK |
                          /*GDK_POINTER_MOTION_MASK |*/
                          GDK_POINTER_MOTION_HINT_MASK |
                          GDK_BUTTON_MOTION_MASK);

    g_signal_connect(G_OBJECT(event_box),
		     "button_press_event",
		     G_CALLBACK(button_press_callback),
		     camera_image);
    g_signal_connect(G_OBJECT(event_box),
		     "button_release_event",
		     G_CALLBACK(button_release_callback),
		     camera_image);
    g_signal_connect(G_OBJECT(event_box),
		     "motion-notify-event",
		     G_CALLBACK(button_notify_callback),
		     camera_image);

    gtk_widget_show(camera_image);
    gtk_container_add(GTK_CONTAINER(w), GTK_WIDGET(event_box));
    gtk_widget_set_vexpand(GTK_WIDGET(event_box), TRUE);
    gtk_widget_set_hexpand(GTK_WIDGET(event_box), TRUE);
    gtk_widget_set_vexpand(GTK_WIDGET(camera_image), TRUE);
    gtk_widget_set_hexpand(GTK_WIDGET(camera_image), TRUE);
    gtk_grid_attach_next_to(GTK_GRID(main_vbox), GTK_WIDGET(w), NULL, GTK_POS_BOTTOM, 1, 1);

#endif

    /* timers */

    timer = g_timer_new();

    gtk_widget_show_all(window);

    set_preferences();
    change_language(NULL, NULL, gint_to_ptr(language));

    open_comm_socket();
    scan_interfaces();

    /* Create a bg thread using glib */
    gpointer proxy_ssdp_thread(gpointer args);
    g_snprintf(ssdp_id, sizeof(ssdp_id), "JudoProxy");

    static gint run[NUM_CONNECTIONS];
    for (i = 0; i < NUM_CONNECTIONS; i++) {
	char tname[16];
	run[i] = i;
	sprintf(tname, "Connection%d", i);
	gth = g_thread_new(tname,
			   (GThreadFunc)connection_thread,
			   &run[i]);
    }

    gth = g_thread_new("SSDP",
                       (GThreadFunc)proxy_ssdp_thread,
                       (gpointer)&run_flag);

    gth = g_thread_new("CameraVideo",
		       camera_video,
		       (gpointer)&run_flag);
    gth = gth; // make compiler happy

    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);

    cursor = gdk_cursor_new(GDK_HAND2);
    //gdk_window_set_cursor(GTK_WIDGET(main_window)->window, cursor);

    //g_timeout_add(100, timeout_ask_for_data, NULL);
    g_timeout_add(1000, check_table, NULL);
    g_timeout_add(100, show_camera_video, NULL);
    //g_idle_add(show_camera_video, NULL);

    /* All GTK applications must have a gtk_main(). Control ends here
     * and waits for an event to occur (like a key press or
     * mouse event). */
    gtk_main();

    for (i = 0; i < NUM_CONNECTIONS; i++)
	run[i] = -1;
    run_flag = FALSE;     /* flag threads to stop and exit */
    //g_thread_join(gth);   /* wait for thread to exit */

    return 0;
}
コード例 #14
0
ファイル: gui.c プロジェクト: pcwalton/NetSurf
/**
 * Initialize GTK interface.
 */
static void gui_init(int argc, char** argv, char **respath)
{
	char buf[PATH_MAX];
	const char *addr = NETSURF_HOMEPAGE;
	char *resource_filename;

	/* check user options */
	check_options(respath);

	/* find the languages file */	
	languages_file_location = filepath_find(respath, "languages");
	if ((languages_file_location == NULL) || 
	    (strlen(languages_file_location) < 10)) {
		die("Unable to find resources.\n");		
	}

	/* Obtain resources path location. 
	 *
	 * Uses the directory the languages file was found in,
	 * @todo find and slaughter all references to this!
	 */
	res_dir_location = calloc(1, strlen(languages_file_location) - 8);
	memcpy(res_dir_location, 
	       languages_file_location, 
	       strlen(languages_file_location) - 9);
	LOG(("Using '%s' for resource path", res_dir_location));

	/* initialise the glade templates */
	nsgtk_init_glade(respath);

	/* set default icon if its available */
	resource_filename = filepath_find(respath, "netsurf.xpm");
	if (resource_filename != NULL) {
		gtk_window_set_default_icon_from_file(resource_filename, NULL);
		free(resource_filename);
	}

	/* Search engine sources */
	search_engines_file_location = filepath_find(respath, "SearchEngines");
	LOG(("Using '%s' as Search Engines file", search_engines_file_location));

	/* Default Icon */
	search_default_ico_location = filepath_find(respath, "default.ico");
	LOG(("Using '%s' as default search ico", search_default_ico_location));

	/* Default favicon */
	resource_filename = filepath_find(respath, "favicon.png");
	if (resource_filename != NULL) {
		favicon_pixbuf = gdk_pixbuf_new_from_file(resource_filename, NULL);
		free(resource_filename);
		if (favicon_pixbuf == NULL) {
			favicon_pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 16,16);
			
		}
	}

	/* Toolbar inicies file */
	toolbar_indices_file_location = filepath_find(respath, "toolbarIndices");
	LOG(("Using '%s' as custom toolbar settings file", toolbar_indices_file_location));

        /* load throbber images */
	if (nsgtk_throbber_init(respath, THROBBER_FRAMES) == false)
		die("Unable to load throbber image.\n");

	/* Initialise completions - cannot fail */
	nsgtk_completion_init();

	filepath_sfinddef(respath, buf, "mime.types", "/etc/");
	gtk_fetch_filetype_init(buf);

	urldb_load(nsoption_charp(url_file));
	urldb_load_cookies(nsoption_charp(cookie_file));

	/* The tree view system needs to know the screen's DPI, so we
	 * find that out here, rather than when we create a first browser
	 * window.
	 */

	nscss_screen_dpi = FLTTOFIX(gdk_screen_get_resolution(
					    gdk_screen_get_default()));
	LOG(("Set CSS DPI to %f", FIXTOFLT(nscss_screen_dpi)));

	if (nsgtk_history_init(glade_file_location->history) == false)
		die("Unable to initialise history window.\n");

	if (nsgtk_download_init(glade_file_location->downloads) == false)
		die("Unable to initialise download window.\n");

	if (nsgtk_cookies_init(glade_file_location->cookies) == false)
		die("Unable to initialise cookies window.\n");

	if (nsgtk_hotlist_init(glade_file_location->hotlist) == false)
		die("Unable to initialise hotlist window.\n");

	sslcert_init(tree_content_icon_name);

        if (nsoption_charp(homepage_url) != NULL) {
                addr = nsoption_charp(homepage_url);
	}

	if (2 <= argc)
		addr = argv[1];

        /* Last step of initialization. Opens the main browser window. */
	browser_window_create(addr, 0, 0, true, false);
}
コード例 #15
0
ファイル: gui.c プロジェクト: Alex-Sjoberg/Pioneers
GtkWidget *gui_build_interface(void)
{
	GtkWidget *vbox;
	GtkWidget *menubar;
	GtkActionGroup *action_group;
	GtkAccelGroup *accel_group;
	GError *error = NULL;
	gchar *icon_file;

	player_init();

	gmap = guimap_new();

	register_pixmaps();
	app_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	/* The name of the application */
	gtk_window_set_title(GTK_WINDOW(app_window), _("Pioneers"));

	vbox = gtk_vbox_new(FALSE, 0);
	gtk_widget_show(vbox);
	gtk_container_add(GTK_CONTAINER(app_window), vbox);

	action_group = gtk_action_group_new("MenuActions");
	gtk_action_group_set_translation_domain(action_group, PACKAGE);
	gtk_action_group_add_actions(action_group, entries,
				     G_N_ELEMENTS(entries), app_window);
	gtk_action_group_add_toggle_actions(action_group, toggle_entries,
					    G_N_ELEMENTS(toggle_entries),
					    app_window);

	ui_manager = gtk_ui_manager_new();
	gtk_ui_manager_insert_action_group(ui_manager, action_group, 0);

	accel_group = gtk_ui_manager_get_accel_group(ui_manager);
	gtk_window_add_accel_group(GTK_WINDOW(app_window), accel_group);

	error = NULL;
	if (!gtk_ui_manager_add_ui_from_string
	    (ui_manager, ui_description, -1, &error)) {
		g_message("building menus failed: %s", error->message);
		g_error_free(error);
		return NULL;
	}

	icon_file =
	    g_build_filename(DATADIR, "pixmaps", PIONEERS_ICON_FILE, NULL);
	if (g_file_test(icon_file, G_FILE_TEST_EXISTS)) {
		gtk_window_set_default_icon_from_file(icon_file, NULL);
	} else {
		/* Missing pixmap, main icon file */
		g_warning("Pixmap not found: %s", icon_file);
	}
	g_free(icon_file);

	color_chat_enabled =
	    config_get_int_with_default("settings/color_chat", TRUE);

	color_messages_enabled =
	    config_get_int_with_default("settings/color_messages", TRUE);
	log_set_func_message_color_enable(color_messages_enabled);

	set_color_summary(config_get_int_with_default
			  ("settings/color_summary", TRUE));

	set_silent_mode(config_get_int_with_default
			("settings/silent_mode", FALSE));
	set_announce_player(config_get_int_with_default
			    ("settings/announce_player", TRUE));

	legend_page_enabled =
	    config_get_int_with_default("settings/legend_page", FALSE);

	menubar = gtk_ui_manager_get_widget(ui_manager, "/MainMenu");
	gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
	toolbar = gtk_ui_manager_get_widget(ui_manager, "/MainToolbar");
	gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), build_main_interface(), TRUE,
			   TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), build_status_bar(), FALSE, FALSE,
			   0);

	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION
				     (gtk_ui_manager_get_action
				      (ui_manager,
				       "ui/MainMenu/SettingsMenu/ShowHideToolbar")),
				     config_get_int_with_default
				     ("settings/show_toolbar", TRUE));

	g_signal_connect(G_OBJECT(app_window), "key_press_event",
			 G_CALLBACK(hotkeys_handler), NULL);

	gtk_widget_show(app_window);

	frontend_gui_register_action(getAction(GUI_CONNECT), GUI_CONNECT);
	frontend_gui_register_action(getAction(GUI_DISCONNECT),
				     GUI_DISCONNECT);
#ifdef ADMIN_GTK
	/** @todo RC 2005-05-26 Admin interface: Not tested */
	frontend_gui_register_action(gtk_ui_manager_get_action
				     (manager,
				      "ui/MainMenu/GameMenu/GameAdmin"),
				     GUI_ADMIN);
#endif
	frontend_gui_register_action(getAction(GUI_CHANGE_NAME),
				     GUI_CHANGE_NAME);
	frontend_gui_register_action(getAction(GUI_ROLL), GUI_ROLL);
	frontend_gui_register_action(getAction(GUI_TRADE), GUI_TRADE);
	frontend_gui_register_action(getAction(GUI_UNDO), GUI_UNDO);
	frontend_gui_register_action(getAction(GUI_FINISH), GUI_FINISH);
	frontend_gui_register_action(getAction(GUI_ROAD), GUI_ROAD);
	frontend_gui_register_action(getAction(GUI_SHIP), GUI_SHIP);
	frontend_gui_register_action(getAction(GUI_MOVE_SHIP),
				     GUI_MOVE_SHIP);
	frontend_gui_register_action(getAction(GUI_BRIDGE), GUI_BRIDGE);
	frontend_gui_register_action(getAction(GUI_SETTLEMENT),
				     GUI_SETTLEMENT);
	frontend_gui_register_action(getAction(GUI_CITY), GUI_CITY);
	frontend_gui_register_action(getAction(GUI_BUY_DEVELOP),
				     GUI_BUY_DEVELOP);
	frontend_gui_register_action(getAction(GUI_CITY_WALL),
				     GUI_CITY_WALL);
#if 0
	frontend_gui_register_destroy(gtk_ui_manager_get_action
				      (manager, "GameQuit"), GUI_QUIT);
#endif

	gui_toolbar_show_button("BuildShip", FALSE);
	gui_toolbar_show_button("MoveShip", FALSE);
	gui_toolbar_show_button("BuildBridge", FALSE);

	gui_toolbar_show_accelerators(config_get_int_with_default
				      ("settings/toolbar_show_accelerators",
				       TRUE));

	gtk_ui_manager_ensure_update(ui_manager);
	gtk_widget_show(app_window);
	g_signal_connect(G_OBJECT(app_window), "delete_event",
			 G_CALLBACK(quit_cb), NULL);

	return app_window;
}
コード例 #16
0
ファイル: editor.c プロジェクト: jquick/pioneers
int main(int argc, char *argv[])
{
	gchar *filename;
	gboolean default_used;
	GtkWidget *notebook;
	GtkActionGroup *action_group;
	GtkUIManager *ui_manager;
	GtkWidget *vbox;
	GtkWidget *menubar;
	GtkAccelGroup *accel_group;
	GError *error = NULL;
	gchar *icon_file;
	GOptionContext *context;

	default_game = g_build_filename(get_pioneers_dir(), "default.game",
					NULL);

	/* Gtk+ handles the locale, we must bind the translations */
	setlocale(LC_ALL, "");
	bindtextdomain(PACKAGE, LOCALEDIR);
	textdomain(PACKAGE);
	bind_textdomain_codeset(PACKAGE, "UTF-8");

GtkOSXApplication *theApp = g_object_new(GTK_TYPE_OSX_APPLICATION, NULL);

	context =
	    /* Long description in the command line: --help */
	    g_option_context_new(_("- Editor for games of Pioneers"));
	g_option_context_add_main_entries(context, commandline_entries,
					  GETTEXT_PACKAGE);
	g_option_context_add_group(context, gtk_get_option_group(TRUE));
	g_option_context_parse(context, &argc, &argv, &error);
	if (error != NULL) {
		g_print("%s\n", error->message);
		g_error_free(error);
		return 1;
	}
	if (show_version) {
		g_print(_("Pioneers version:"));
		g_print(" ");
		g_print(FULL_VERSION);
		g_print("\n");
		return 0;
	}

	if (filenames != NULL)
		filename = g_strdup(filenames[0]);
	else
		filename = NULL;

	toplevel = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect(G_OBJECT(toplevel), "delete_event",
			 G_CALLBACK(exit_cb), NULL);

	action_group = gtk_action_group_new("MenuActions");
	gtk_action_group_set_translation_domain(action_group, PACKAGE);
	gtk_action_group_add_actions(action_group, entries,
				     G_N_ELEMENTS(entries), toplevel);

	ui_manager = gtk_ui_manager_new();
	gtk_ui_manager_insert_action_group(ui_manager, action_group, 0);

	accel_group = gtk_ui_manager_get_accel_group(ui_manager);
	gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_group);

	error = NULL;
	if (!gtk_ui_manager_add_ui_from_string(ui_manager, ui_description,
					       -1, &error)) {
		g_message(_("Building menus failed: %s"), error->message);
		g_error_free(error);
		return 1;
	}

	config_init("pioneers-editor");

	icon_file =
	    g_build_filename(g_get_user_runtime_dir(), "pixmaps", MAINICON_FILE, NULL);
	if (g_file_test(icon_file, G_FILE_TEST_EXISTS)) {
		gtk_window_set_default_icon_from_file(icon_file, NULL);
	} else {
		/* Missing pixmap, main icon file */
		g_warning("Pixmap not found: %s", icon_file);
	}
	g_free(icon_file);

	themes_init();
	colors_init();

	notebook = gtk_notebook_new();
	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);

	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), build_map(),
				 /* Tab page name */
				 gtk_label_new(_("Map")));

	gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
				 build_settings(GTK_WINDOW(toplevel)),
				 /* Tab page name */
				 gtk_label_new(_("Settings")));

	terrain_menu = build_terrain_menu();
	roll_menu = build_roll_menu();
	port_menu = build_port_menu();

	vbox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(toplevel), vbox);

	menubar = gtk_ui_manager_get_widget(ui_manager, "/MainMenu");
	gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);

	if (filename == NULL) {
		filename =
		    config_get_string("editor/last-game", &default_used);
		if (default_used
		    || !g_file_test(filename, G_FILE_TEST_EXISTS)) {
			g_free(filename);
			filename = NULL;
		}
	}

	load_game(filename, FALSE);
	g_free(filename);
	if (params == NULL)
		return 1;

	gtk_widget_show_all(toplevel);

	gtk_accel_map_load(g_getenv("ACCEL_MAP"));
	gtk_widget_hide (menubar);
	gtk_osxapplication_set_menu_bar(theApp, GTK_MENU_SHELL(menubar));
	gtk_osxapplication_ready(theApp);

	gtk_main();

	config_finish();
	guimap_delete(gmap);
	g_free(default_game);

	g_option_context_free(context);
	return 0;
}
コード例 #17
0
ファイル: capplet.c プロジェクト: iperry/roxterm
int main(int argc, char **argv)
{
    gboolean listen = FALSE;
    int n;
    const char *profile = NULL;
    const char *colour_scheme = NULL;
    char *logo_filename;
    gboolean persist = FALSE;
    gboolean open_configlet = FALSE;
    gboolean dbus_ok;
    GdkScreen *scrn;
    char *disp_name;

    g_set_application_name(_("roxterm-config"));

    global_options_init_appdir(argc, argv);

#if ENABLE_NLS
    setlocale(LC_ALL, "");
    bindtextdomain(PACKAGE, global_options_appdir ?
            g_strdup_printf("%s/locale", global_options_appdir) : LOCALEDIR);
    textdomain(PACKAGE);
#endif    

    gtk_init(&argc, &argv);
    scrn = gdk_screen_get_default();
    disp_name = gdk_screen_make_display_name(scrn);

    logo_filename = logo_find();
    gtk_window_set_default_icon_from_file(logo_filename, NULL);
    g_free(logo_filename);
    
    for (n = 1; n < argc; ++n)
    {
        if (!strcmp(argv[n], "--listen"))
            listen = TRUE;
        else if (!strncmp(argv[n], "--EditProfile=", 14))
            profile = argv[n] + 14;
        else if (!strncmp(argv[n], "--EditColourScheme=", 19))
            colour_scheme = argv[n] + 19;
        else if (!strcmp(argv[n], "--Configlet"))
            open_configlet = TRUE;
    }
    
    if (!open_configlet)
        open_configlet = !profile && !colour_scheme && !listen;

    dbus_ok = rtdbus_init();

    if (dbus_ok && optsdbus_init())
    {
        /* Defer to another instance */
        if (profile)
        {
            if (optsdbus_send_edit_profile_message(profile, disp_name))
                profile = NULL;
        }
        if (colour_scheme)
        {
            if (optsdbus_send_edit_colour_scheme_message(colour_scheme,
                    disp_name))
            {
                colour_scheme = NULL;
            }
        }
        if (open_configlet)
        {
            if (optsdbus_send_edit_opts_message("Configlet", "", disp_name))
            {
                open_configlet = FALSE;
            }
        }
    }

    if (profile)
    {
        profilegui_open(profile, scrn);
        persist = TRUE;
    }
    if (colour_scheme)
    {
        colourgui_open(colour_scheme, scrn);
        persist = TRUE;
    }
    if (open_configlet)
    {
        if (configlet_open(scrn))
            persist = TRUE;
    }

    if (dbus_ok && listen)
        persist = TRUE;

    g_free(disp_name);
    
    if (persist)
        gtk_main();

    return 0;
}
コード例 #18
0
/**
 * @brief GUI thread load UI File and create the GUI
 */
static gpointer
guiThread(gpointer data)
{

	GtkBuilder 	*builder;
	GtkWidget 	*window;
	GError 		*error = NULL;

	/* create new GtkBuilder object */
	builder = gtk_builder_new ();

	/* load UI from file. If error occurs, report it and quit application. */
	if (!gtk_builder_add_from_file(builder, UI_FILE, &error)) {
		g_warning("error loading glade file: %s", error->message);
		g_free(error);
		return NULL;
	}

	/*Get objects from UI */

 	window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
  	scale1 = GTK_WIDGET (gtk_builder_get_object (builder, "scale1"));
  	scale2 = GTK_WIDGET (gtk_builder_get_object (builder, "scale2"));
  	scale3 = GTK_WIDGET (gtk_builder_get_object (builder, "scale3"));
  	scale4 = GTK_WIDGET (gtk_builder_get_object (builder, "scale4"));
  	scale5 = GTK_WIDGET (gtk_builder_get_object (builder, "scale5"));
  	scale6 = GTK_WIDGET (gtk_builder_get_object (builder, "scale6"));

	adjustment1 = GTK_ADJUSTMENT (gtk_builder_get_object (builder,
															"adjustment1"));
	adjustment2 = GTK_ADJUSTMENT (gtk_builder_get_object (builder,
														  	"adjustment2"));
	adjustment3 = GTK_ADJUSTMENT (gtk_builder_get_object (builder,
														  	"adjustment3"));
	adjustment4 = GTK_ADJUSTMENT (gtk_builder_get_object (builder,
														  	"adjustment4"));
	adjustment5 = GTK_ADJUSTMENT (gtk_builder_get_object (builder,
														  	"adjustment5"));
	adjustment6 = GTK_ADJUSTMENT (gtk_builder_get_object (builder,
														  	"adjustment6"));

	dialog_port = GTK_DIALOG (gtk_builder_get_object (builder,
													  	"dialog1"));
	dialog_about = GTK_DIALOG (gtk_builder_get_object (builder,
													  	"aboutdialog1"));
	dialog_file = GTK_DIALOG (gtk_builder_get_object (builder,
													  	"filechooserdialog1"));
	dialog_error = GTK_DIALOG (gtk_builder_get_object (builder,
													  	"dialog_error"));
	dialog_error_port = GTK_DIALOG (gtk_builder_get_object (builder,
														"dialog_error_port"));
	dialog_list = GTK_DIALOG (gtk_builder_get_object (builder,
													  	"dialog_list"));
	dialog_name_exists = GTK_DIALOG (gtk_builder_get_object (builder,
													 	"dialog_name_exists"));

	combobox1 = GTK_WIDGET (gtk_builder_get_object (builder, "comboboxtext1"));
	combobox2 = GTK_WIDGET (gtk_builder_get_object (builder, "comboboxtext2"));
	combobox3 = GTK_WIDGET (gtk_builder_get_object (builder, "comboboxtext3"));
	combobox4 = GTK_WIDGET (gtk_builder_get_object (builder, "comboboxtext4"));
	combobox5 = GTK_WIDGET (gtk_builder_get_object (builder, "comboboxtext5"));

	bt_con_decon = GTK_WIDGET (gtk_builder_get_object (builder,
													   	"bt_con_decon"));
	button_save = GTK_WIDGET (gtk_builder_get_object (builder,
													  	"bt_save_position"));
	button_file = GTK_WIDGET (gtk_builder_get_object (builder,
													  	"bt_file"));
	bt_file_save = GTK_WIDGET (gtk_builder_get_object (builder,
													   	"bt_file_save"));
  	image_connect =  GTK_IMAGE (gtk_builder_get_object (builder,
													  	"image_connect"));
	entry_name_position = GTK_WIDGET (gtk_builder_get_object (builder,
														"entry_name_position"));
	bt_ok_error_port = GTK_WIDGET (gtk_builder_get_object (builder,
														"bt_ok_error_port"));
	switch1 = GTK_WIDGET (gtk_builder_get_object (builder,
												  		"switch1"));
	bt_edit = GTK_WIDGET (gtk_builder_get_object (builder,
												  		"bt_edit"));
	bt_open_file = GTK_WIDGET (gtk_builder_get_object (builder,
													   	"bt_open_file"));


	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview"));
	model = GTK_LIST_STORE (gtk_builder_get_object (builder, "model"));

	/*************************************************/

	gtk_builder_connect_signals (builder, NULL);
  	g_object_unref (G_OBJECT (builder));

  	gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));
  	gtk_window_set_title (GTK_WINDOW (window), "Servo Calibration");
	gtk_window_set_default_size (GTK_WINDOW (window), 700,530);
  	gtk_window_set_default_icon_from_file("../glade/img8.png", NULL);
  	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);

	gtk_window_set_transient_for (GTK_WINDOW (dialog_port),
								  	GTK_WINDOW (window));
	gtk_window_set_transient_for (GTK_WINDOW (dialog_about),
								  	GTK_WINDOW (window));
	gtk_window_set_transient_for (GTK_WINDOW (dialog_file),
								  	GTK_WINDOW (window));
	gtk_window_set_transient_for (GTK_WINDOW (dialog_error),
								  	GTK_WINDOW (window));
	gtk_window_set_transient_for (GTK_WINDOW (dialog_error_port),
								  	GTK_WINDOW (window));
	gtk_window_set_transient_for (GTK_WINDOW (dialog_list),
								  	GTK_WINDOW (window));
	gtk_window_set_transient_for (GTK_WINDOW (dialog_name_exists),
								 	GTK_WINDOW (window));

  	gtk_scale_add_mark (GTK_SCALE(scale1), 0, GTK_POS_LEFT ,"0°");
	gtk_scale_add_mark (GTK_SCALE(scale2), 0, GTK_POS_LEFT ,"0°");
	gtk_scale_add_mark (GTK_SCALE(scale3), 0, GTK_POS_LEFT ,"0°");
	gtk_scale_add_mark (GTK_SCALE(scale4), 0, GTK_POS_LEFT ,"0°");
	gtk_scale_add_mark (GTK_SCALE(scale5), 0, GTK_POS_LEFT ,"0°");
	gtk_scale_add_mark (GTK_SCALE(scale6), 0, GTK_POS_LEFT ,"0°");

	gtk_widget_set_sensitive (GTK_WIDGET(entry_name_position), FALSE);
	gtk_widget_set_sensitive (GTK_WIDGET(button_save), FALSE);
	gtk_widget_set_sensitive (GTK_WIDGET(switch1), FALSE);
	gtk_widget_set_sensitive (GTK_WIDGET(bt_edit), FALSE);


  	gtk_widget_show_all(GTK_WIDGET(window));
  	gtk_main();
  	return NULL;
}
コード例 #19
0
ファイル: bibledit-xiphos.cpp プロジェクト: alerque/bibledit
int main (int argc, char *argv[])
{
  
#ifndef WIN32
  // Do not run as root.
  if (getuid () == 0) {
    cout << "Bibledit-Xiphos has not been designed to run with root privileges." << endl;
    return 1;
  }
#endif

	// The necessary g* initializers, in the proper order.
  g_thread_init(NULL);
	g_type_init ();
  gtk_init (&argc, &argv);

  gchar * iconfile = g_build_filename (PACKAGE_DATA_DIR, "bibledit-xiphos.xpm", NULL);
  gtk_window_set_default_icon_from_file(iconfile, NULL);
  g_free (iconfile);

  // Initialize variables.
  event_id_rescan_bus = 0;
  last_message_id = "0";
  quit = false;
  
  // Read settings.
  GKeyFile *keyfile = g_key_file_new();
  gchar * key_file_name = registry_file_name ();
  g_key_file_load_from_file(keyfile, key_file_name, G_KEY_FILE_NONE, NULL);
  g_free (key_file_name);
  
  GtkBuilder *gtkbuilder;

  gtkbuilder = gtk_builder_new ();
  gchar * filename = g_build_filename (PACKAGE_DATA_DIR, "gtkbuilder.xml", NULL);
  gtk_builder_add_from_file (gtkbuilder, filename, NULL);
  g_free (filename);

  window = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "window"));
  g_signal_connect ((gpointer) window, "delete_event", G_CALLBACK (quit_program), NULL);
  gtk_widget_show_all (window);

  entry_url = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "entry_url"));
  gchar * url = g_key_file_get_string (keyfile, "settings", "bibledit-web-url", NULL);
  if (!url) {
    url = strdup ("http://localhost/bibledit");
  }
  gtk_entry_set_text (GTK_ENTRY (entry_url), url);
  g_free (url);
  g_signal_connect((gpointer) entry_url, "changed", G_CALLBACK(on_entry_url_changed), NULL);

  button_url = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "button_url"));
  g_signal_connect((gpointer) button_url, "clicked", G_CALLBACK(on_button_url_clicked), NULL);

  label_url = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "label_url"));

  entry_user = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "entry_user"));
  gchar * user = g_key_file_get_string (keyfile, "settings", "bibledit-web-user", NULL);
  if (!user) {
    user = strdup ("");
  }
  gtk_entry_set_text (GTK_ENTRY (entry_user), user);
  g_free (user);
  g_signal_connect((gpointer) entry_user, "changed", G_CALLBACK(on_entry_user_changed), NULL);

  label_xiphos_process = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "label_xiphos_process"));

  label_id = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "label_id"));
  label_command = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "label_command"));
  label_body = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "label_body"));

  label_xiphos = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "label_xiphos"));

  button_hide = GTK_WIDGET (gtk_builder_get_object (gtkbuilder, "button_hide"));
  g_signal_connect((gpointer) button_hide, "clicked", G_CALLBACK(on_button_hide_clicked), NULL);

  g_key_file_free (keyfile);

  // We use asynchronous transport, so that we can send several messages simultanously.
	session = soup_session_async_new_with_options (SOUP_SESSION_USER_AGENT, "bibledit-xiphos/1.0", NULL);
  start_xiphos_web_listener ();

	// Obtain a connection to the Session Bus.
	GError *error = NULL;
	sigcon = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
	if(sigcon) {
  	con = dbus_g_connection_get_connection(sigcon);
	} else {
    printf ("%s\n", error->message);
    fflush (stdout);
		g_error_free(error);
  	return 1;
  }

	// Request our name on the DBus.
  if (con) {
  	DBusError *dbuserror = NULL;
    int retval = dbus_bus_request_name(con, "org.bibledit.xiphos", 0, dbuserror);
    if (retval != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
      if (dbus_error_is_set(dbuserror)) {
        printf ("%s\n", dbuserror->message);
        fflush (stdout);
        dbus_error_free(dbuserror);
      }
    }
  }

  // Connect to a couple of signals that indicate applications have started or have exited.
  // Then a rescan of the bus can show whether the programs that we're interested in run.  
  proxy = NULL;
  if (sigcon)
  	proxy = dbus_g_proxy_new_for_name(sigcon, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus");
  if (proxy) {
    dbus_g_proxy_add_signal(proxy, "NameAcquired", G_TYPE_STRING, G_TYPE_INVALID);
    dbus_g_proxy_connect_signal(proxy, "NameAcquired", G_CALLBACK (on_name_acquired), NULL, NULL);
    dbus_g_proxy_add_signal(proxy, "NameOwnerChanged", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
    dbus_g_proxy_connect_signal(proxy, "NameOwnerChanged", G_CALLBACK (on_name_owner_changed), NULL, NULL);
    dbus_g_proxy_add_signal(proxy, "NameLost", G_TYPE_STRING, G_TYPE_INVALID);
    dbus_g_proxy_connect_signal(proxy, "NameLost", G_CALLBACK (on_name_lost), NULL, NULL);
  }

  // Signal trapping for doing a clean exit.
	signal(SIGINT, sigproc);
	signal(SIGQUIT, sigquit);

  // Main loop.
  gtk_main();

  // Destroy any pending timeout.
  destroy_source(event_id_rescan_bus);

  // Abort the session including the listeners
  soup_session_abort (session);

  // The connection obtained through dbus_g_connection_get_connection does not have its reference count incremented.
  // Therefore it should not be unreferenced.
  // dbus_connection_unref(con);

  // Destroy the proxy.
  if (proxy) {
    g_object_unref(proxy);
  }

  // Well done.
	return 0;
}