PostGIS  3.0.6dev-r@@SVN_REVISION@@

◆ pgui_create_tablechooser_dialog()

static void pgui_create_tablechooser_dialog ( )
static

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

2796 {
2797  GtkWidget *vbox_tree, *table_progress;
2798  GtkWidget *sw, *label;
2799  GtkTreeSelection *chooser_selection;
2800 
2801  /* Create the main top level window with a 10px border */
2802  dialog_tablechooser = gtk_dialog_new_with_buttons(_("Table selection"), GTK_WINDOW(window_main),
2803  GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
2804 
2805  gtk_container_set_border_width(GTK_CONTAINER(dialog_tablechooser), 10);
2806  gtk_window_set_position(GTK_WINDOW(dialog_tablechooser), GTK_WIN_POS_CENTER);
2807 
2808  vbox_tree = gtk_dialog_get_content_area(GTK_DIALOG(dialog_tablechooser));
2809 
2810  /* Setup a model */
2811  chooser_table_list_store = gtk_list_store_new(TABLECHOOSER_N_COLUMNS,
2812  G_TYPE_STRING,
2813  G_TYPE_STRING,
2814  GTK_TYPE_TREE_MODEL,
2815  G_TYPE_STRING,
2816  G_TYPE_INT);
2817 
2818  /* Because we want to do selective filtering on the treeview content, we now implement a GtkTreeModel
2819  filter on top of the original tree model */
2820  chooser_filtered_table_list_store = (GtkListStore *)gtk_tree_model_filter_new(GTK_TREE_MODEL(chooser_table_list_store), NULL);
2821  gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(chooser_filtered_table_list_store),
2822  (GtkTreeModelFilterVisibleFunc)table_chooser_visibility_func, NULL, NULL);
2823 
2824  /* Create the view and such */
2825  chooser_tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(chooser_filtered_table_list_store));
2826  chooser_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(chooser_tree));
2827  gtk_tree_selection_set_mode(chooser_selection, GTK_SELECTION_MULTIPLE);
2828 
2829  /* Make the tree view in a scrollable window */
2830  sw = gtk_scrolled_window_new(NULL, NULL);
2831  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
2832  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN);
2833  gtk_widget_set_size_request(sw, 320, 240);
2834 
2835  gtk_box_pack_start(GTK_BOX(vbox_tree), sw, FALSE, FALSE, 10);
2836  gtk_container_add(GTK_CONTAINER(sw), chooser_tree);
2837 
2838  /* Schema Field */
2839  chooser_schema_renderer = gtk_cell_renderer_text_new();
2840  g_object_set(chooser_schema_renderer, "editable", TRUE, NULL);
2841  g_signal_connect(G_OBJECT(chooser_schema_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), NULL);
2842  chooser_schema_column = gtk_tree_view_column_new_with_attributes(_("Schema"),
2844  "text",
2846  NULL);
2847  g_object_set(chooser_schema_column, "resizable", TRUE, "sizing", GTK_TREE_VIEW_COLUMN_AUTOSIZE, NULL);
2848  gtk_tree_view_append_column(GTK_TREE_VIEW(chooser_tree), chooser_schema_column);
2849 
2850  /* Table Field */
2851  chooser_table_renderer = gtk_cell_renderer_text_new();
2852  g_object_set(chooser_table_renderer, "editable", FALSE, NULL);
2853  g_signal_connect(G_OBJECT(chooser_table_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), NULL);
2854  chooser_table_column = gtk_tree_view_column_new_with_attributes(_("Table"),
2856  "text",
2858  NULL);
2859  g_object_set(chooser_table_column, "resizable", TRUE, "sizing", GTK_TREE_VIEW_COLUMN_AUTOSIZE, NULL);
2860  gtk_tree_view_append_column(GTK_TREE_VIEW(chooser_tree), chooser_table_column);
2861 
2862  /* Create table to hold the tick-box and text */
2863  table_progress = gtk_table_new(1, 2, FALSE);
2864  gtk_container_set_border_width (GTK_CONTAINER (table_progress), 0);
2865  gtk_table_set_row_spacings(GTK_TABLE(table_progress), 0);
2866  gtk_table_set_col_spacings(GTK_TABLE(table_progress), 0);
2867 
2868  checkbutton_chooser_geoonly = gtk_check_button_new();
2869  gtk_table_attach(GTK_TABLE(table_progress), checkbutton_chooser_geoonly, 0, 1, 0, 1, GTK_SHRINK, GTK_FILL, 0, 0);
2870  label = gtk_label_new(_("Only show tables with geo columns"));
2871  gtk_table_attach(GTK_TABLE(table_progress), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 5, 0);
2872  g_signal_connect(G_OBJECT(checkbutton_chooser_geoonly), "toggled", G_CALLBACK(pgui_action_chooser_toggle_show_geocolumn), NULL);
2873  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton_chooser_geoonly), TRUE);
2874 
2875  /* Attach table to the vbox */
2876  gtk_box_pack_start(GTK_BOX(vbox_tree), table_progress, FALSE, FALSE, 10);
2877 
2878  return;
2879 }
#define TRUE
Definition: dbfopen.c:169
#define FALSE
Definition: dbfopen.c:168
GtkCellRenderer * chooser_schema_renderer
static GtkWidget * dialog_tablechooser
GtkTreeViewColumn * chooser_schema_column
GtkListStore * chooser_table_list_store
GtkListStore * chooser_filtered_table_list_store
@ TABLECHOOSER_TABLE_COLUMN
@ TABLECHOOSER_SCHEMA_COLUMN
@ TABLECHOOSER_N_COLUMNS
#define gtk_dialog_get_content_area(dialog)
Definition: shp2pgsql-gui.c:41
static GtkWidget * checkbutton_chooser_geoonly
GtkCellRenderer * chooser_table_renderer
static gboolean table_chooser_visibility_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
static void pgui_action_handle_loader_edit(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer column)
static GtkWidget * window_main
Definition: shp2pgsql-gui.c:50
GtkWidget * chooser_tree
GtkTreeViewColumn * chooser_table_column
static void pgui_action_chooser_toggle_show_geocolumn(GtkToggleButton *togglebutton, gpointer user_data)
#define _(String)
Definition: shpcommon.h:24

References _, checkbutton_chooser_geoonly, chooser_filtered_table_list_store, chooser_schema_column, chooser_schema_renderer, chooser_table_column, chooser_table_list_store, chooser_table_renderer, chooser_tree, dialog_tablechooser, FALSE, gtk_dialog_get_content_area, pgui_action_chooser_toggle_show_geocolumn(), pgui_action_handle_loader_edit(), table_chooser_visibility_func(), TABLECHOOSER_N_COLUMNS, TABLECHOOSER_SCHEMA_COLUMN, TABLECHOOSER_TABLE_COLUMN, TRUE, and window_main.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function: