00001 #ifdef HAVE_CONFIG_H 00002 # include <config.h> 00003 #endif 00004 00005 #include <gnome.h> 00006 00007 #include "callbacks.h" 00008 #include "interface.h" 00009 #include "support.h" 00010 00011 #include "fmaps.h" 00012 00013 #include "gtkfmaps.h" 00014 00015 #ifndef LIBPQ_H 00016 # include "libpq-fe.h" 00017 # define LIBPQ_H 00018 #endif 00019 00020 void 00021 FM_Display_Table (GtkWidget *tablewindow, 00022 gchar *tablename) 00023 { 00024 00025 gchar *buffer; 00026 gchar **text=NULL; 00027 PGresult *qryResult; 00028 gint nfields; 00029 gint nbtuples; 00030 gint fieldsize=0; 00031 gint i; 00032 gint j; 00033 GtkWidget *TableWindow_clist_browse; 00034 GtkWidget *TableWindow_scrolledwindow; 00035 GtkWidget **label; 00036 00037 TableWindow_scrolledwindow=lookup_widget(tablewindow,"TableWindow_scrolledwindow"); 00038 00039 buffer=g_strdup_printf("SELECT * from %s ",tablename); 00040 qryResult = PQexec(conn,buffer); 00041 g_free(buffer); 00042 00043 nfields=PQnfields(qryResult); 00044 00045 TableWindow_clist_browse = gtk_clist_new (nfields); 00046 gtk_widget_ref (TableWindow_clist_browse); 00047 gtk_object_set_data_full (GTK_OBJECT (tablewindow), "TableWindow_clist_browse", TableWindow_clist_browse, 00048 (GtkDestroyNotify) gtk_widget_unref); 00049 gtk_widget_show (TableWindow_clist_browse); 00050 gtk_container_add (GTK_CONTAINER (TableWindow_scrolledwindow), TableWindow_clist_browse); 00051 gtk_clist_column_titles_show (GTK_CLIST (TableWindow_clist_browse)); 00052 00053 label=g_malloc(sizeof(gpointer)*nfields); 00054 00055 for (i=0;i<nfields;i++) 00056 { 00057 buffer=PQfname(qryResult,i); 00058 00059 label[i] = gtk_label_new (buffer); 00060 gtk_widget_ref (label[i]); 00061 gtk_object_set_data_full (GTK_OBJECT (tablewindow), buffer, label[i], 00062 (GtkDestroyNotify) gtk_widget_unref); 00063 gtk_widget_show (label[i]); 00064 gtk_clist_set_column_widget (GTK_CLIST (TableWindow_clist_browse), i, label[i]); 00065 fieldsize=PQfsize(qryResult,i); 00066 if (fieldsize==-1) 00067 { 00068 fieldsize=25; 00069 } 00070 gtk_clist_set_column_width (GTK_CLIST (TableWindow_clist_browse), i, fieldsize*10); 00071 00072 } 00073 00074 nbtuples = PQntuples(qryResult); 00075 for (i=0;i<nbtuples;i++) 00076 { 00077 text=g_malloc(sizeof(gpointer)*nfields); 00078 for (j=0;j<nfields;j++) 00079 { 00080 text[j] = PQgetvalue(qryResult,i,j); 00081 } 00082 gtk_clist_append(GTK_CLIST(TableWindow_clist_browse),text); 00083 g_free(text); 00084 } 00085 00086 PQclear(qryResult); 00087 return; 00088 }