PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ pgui_create_import_file_table()

static void pgui_create_import_file_table ( GtkWidget *  import_list_frame)
static

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

2915{
2916 GtkWidget *vbox_tree;
2917 GtkWidget *sw;
2918 GtkTreeIter iter;
2919 gint *column_indexes;
2920
2921 gtk_container_set_border_width (GTK_CONTAINER (import_list_frame), 0);
2922
2923 vbox_tree = gtk_vbox_new(FALSE, 15);
2924 gtk_container_set_border_width(GTK_CONTAINER(vbox_tree), 5);
2925 gtk_container_add(GTK_CONTAINER(import_list_frame), vbox_tree);
2926
2927 /* Setup a model */
2928 import_file_list_store = gtk_list_store_new(IMPORT_N_COLUMNS,
2929 G_TYPE_POINTER,
2930 G_TYPE_STRING,
2931 G_TYPE_STRING,
2932 G_TYPE_STRING,
2933 G_TYPE_STRING,
2934 G_TYPE_STRING,
2935 G_TYPE_STRING,
2936 G_TYPE_BOOLEAN);
2937
2938 /* Create the view and such */
2939 import_tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(import_file_list_store));
2940
2941 /* GTK has a slightly brain-dead API in that you can't directly find
2942 the column being used by a GtkCellRenderer when using the same
2943 callback to handle multiple fields; hence we manually store this
2944 information here and pass a pointer to the column index into
2945 the signal handler */
2946 column_indexes = g_malloc(sizeof(gint) * IMPORT_N_COLUMNS);
2947
2948 /* Make the tree view in a scrollable window */
2949 sw = gtk_scrolled_window_new(NULL, NULL);
2950 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
2951 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN);
2952 gtk_widget_set_size_request(sw, -1, 150);
2953
2954 gtk_box_pack_start(GTK_BOX(vbox_tree), sw, TRUE, TRUE, 0);
2955 gtk_container_add(GTK_CONTAINER (sw), import_tree);
2956
2957 /* Place the "Add File" button below the list view */
2958 add_file_button = gtk_button_new_with_label(_("Add File"));
2959 gtk_container_add (GTK_CONTAINER (vbox_tree), add_file_button);
2960
2961 /* Filename Field */
2962 import_filename_renderer = gtk_cell_renderer_text_new();
2963 g_object_set(import_filename_renderer, "editable", FALSE, NULL);
2965 g_signal_connect(G_OBJECT(import_filename_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), &column_indexes[IMPORT_FILENAME_COLUMN]);
2966 import_filename_column = gtk_tree_view_column_new_with_attributes(_("Shapefile"),
2968 "text",
2970 NULL);
2971 g_object_set(import_filename_column, "resizable", TRUE, NULL);
2972 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_filename_column);
2973
2974 /* Schema Field */
2975 import_schema_renderer = gtk_cell_renderer_text_new();
2976 g_object_set(import_schema_renderer, "editable", TRUE, NULL);
2978 g_signal_connect(G_OBJECT(import_schema_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), &column_indexes[IMPORT_SCHEMA_COLUMN]);
2979 import_schema_column = gtk_tree_view_column_new_with_attributes(_("Schema"),
2981 "text",
2983 NULL);
2984 g_object_set(import_schema_column, "resizable", TRUE, "expand", TRUE, NULL);
2985 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_schema_column);
2986
2987 /* Table Field */
2988 import_table_renderer = gtk_cell_renderer_text_new();
2989 g_object_set(import_table_renderer, "editable", TRUE, NULL);
2990 column_indexes[IMPORT_TABLE_COLUMN] = IMPORT_TABLE_COLUMN;
2991 g_signal_connect(G_OBJECT(import_table_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), &column_indexes[IMPORT_TABLE_COLUMN]);
2992 import_table_column = gtk_tree_view_column_new_with_attributes(_("Table"),
2994 "text",
2996 NULL);
2997 g_object_set(import_table_column, "resizable", TRUE, "expand", TRUE, NULL);
2998 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_table_column);
2999
3000 /* Geo column field */
3001 import_geom_column_renderer = gtk_cell_renderer_text_new();
3002 g_object_set(import_geom_column_renderer, "editable", TRUE, NULL);
3004 g_signal_connect(G_OBJECT(import_geom_column_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), &column_indexes[IMPORT_GEOMETRY_COLUMN]);
3005 import_geom_column = gtk_tree_view_column_new_with_attributes(_("Geo Column"),
3007 "text",
3009 NULL);
3010 g_object_set(import_geom_column, "resizable", TRUE, "expand", TRUE, NULL);
3011 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_geom_column);
3012
3013 /* SRID Field */
3014 import_srid_renderer = gtk_cell_renderer_text_new();
3015 g_object_set(import_srid_renderer, "editable", TRUE, NULL);
3016 column_indexes[IMPORT_SRID_COLUMN] = IMPORT_SRID_COLUMN;
3017 g_signal_connect(G_OBJECT(import_srid_renderer), "edited", G_CALLBACK(pgui_action_handle_loader_edit), &column_indexes[IMPORT_SRID_COLUMN]);
3018 import_srid_column = gtk_tree_view_column_new_with_attributes("SRID",
3020 "text",
3022 NULL);
3023 g_object_set(import_srid_column, "resizable", TRUE, "expand", TRUE, NULL);
3024 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_srid_column);
3025
3026 /* Mode Combo Field */
3028 G_TYPE_STRING,
3029 G_TYPE_CHAR);
3030
3031 gtk_list_store_insert(loader_mode_combo_list, &iter, CREATE_MODE);
3032 gtk_list_store_set(loader_mode_combo_list, &iter,
3033 LOADER_MODE_COMBO_TEXT, _("Create"),
3035 -1);
3036 gtk_list_store_insert(loader_mode_combo_list, &iter, APPEND_MODE);
3037 gtk_list_store_set(loader_mode_combo_list, &iter,
3038 LOADER_MODE_COMBO_TEXT, _("Append"),
3040 -1);
3041 gtk_list_store_insert(loader_mode_combo_list, &iter, DELETE_MODE);
3042 gtk_list_store_set(loader_mode_combo_list, &iter,
3043 LOADER_MODE_COMBO_TEXT, _("Delete"),
3045 -1);
3046 gtk_list_store_insert(loader_mode_combo_list, &iter, PREPARE_MODE);
3047 gtk_list_store_set(loader_mode_combo_list, &iter,
3048 LOADER_MODE_COMBO_TEXT, _("Prepare"),
3050 -1);
3051 loader_mode_combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(loader_mode_combo_list));
3052 import_mode_renderer = gtk_cell_renderer_combo_new();
3053 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(loader_mode_combo),
3055 gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(loader_mode_combo),
3056 import_mode_renderer, "text", 0);
3057 g_object_set(import_mode_renderer,
3058 "model", loader_mode_combo_list,
3059 "editable", TRUE,
3060 "has-entry", FALSE,
3061 "text-column", LOADER_MODE_COMBO_TEXT,
3062 NULL);
3063 import_mode_column = gtk_tree_view_column_new_with_attributes(_("Mode"),
3065 "text",
3067 NULL);
3068 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_mode_column);
3069 gtk_combo_box_set_active(GTK_COMBO_BOX(loader_mode_combo), 1);
3070 g_object_set(import_mode_column, "resizable", TRUE, "expand", TRUE, "sizing", GTK_TREE_VIEW_COLUMN_AUTOSIZE, NULL);
3071
3072 g_signal_connect (G_OBJECT(import_mode_renderer), "changed", G_CALLBACK(pgui_action_handle_tree_combo), NULL);
3073
3074 /* Remove Field */
3075 import_remove_renderer = gtk_cell_renderer_toggle_new();
3076 g_object_set(import_remove_renderer, "activatable", TRUE, NULL);
3077 g_signal_connect(G_OBJECT(import_remove_renderer), "toggled", G_CALLBACK (pgui_action_handle_file_remove), NULL);
3078 import_remove_column = gtk_tree_view_column_new_with_attributes("Rm",
3080 g_object_set(import_remove_column, "resizable", TRUE, "expand", FALSE, "fixed-width", 64, "sizing", GTK_TREE_VIEW_COLUMN_FIXED, NULL);
3081 gtk_tree_view_append_column(GTK_TREE_VIEW(import_tree), import_remove_column);
3082
3083 g_signal_connect (G_OBJECT (add_file_button), "clicked", G_CALLBACK (pgui_action_open_file_dialog), NULL);
3084
3085 /* Drag n Drop wiring */
3086 GtkTargetEntry drop_types[] =
3087 {
3088 { "text/uri-list", 0, 0}
3089 };
3090
3091 gint n_drop_types = sizeof(drop_types)/sizeof(drop_types[0]);
3092 gtk_drag_dest_set(GTK_WIDGET(import_tree),
3093 GTK_DEST_DEFAULT_ALL,
3094 drop_types, n_drop_types,
3095 GDK_ACTION_COPY);
3096 g_signal_connect(G_OBJECT(import_tree), "drag_data_received",
3097 G_CALLBACK(pgui_action_handle_file_drop), NULL);
3098}
#define TRUE
Definition dbfopen.c:73
#define FALSE
Definition dbfopen.c:72
@ LOADER_MODE_COMBO_COLUMNS
@ LOADER_MODE_COMBO_TEXT
@ LOADER_MODE_COMBO_OPTION_CHAR
GtkCellRenderer * import_table_renderer
GtkCellRenderer * import_remove_renderer
static GtkWidget * add_file_button
GtkTreeViewColumn * import_table_column
static void pgui_action_handle_file_remove(GtkCellRendererToggle *renderer, gchar *path, gpointer user_data)
GtkCellRenderer * import_schema_renderer
GtkTreeViewColumn * import_srid_column
static void pgui_action_handle_tree_combo(GtkCellRendererCombo *combo, gchar *path_string, GtkTreeIter *new_iter, gpointer user_data)
@ IMPORT_TABLE_COLUMN
@ IMPORT_MODE_COLUMN
@ IMPORT_FILENAME_COLUMN
@ IMPORT_GEOMETRY_COLUMN
@ IMPORT_SCHEMA_COLUMN
@ IMPORT_N_COLUMNS
@ IMPORT_SRID_COLUMN
GtkWidget * loader_mode_combo
static void pgui_action_handle_file_drop(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data)
GtkTreeViewColumn * import_remove_column
static void pgui_action_open_file_dialog(GtkWidget *widget, gpointer data)
GtkTreeViewColumn * import_schema_column
GtkListStore * import_file_list_store
@ CREATE_MODE
@ DELETE_MODE
@ PREPARE_MODE
@ APPEND_MODE
static void pgui_action_handle_loader_edit(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer column)
GtkTreeViewColumn * import_filename_column
GtkWidget * import_tree
GtkListStore * loader_mode_combo_list
GtkCellRenderer * import_srid_renderer
GtkCellRenderer * import_mode_renderer
GtkCellRenderer * import_filename_renderer
GtkCellRenderer * import_geom_column_renderer
GtkTreeViewColumn * import_geom_column
GtkTreeViewColumn * import_mode_column
#define _(String)
Definition shpcommon.h:24

References _, add_file_button, APPEND_MODE, CREATE_MODE, DELETE_MODE, FALSE, import_file_list_store, import_filename_column, IMPORT_FILENAME_COLUMN, import_filename_renderer, import_geom_column, import_geom_column_renderer, IMPORT_GEOMETRY_COLUMN, import_mode_column, IMPORT_MODE_COLUMN, import_mode_renderer, IMPORT_N_COLUMNS, import_remove_column, import_remove_renderer, import_schema_column, IMPORT_SCHEMA_COLUMN, import_schema_renderer, import_srid_column, IMPORT_SRID_COLUMN, import_srid_renderer, import_table_column, IMPORT_TABLE_COLUMN, import_table_renderer, import_tree, loader_mode_combo, LOADER_MODE_COMBO_COLUMNS, loader_mode_combo_list, LOADER_MODE_COMBO_OPTION_CHAR, LOADER_MODE_COMBO_TEXT, pgui_action_handle_file_drop(), pgui_action_handle_file_remove(), pgui_action_handle_loader_edit(), pgui_action_handle_tree_combo(), pgui_action_open_file_dialog(), PREPARE_MODE, and TRUE.

Referenced by pgui_create_main_window().

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