r16178 - gnucash/branches/csv-import/src/import-export/csv - Experimented with hbox above treeview containing comboboxes

Benjamin Sperisen lasindi at cvs.gnucash.org
Mon Jun 18 10:23:54 EDT 2007


Author: lasindi
Date: 2007-06-18 10:23:49 -0400 (Mon, 18 Jun 2007)
New Revision: 16178
Trac: http://svn.gnucash.org/trac/changeset/16178

Modified:
   gnucash/branches/csv-import/src/import-export/csv/gnc-csv-import.c
   gnucash/branches/csv-import/src/import-export/csv/gnc-csv-preview-dialog.glade
Log:
Experimented with hbox above treeview containing comboboxes


Modified: gnucash/branches/csv-import/src/import-export/csv/gnc-csv-import.c
===================================================================
--- gnucash/branches/csv-import/src/import-export/csv/gnc-csv-import.c	2007-06-18 02:49:55 UTC (rev 16177)
+++ gnucash/branches/csv-import/src/import-export/csv/gnc-csv-import.c	2007-06-18 14:23:49 UTC (rev 16178)
@@ -65,6 +65,9 @@
   GtkCheckButton* sep_buttons[SEP_NUM_OF_TYPES];
   GtkCheckButton* custom_cbutton;
   GtkEntry* custom_entry;
+  GtkBox* typehbox;
+  GtkComboBox** typecombo_array;
+  gboolean fully_initialized;
 } GncCsvPreview;
 
 static void gnc_csv_preview_treeview(GncCsvPreview* preview, gboolean notEmpty);
@@ -124,6 +127,28 @@
   gtk_widget_hide((GtkWidget*)(preview->dialog));
 }
 
+static void treeview_resized(GtkWidget* widget, GtkAllocation* allocation, GncCsvPreview* preview)
+{
+  if(preview->fully_initialized)
+  {
+    int i, ncols = preview->parse_data->column_types->len;
+    printf("tree resized!\n");
+    for(i = 0; i < ncols; i++)
+    {
+      gint col_width;
+      col_width = gtk_tree_view_column_get_width(gtk_tree_view_get_column(preview->treeview, i));
+      printf("%d got width %d\n", i, col_width);
+      gtk_widget_set_size_request(GTK_WIDGET(preview->typecombo_array[i]), col_width, 0);
+    }
+  }
+}
+
+static void cbox_resized(GtkWidget* widget, GtkAllocation* allocation, GncCsvPreview* preview)
+{
+  printf("resized to nothing\n");
+  gtk_widget_set_size_request(widget, 0, 0);
+}
+
 static GncCsvPreview* gnc_csv_new_preview()
 {
   GncCsvPreview* preview = g_malloc(sizeof(GncCsvPreview));
@@ -137,8 +162,8 @@
   int i;
   GtkWidget *encselector = go_charmap_sel_new(GO_CHARMAP_SEL_TO_UTF8);
   GtkTable* enctable;
+  preview->fully_initialized = FALSE;
   preview->xml = gnc_glade_xml_new("gnc-csv-preview-dialog.glade", "dialog");
-  printf("xml is %p\n", preview->xml);
   preview->dialog = (GtkDialog*)(glade_xml_get_widget(preview->xml, "dialog"));
 
   for(i = 0; i < SEP_NUM_OF_TYPES; i++)
@@ -172,18 +197,31 @@
   g_signal_connect(G_OBJECT(cancel_button), "clicked",
                    G_CALLBACK(cancel_button_clicked), (gpointer)preview);
 
+  preview->typehbox = GTK_BOX(glade_xml_get_widget(preview->xml, "typehbox"));
   preview->treeview = (GtkTreeView*)(glade_xml_get_widget(preview->xml, "treeview"));
-  printf("treeview is %p \n", preview->treeview);
+  g_signal_connect(G_OBJECT(preview->treeview), "size-allocate",
+                   G_CALLBACK(treeview_resized), (gpointer)preview);
+
+  preview->typecombo_array = NULL;
   
+  /* TODO Free stuff */
   preview->approved = FALSE;
   return preview;
 }
 
+/*   testbox = GTK_COMBO_BOX(gtk_combo_box_new_text()); */
+/*   gtk_combo_box_append_text(testbox, "Hello"); */
+/*   gtk_box_pack_start(preview->typehbox, GTK_WIDGET(testbox), TRUE, TRUE, 5); */
+/*   gtk_widget_show_all(GTK_WIDGET(preview->typehbox)); */
 
 static void gnc_csv_preview_free(GncCsvPreview* preview)
 {
   g_object_unref(preview->xml);
   g_free(preview);
+  if(preview->typecombo_array != NULL)
+  {
+    g_free(preview->typecombo_array);
+  }
 }
 
 static void gnc_csv_preview_treeview(GncCsvPreview* preview, gboolean notEmpty)
@@ -199,12 +237,27 @@
   /* Clear out any exisiting columns. */
   if(notEmpty)
   {
+    GList *children, *children_begin;
     int size;
     do
     {
       GtkTreeViewColumn* col = gtk_tree_view_get_column(preview->treeview, 0);
       size = gtk_tree_view_remove_column(preview->treeview, col);
     } while(size);
+    children = children_begin = gtk_container_get_children(GTK_CONTAINER(preview->typehbox));
+    while(children != NULL)
+    {
+      gtk_container_remove(GTK_CONTAINER(preview->typehbox), GTK_WIDGET(children->data));
+      /* TODO free stuff */
+      children = children->next;
+    }
+    g_list_free(children_begin);
+
+    for(i = 0; i < ncols; i++)
+    {
+      g_free(preview->typecombo_array[i]);
+    }
+    g_free(preview->typecombo_array);
   }
   
   /* TODO free types */
@@ -226,9 +279,25 @@
     gtk_tree_view_insert_column_with_attributes(preview->treeview,
                                                 -1, "", renderer, "text", i, NULL);
   }
-  
+
   gtk_tree_view_set_model(preview->treeview, GTK_TREE_MODEL(store));
   g_object_unref(GTK_TREE_MODEL(store));
+
+  gtk_widget_show_all(GTK_WIDGET(preview->treeview));
+
+  preview->typecombo_array = g_malloc(sizeof(GtkComboBox*) * ncols);
+
+  for(i = 0; i < ncols; i++)
+  {
+    preview->typecombo_array[i] = GTK_COMBO_BOX(gtk_combo_box_new_text());
+    g_signal_connect(G_OBJECT(preview->treeview), "size-allocate",
+                     G_CALLBACK(cbox_resized), (gpointer)preview);
+    gtk_combo_box_append_text(preview->typecombo_array[i], "Hello");
+    gtk_box_pack_start(preview->typehbox, GTK_WIDGET(preview->typecombo_array[i]), FALSE, TRUE, 0);
+  }
+
+  gtk_widget_show_all(GTK_WIDGET(preview->typehbox));
+  preview->fully_initialized = TRUE;
 }
 
 static int gnc_csv_preview(GncCsvPreview* preview, GncCsvParseData* parse_data)
@@ -382,7 +451,6 @@
     parse_data->column_types->data[0] = GNC_CSV_DATE;
     parse_data->column_types->data[1] = GNC_CSV_DESCRIPTION;
     parse_data->column_types->data[2] = GNC_CSV_AMOUNT;
-    printf("1ctype 1: %d\n", parse_data->column_types->data[0]);
 
     preview = gnc_csv_new_preview();
     if(gnc_csv_preview(preview, parse_data))

Modified: gnucash/branches/csv-import/src/import-export/csv/gnc-csv-preview-dialog.glade
===================================================================
--- gnucash/branches/csv-import/src/import-export/csv/gnc-csv-preview-dialog.glade	2007-06-18 02:49:55 UTC (rev 16177)
+++ gnucash/branches/csv-import/src/import-export/csv/gnc-csv-preview-dialog.glade	2007-06-18 14:23:49 UTC (rev 16178)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.0 on Sat Jun 16 19:20:02 2007 by lasindi at pi-->
+<!--Generated with glade3 3.2.0 on Mon Jun 18 07:54:27 2007 by lasindi at pi-->
 <glade-interface>
   <widget class="GtkDialog" id="dialog">
     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>



More information about the gnucash-changes mailing list