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 }