PostGIS  2.4.9dev-r@@SVN_REVISION@@

◆ pgui_create_main_window()

static void pgui_create_main_window ( const SHPCONNECTIONCONFIG conn)
static

Definition at line 3279 of file shp2pgsql-gui.c.

References _, FALSE, pgui_action_about_open(), pgui_action_cancel(), pgui_action_connection_details(), pgui_action_dumper_options_open(), pgui_action_export(), pgui_action_import(), pgui_action_loader_options_open(), pgui_create_export_table_table(), pgui_create_import_file_table(), pgui_quit(), textbuffer_log, textview_log, TRUE, and window_main.

Referenced by main().

3280 {
3281  /* Main widgets */
3282  GtkWidget *vbox_main, *vbox_loader, *vbox_dumper;
3283 
3284  /* PgSQL section */
3285  GtkWidget *frame_pg, *import_list_frame, *export_list_frame, *frame_log;
3286  GtkWidget *button_pg_conn;
3287 
3288  /* Notebook */
3289  GtkWidget *notebook;
3290 
3291  /* Button section */
3292  GtkWidget *loader_hbox_buttons, *loader_button_options, *loader_button_import, *loader_button_cancel, *loader_button_about;
3293  GtkWidget *dumper_hbox_buttons, *dumper_button_options, *dumper_button_export, *dumper_button_cancel, *dumper_button_about;
3294 
3295  /* Log section */
3296  GtkWidget *scrolledwindow_log;
3297 
3298  /* Create the main top level window with a 10px border */
3299  window_main = gtk_window_new(GTK_WINDOW_TOPLEVEL);
3300  gtk_container_set_border_width(GTK_CONTAINER(window_main), 10);
3301  gtk_window_set_title(GTK_WINDOW(window_main), _("PostGIS Shapefile Import/Export Manager"));
3302  gtk_window_set_position(GTK_WINDOW(window_main), GTK_WIN_POS_CENTER_ALWAYS);
3303  gtk_window_set_resizable(GTK_WINDOW(window_main), FALSE);
3304 
3305  /* Open it a bit wider so that both the label and title show up */
3306  gtk_window_set_default_size(GTK_WINDOW(window_main), 180, 500);
3307 
3308  /* Connect the destroy event of the window with our pgui_quit function
3309  * When the window is about to be destroyed we get a notificaiton and
3310  * stop the main GTK loop
3311  */
3312  g_signal_connect(G_OBJECT(window_main), "destroy", G_CALLBACK(pgui_quit), NULL);
3313 
3314  /* Connection row */
3315  frame_pg = gtk_frame_new(_("PostGIS Connection"));
3316 
3317  /* Test button row */
3318  button_pg_conn = gtk_button_new_with_label(_("View connection details..."));
3319  g_signal_connect(G_OBJECT(button_pg_conn), "clicked", G_CALLBACK(pgui_action_connection_details), NULL);
3320  gtk_container_set_border_width(GTK_CONTAINER(button_pg_conn), 10);
3321  gtk_container_add(GTK_CONTAINER(frame_pg), button_pg_conn);
3322 
3323  /*
3324  * GTK Notebook for selecting import/export
3325  */
3326  notebook = gtk_notebook_new();
3327 
3328  /*
3329  ** Shape file selector
3330  */
3331  import_list_frame = gtk_frame_new(_("Import List"));
3332  pgui_create_import_file_table(import_list_frame);
3333 
3334  /*
3335  ** Row of action buttons
3336  */
3337  loader_hbox_buttons = gtk_hbox_new(TRUE, 15);
3338  gtk_container_set_border_width (GTK_CONTAINER (loader_hbox_buttons), 0);
3339 
3340  /* Create the buttons themselves */
3341  loader_button_options = gtk_button_new_with_label(_("Options..."));
3342  loader_button_import = gtk_button_new_with_label(_("Import"));
3343  loader_button_cancel = gtk_button_new_with_label(_("Cancel"));
3344  loader_button_about = gtk_button_new_with_label(_("About"));
3345 
3346  /* Add actions to the buttons */
3347  g_signal_connect (G_OBJECT (loader_button_import), "clicked", G_CALLBACK (pgui_action_import), NULL);
3348  g_signal_connect (G_OBJECT (loader_button_options), "clicked", G_CALLBACK (pgui_action_loader_options_open), NULL);
3349  g_signal_connect (G_OBJECT (loader_button_cancel), "clicked", G_CALLBACK (pgui_action_cancel), NULL);
3350  g_signal_connect (G_OBJECT (loader_button_about), "clicked", G_CALLBACK (pgui_action_about_open), NULL);
3351 
3352  /* And insert the buttons into the hbox */
3353  gtk_box_pack_start(GTK_BOX(loader_hbox_buttons), loader_button_options, TRUE, TRUE, 0);
3354  gtk_box_pack_end(GTK_BOX(loader_hbox_buttons), loader_button_cancel, TRUE, TRUE, 0);
3355  gtk_box_pack_end(GTK_BOX(loader_hbox_buttons), loader_button_about, TRUE, TRUE, 0);
3356  gtk_box_pack_end(GTK_BOX(loader_hbox_buttons), loader_button_import, TRUE, TRUE, 0);
3357 
3358  /*
3359  ** Table selector
3360  */
3361  export_list_frame = gtk_frame_new(_("Export List"));
3362  pgui_create_export_table_table(export_list_frame);
3363 
3364  /*
3365  ** Row of action buttons
3366  */
3367  dumper_hbox_buttons = gtk_hbox_new(TRUE, 15);
3368  gtk_container_set_border_width (GTK_CONTAINER (dumper_hbox_buttons), 0);
3369 
3370  /* Create the buttons themselves */
3371  dumper_button_options = gtk_button_new_with_label(_("Options..."));
3372  dumper_button_export = gtk_button_new_with_label(_("Export"));
3373  dumper_button_cancel = gtk_button_new_with_label(_("Cancel"));
3374  dumper_button_about = gtk_button_new_with_label(_("About"));
3375 
3376  /* Add actions to the buttons */
3377  g_signal_connect (G_OBJECT (dumper_button_export), "clicked", G_CALLBACK (pgui_action_export), NULL);
3378  g_signal_connect (G_OBJECT (dumper_button_options), "clicked", G_CALLBACK (pgui_action_dumper_options_open), NULL);
3379  g_signal_connect (G_OBJECT (dumper_button_cancel), "clicked", G_CALLBACK (pgui_action_cancel), NULL);
3380  g_signal_connect (G_OBJECT (dumper_button_about), "clicked", G_CALLBACK (pgui_action_about_open), NULL);
3381 
3382  /* And insert the buttons into the hbox */
3383  gtk_box_pack_start(GTK_BOX(dumper_hbox_buttons), dumper_button_options, TRUE, TRUE, 0);
3384  gtk_box_pack_end(GTK_BOX(dumper_hbox_buttons), dumper_button_cancel, TRUE, TRUE, 0);
3385  gtk_box_pack_end(GTK_BOX(dumper_hbox_buttons), dumper_button_about, TRUE, TRUE, 0);
3386  gtk_box_pack_end(GTK_BOX(dumper_hbox_buttons), dumper_button_export, TRUE, TRUE, 0);
3387 
3388  /*
3389  ** Log window
3390  */
3391  frame_log = gtk_frame_new(_("Log Window"));
3392  gtk_container_set_border_width (GTK_CONTAINER (frame_log), 0);
3393  gtk_widget_set_size_request(frame_log, -1, 200);
3394  textview_log = gtk_text_view_new();
3395  textbuffer_log = gtk_text_buffer_new(NULL);
3396  scrolledwindow_log = gtk_scrolled_window_new(NULL, NULL);
3397  gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(scrolledwindow_log), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
3398  gtk_text_view_set_buffer(GTK_TEXT_VIEW(textview_log), textbuffer_log);
3399  gtk_container_set_border_width (GTK_CONTAINER (textview_log), 5);
3400  gtk_text_view_set_editable(GTK_TEXT_VIEW(textview_log), FALSE);
3401  gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(textview_log), FALSE);
3402  gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview_log), GTK_WRAP_WORD);
3403  gtk_container_add (GTK_CONTAINER (scrolledwindow_log), textview_log);
3404  gtk_container_add (GTK_CONTAINER (frame_log), scrolledwindow_log);
3405 
3406  /*
3407  ** Main window
3408  */
3409  vbox_main = gtk_vbox_new(FALSE, 10);
3410  gtk_container_set_border_width (GTK_CONTAINER (vbox_main), 0);
3411 
3412  /* Add the loader frames into the notebook page */
3413  vbox_loader = gtk_vbox_new(FALSE, 10);
3414  gtk_container_set_border_width(GTK_CONTAINER(vbox_loader), 10);
3415 
3416  gtk_box_pack_start(GTK_BOX(vbox_loader), import_list_frame, FALSE, TRUE, 0);
3417  gtk_box_pack_start(GTK_BOX(vbox_loader), loader_hbox_buttons, FALSE, FALSE, 0);
3418  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_loader, gtk_label_new(_("Import")));
3419 
3420  /* Add the dumper frames into the notebook page */
3421  vbox_dumper = gtk_vbox_new(FALSE, 10);
3422  gtk_container_set_border_width(GTK_CONTAINER(vbox_dumper), 10);
3423 
3424  gtk_box_pack_start(GTK_BOX(vbox_dumper), export_list_frame, FALSE, TRUE, 0);
3425  gtk_box_pack_start(GTK_BOX(vbox_dumper), dumper_hbox_buttons, FALSE, FALSE, 0);
3426  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox_dumper, gtk_label_new(_("Export")));
3427 
3428  /* Add the frames into the main vbox */
3429  gtk_box_pack_start(GTK_BOX(vbox_main), frame_pg, FALSE, TRUE, 0);
3430  gtk_box_pack_start(GTK_BOX(vbox_main), notebook, FALSE, TRUE, 0);
3431  gtk_box_pack_start(GTK_BOX(vbox_main), frame_log, TRUE, TRUE, 0);
3432 
3433  /* and insert the vbox into the main window */
3434  gtk_container_add(GTK_CONTAINER(window_main), vbox_main);
3435 
3436  /* make sure that everything, window and label, are visible */
3437  gtk_widget_show_all(window_main);
3438 
3439  return;
3440 }
static GtkWidget * window_main
Definition: shp2pgsql-gui.c:50
static void pgui_create_export_table_table(GtkWidget *export_list_frame)
#define _(String)
Definition: shpcommon.h:24
static void pgui_action_cancel(GtkWidget *widget, gpointer data)
static void pgui_action_loader_options_open(GtkWidget *widget, gpointer data)
static void pgui_action_import(GtkWidget *widget, gpointer data)
static void pgui_quit(GtkWidget *widget, gpointer data)
static void pgui_action_about_open()
static void pgui_action_connection_details(GtkWidget *widget, gpointer data)
#define FALSE
Definition: dbfopen.c:168
static void pgui_action_dumper_options_open(GtkWidget *widget, gpointer data)
static void pgui_action_export(GtkWidget *widget, gpointer data)
#define TRUE
Definition: dbfopen.c:169
static GtkWidget * textview_log
Definition: shp2pgsql-gui.c:52
static void pgui_create_import_file_table(GtkWidget *import_list_frame)
static GtkTextBuffer * textbuffer_log
Definition: shp2pgsql-gui.c:53
Here is the call graph for this function:
Here is the caller graph for this function: