From 36a28cdfdb746aa65b1223044f11b5c7ac0387b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nirgal=20Vourg=C3=A8re?= Date: Thu, 4 Jul 2013 12:05:40 +0200 Subject: [PATCH] Drop old gmdb from repository --- src/gmdb/Makefile.am | 16 - src/gmdb/code.xpm | 22 - src/gmdb/debug.c | 612 --------- src/gmdb/debug.xpm | 23 - src/gmdb/file.c | 61 - src/gmdb/form.c | 53 - src/gmdb/forms.xpm | 126 -- src/gmdb/gmdb.h | 58 - src/gmdb/gtkhlist.c | 2824 --------------------------------------- src/gmdb/gtkhlist.h | 147 -- src/gmdb/info.c | 89 -- src/gmdb/macro.c | 53 - src/gmdb/macros.xpm | 137 -- src/gmdb/main.c | 323 ----- src/gmdb/module.c | 53 - src/gmdb/pk.xpm | 24 - src/gmdb/query.c | 52 - src/gmdb/query.xpm | 46 - src/gmdb/report.c | 53 - src/gmdb/reports.xpm | 95 -- src/gmdb/sql.c | 284 ---- src/gmdb/table.c | 201 --- src/gmdb/table.xpm | 19 - src/gmdb/table_data.c | 96 -- src/gmdb/table_def.c | 124 -- src/gmdb/table_export.c | 259 ---- src/gmdb/util.c | 24 - 27 files changed, 5874 deletions(-) delete mode 100644 src/gmdb/Makefile.am delete mode 100644 src/gmdb/code.xpm delete mode 100644 src/gmdb/debug.c delete mode 100644 src/gmdb/debug.xpm delete mode 100644 src/gmdb/file.c delete mode 100644 src/gmdb/form.c delete mode 100644 src/gmdb/forms.xpm delete mode 100644 src/gmdb/gmdb.h delete mode 100644 src/gmdb/gtkhlist.c delete mode 100644 src/gmdb/gtkhlist.h delete mode 100644 src/gmdb/info.c delete mode 100644 src/gmdb/macro.c delete mode 100644 src/gmdb/macros.xpm delete mode 100644 src/gmdb/main.c delete mode 100644 src/gmdb/module.c delete mode 100644 src/gmdb/pk.xpm delete mode 100644 src/gmdb/query.c delete mode 100644 src/gmdb/query.xpm delete mode 100644 src/gmdb/report.c delete mode 100644 src/gmdb/reports.xpm delete mode 100644 src/gmdb/sql.c delete mode 100644 src/gmdb/table.c delete mode 100644 src/gmdb/table.xpm delete mode 100644 src/gmdb/table_data.c delete mode 100644 src/gmdb/table_def.c delete mode 100644 src/gmdb/table_export.c delete mode 100644 src/gmdb/util.c diff --git a/src/gmdb/Makefile.am b/src/gmdb/Makefile.am deleted file mode 100644 index c516f04..0000000 --- a/src/gmdb/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -if HAVE_GTK -bin_PROGRAMS = gmdb -include_HEADERS = gmdb.h gtkhlist.h debug.xpm forms.xpm macros.xpm pk.xpm \ - table.xpm query.xpm code.xpm reports.xpm -gmdb_SOURCES = debug.c file.c form.c gtkhlist.c info.c macro.c main.c \ - module.c query.c report.c sql.c table.c table_data.c table_def.c \ - table_export.c util.c -LIBS = $(GMDB_LIBS) @LEXLIB@ -INCLUDES = -I$(top_srcdir)/include $(GMDB_CFLAGS) -#LDADD = ../libmdb/libmdb.la -LDADD = ../libmdb/libmdb.la ../sql/libmdbsql.la -#if SQL -#gmdb_LDADD = ../libmdb/libmdb.la ../sql/libmdbsql.la -#endif - -endif diff --git a/src/gmdb/code.xpm b/src/gmdb/code.xpm deleted file mode 100644 index 0432bf4..0000000 --- a/src/gmdb/code.xpm +++ /dev/null @@ -1,22 +0,0 @@ -/* XPM */ -static char * code_xpm[] = { -"16 16 3 1", -" c None", -". c #000000", -"+ c #777777", -" ", -" ", -" .. ", -" .++. ", -" . . . ", -" . .. ..", -" . .+ +.", -".... . .+ +. .", -" . . .+. .", -" . .+ +.+ +.", -" . .. +. .+ ..", -" . . . . . ", -" ", -" ", -" ", -" "}; diff --git a/src/gmdb/debug.c b/src/gmdb/debug.c deleted file mode 100644 index be71d3e..0000000 --- a/src/gmdb/debug.c +++ /dev/null @@ -1,612 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" -#include "debug.xpm" - -extern GtkWidget *app; -extern MdbHandle *mdb; - -typedef struct GMdbDebugTab { - GtkWidget *ctree; - GtkWidget *textbox; - GtkWidget *entry; - GtkWidget *pglabel; - int page_num; - int max_page; - int linesz; - GdkFont *font; - GdkColor black; - GdkColor white; -} GMdbDebugTab; - -typedef struct GMdbDebugRange { - gint start_byte; - gint end_byte; -} GMdbDebugRange; - -GMdbDebugTab *dbug; - -void gmdb_debug_redraw(GtkWidget *textbox, GdkFont *font, - GdkColor *fg, GdkColor *bg, int start_byte, int end_byte); -GtkCTreeNode *gmdb_debug_add_item(GMdbDebugTab *dbug, GtkCTreeNode *parent, gchar *text, int start, int end); -void gmdb_debug_clear(GMdbDebugTab *dbug); -void gmdb_debug_dissect(GMdbDebugTab *dbug, char *fbuf, int offset, int len); -static guint16 get_uint16(unsigned char *c); -static guint32 get_uint24(unsigned char *c); -static guint32 get_uint32(unsigned char *c); - -/* value to string stuff */ -typedef struct GMdbValStr { - gint value; - gchar *string; -} GMdbValStr; - -GMdbValStr table_types[] = { - { 0x4e, "System Table" }, - { 0x53, "User Table" }, - { 0, NULL } -}; -GMdbValStr column_types[] = { - { 0x01, "boolean" }, - { 0x02, "byte" }, - { 0x03, "int" }, - { 0x04, "longint" }, - { 0x05, "money" }, - { 0x06, "float" }, - { 0x07, "double" }, - { 0x08, "short datetime" }, - { 0x09, "binary" }, - { 0x0a, "text" }, - { 0x0b, "OLE" }, - { 0x0c, "memo/hyperlink" }, - { 0x0d, "Unknown" }, - { 0x0f, "GUID" }, - { 0, NULL } -}; -GMdbValStr object_types[] = { - { 0x00, "Database Definition Page" }, - { 0x01, "Data Page" }, - { 0x02, "Table Definition Page" }, - { 0x03, "Index Page" }, - { 0x03, "Leaf Index Page" }, - { 0, NULL } -}; -/* callbacks */ -void -gmdb_debug_select_cb(GtkCTree *tree, GList *node, gint column, GMdbDebugTab *dbug) -{ -GMdbDebugRange *range; -int start_row, end_row; -int start_col, end_col; -int i; - - range = gtk_ctree_node_get_row_data(tree, GTK_CTREE_NODE(node)); - /* container node or otherwise non-represented in the data */ - if (range->start_byte == -1 || range->end_byte == -1) return; - - start_row = range->start_byte / 16; - end_row = range->end_byte / 16; - start_col = 8 + (range->start_byte % 16) * 3; - end_col = 8 + (range->end_byte % 16) * 3; - - /* freeze/thaw needed because of redrawing glitch...only part of text had - ** correct colors, rest would come back on resize. */ - gtk_text_freeze(GTK_TEXT(dbug->textbox)); - if (start_row == end_row) { - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->white, &dbug->black, - dbug->linesz * start_row + start_col, - dbug->linesz * start_row + end_col + 2); - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->white, &dbug->black, - dbug->linesz * start_row + 59 + (range->start_byte % 16), - dbug->linesz * start_row + 59 + (range->end_byte % 16) + 1); - } else { - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->white, &dbug->black, - dbug->linesz * start_row + start_col, - /* 55 = 8 (addr) + 15 (bytes) * 3 (%02x " ") + 2 (last byte) */ - dbug->linesz * start_row + 55); - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->white, &dbug->black, - dbug->linesz * start_row + 59 + (range->start_byte % 16), - dbug->linesz * start_row + 75); - for (i=start_row + 1; i < end_row; i++) { - gmdb_debug_redraw(dbug->textbox, dbug->font, - &dbug->white, &dbug->black, - dbug->linesz * i + 8, dbug->linesz * i + 55); - gmdb_debug_redraw(dbug->textbox, dbug->font, - &dbug->white, &dbug->black, - dbug->linesz * i + 59, dbug->linesz * i + 75); - } - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->white, &dbug->black, - dbug->linesz * end_row + 8, - dbug->linesz * end_row + end_col + 2); - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->white, &dbug->black, - dbug->linesz * end_row + 59, - dbug->linesz * end_row + 59 + (range->end_byte % 16) + 1); - } - gtk_text_thaw(GTK_TEXT(dbug->textbox)); -} -void -gmdb_debug_unselect_cb(GtkCTree *tree, GList *node, gint column, GMdbDebugTab *dbug) -{ -GMdbDebugRange *range; -int start_row, end_row; -int start_col, end_col; -int i; - - range = gtk_ctree_node_get_row_data(tree, GTK_CTREE_NODE(node)); - /* container node or otherwise non-represented in the data */ - if (range->start_byte == -1 || range->end_byte == -1) return; - - start_row = range->start_byte / 16; - end_row = range->end_byte / 16; - start_col = 8 + (range->start_byte % 16) * 3; - end_col = 8 + (range->end_byte % 16) * 3; - - if (start_row == end_row) { - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->black, &dbug->white, - dbug->linesz * start_row + start_col, - dbug->linesz * start_row + end_col + 2); - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->black, &dbug->white, - dbug->linesz * start_row + 59 + (range->start_byte % 16), - dbug->linesz * start_row + 59 + (range->end_byte % 16) + 1); - } else { - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->black, &dbug->white, - dbug->linesz * start_row + start_col, - /* 55 = 8 (addr) + 15 (bytes) * 3 (%02x " ") + 2 (last byte) */ - dbug->linesz * start_row + 55); - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->black, &dbug->white, - dbug->linesz * start_row + 59 + (range->start_byte % 16), - dbug->linesz * start_row + 75); - for (i=start_row + 1; i < end_row; i++) { - gmdb_debug_redraw(dbug->textbox, dbug->font, - &dbug->black, &dbug->white, - dbug->linesz * i + 8, dbug->linesz * i + 55); - gmdb_debug_redraw(dbug->textbox, dbug->font, - &dbug->black, &dbug->white, - dbug->linesz * i + 59, dbug->linesz * i + 75); - } - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->black, &dbug->white, - dbug->linesz * end_row + 8, - dbug->linesz * end_row + end_col + 2); - gmdb_debug_redraw(dbug->textbox, dbug->font, &dbug->black, &dbug->white, - dbug->linesz * end_row + 59, - dbug->linesz * end_row + 59 + (range->end_byte % 16) + 1); - } -} -void -gmdb_debug_display_cb(GtkWidget *w, GMdbDebugTab *dbug) -{ -int page; -off_t pos; -unsigned char *fbuf; -unsigned char *tbuf; -int i,j; -int length; -char line[80]; -char field[10]; - - gmdb_debug_clear(dbug); - - page = atol(gtk_entry_get_text(GTK_ENTRY(dbug->entry))); - if (page>dbug->max_page || page<0) { - gmdb_info_msg("Page entered is outside valid page range."); - } - - - pos = lseek(mdb->fd, 0, SEEK_CUR); - lseek(mdb->fd, page * mdb->pg_size, SEEK_SET); - - fbuf = (unsigned char *) g_malloc(mdb->pg_size); - tbuf = (unsigned char *) g_malloc0( (mdb->pg_size / 16) * 80); - length = read(mdb->fd, fbuf, mdb->pg_size); - if (lengthpg_size) { - } - i = 0; - while (ilinesz) dbug->linesz = strlen(line); - } - gtk_text_insert (GTK_TEXT (dbug->textbox), dbug->font, - &dbug->black, &dbug->white, - tbuf, strlen(tbuf)); - //gtk_editable_select_region(GTK_EDITABLE(dbug->textbox), 9, 15); - gmdb_debug_dissect(dbug, fbuf, 0, length); - g_free(fbuf); - g_free(tbuf); -} - -/* functions */ -gchar * -gmdb_val_to_str(GMdbValStr *valstr, gint val) -{ -gchar *strptr; -int i = 0; - - do { - strptr = valstr[i].string; - if (val == valstr[i].value) { - return strptr; - } - i++; - } while (*strptr); - return "unknown"; -} -static guint16 -get_uint16(unsigned char *c) -{ -guint16 i; - -i =c[1]; i<<=8; -i+=c[0]; - -return i; -} -static guint32 -get_uint24(unsigned char *c) -{ -guint32 l; - -l =c[2]; l<<=8; -l+=c[1]; l<<=8; -l+=c[0]; - -return l; -} -static guint32 -get_uint32(unsigned char *c) -{ -guint32 l; - -l =c[3]; l<<=8; -l+=c[2]; l<<=8; -l+=c[1]; l<<=8; -l+=c[0]; - -return l; -} -void -gmdb_debug_dissect_column(GMdbDebugTab *dbug, GtkCTreeNode *parent, char *fbuf, int offset) -{ -gchar str[100]; -GtkCTreeNode *node; - - snprintf(str, 100, "Column Type: 0x%02x (%s)", fbuf[offset], - gmdb_val_to_str(column_types, fbuf[offset])); - gmdb_debug_add_item(dbug, parent, str, offset, offset); - snprintf(str, 100, "Column #: %d", get_uint16(&fbuf[offset+1])); - gmdb_debug_add_item(dbug, parent, str, offset+1, offset+2); - snprintf(str, 100, "VarCol Offset: %d", get_uint16(&fbuf[offset+3])); - gmdb_debug_add_item(dbug, parent, str, offset+3, offset+4); - snprintf(str, 100, "Unknown", get_uint32(&fbuf[offset+5])); - gmdb_debug_add_item(dbug, parent, str, offset+5, offset+8); - snprintf(str, 100, "Unknown", get_uint32(&fbuf[offset+9])); - gmdb_debug_add_item(dbug, parent, str, offset+9, offset+12); - snprintf(str, 100, "Variable Column: %s", - fbuf[offset+13] & 0x01 ? "No" : "Yes"); - gmdb_debug_add_item(dbug, parent, str, offset+13, offset+13); - snprintf(str, 100, "Fixed Col Offset: %d", get_uint16(&fbuf[offset+14])); - gmdb_debug_add_item(dbug, parent, str, offset+14, offset+15); - snprintf(str, 100, "Column Length: %d", get_uint16(&fbuf[offset+16])); - gmdb_debug_add_item(dbug, parent, str, offset+16, offset+17); -} -void -gmdb_debug_dissect_index1(GMdbDebugTab *dbug, GtkCTreeNode *parent, char *fbuf, int offset) -{ -gchar str[100]; -GtkCTreeNode *node; - - snprintf(str, 100, "Unknown"); - gmdb_debug_add_item(dbug, parent, str, offset, offset+3); - snprintf(str, 100, "Rows in Index: %lu", get_uint32(&fbuf[offset+4])); - gmdb_debug_add_item(dbug, parent, str, offset+4, offset+7); -} -void -gmdb_debug_add_page_ptr(GMdbDebugTab *dbug, GtkCTreeNode *parent, char *fbuf, const char *label, int offset) -{ -gchar str[100]; -GtkCTreeNode *node; - - snprintf(str, 100, "%s", label); - node = gmdb_debug_add_item(dbug, parent, str, offset, offset+3); - - snprintf(str, 100, "Row Number: %u", fbuf[offset]); - gmdb_debug_add_item(dbug, node, str, offset, offset); - snprintf(str, 100, "Page Number: %lu", get_uint24(&fbuf[offset+1])); - gmdb_debug_add_item(dbug, node, str, offset+1, offset+3); -} -void -gmdb_debug_dissect_tabledef_pg(GMdbDebugTab *dbug, char *fbuf, int offset, int len) -{ -gchar str[100]; -guint32 i, num_idx, num_cols; -int newbase; -GtkCTreeNode *node, *container; - - snprintf(str, 100, "Next TDEF Page: 0x%06x (%lu)", - get_uint32(&fbuf[offset+4]), get_uint32(&fbuf[offset+4])); - gmdb_debug_add_item(dbug, NULL, str, offset+4, offset+7); - snprintf(str, 100, "Length of Data: %lu", get_uint32(&fbuf[offset+8])); - gmdb_debug_add_item(dbug, NULL, str, offset+8, offset+11); - snprintf(str, 100, "# of Records: %lu", get_uint32(&fbuf[offset+12])); - gmdb_debug_add_item(dbug, NULL, str, offset+12, offset+15); - snprintf(str, 100, "Autonumber Value: %lu", get_uint32(&fbuf[offset+16])); - gmdb_debug_add_item(dbug, NULL, str, offset+16, offset+19); - snprintf(str, 100, "Table Type: 0x%02x (%s)", fbuf[offset+20], - gmdb_val_to_str(table_types, fbuf[offset+20])); - gmdb_debug_add_item(dbug, NULL, str, offset+20, offset+20); - num_cols = get_uint16(&fbuf[offset+21]); - snprintf(str, 100, "# of Columns: %u", num_cols); - gmdb_debug_add_item(dbug, NULL, str, offset+21, offset+22); - snprintf(str, 100, "# of VarCols: %u", - get_uint16(&fbuf[offset+23])); - gmdb_debug_add_item(dbug, NULL, str, offset+23, offset+24); - snprintf(str, 100, "# of Columns: %u", - get_uint16(&fbuf[offset+25])); - gmdb_debug_add_item(dbug, NULL, str, offset+25, offset+26); - snprintf(str, 100, "# of Index Entries: %lu", - get_uint32(&fbuf[offset+27])); - gmdb_debug_add_item(dbug, NULL, str, offset+27, offset+30); - - num_idx = get_uint32(&fbuf[offset+31]); - snprintf(str, 100, "# of Real Indices: %lu", num_idx); - - gmdb_debug_add_item(dbug, NULL, str, offset+31, offset+34); - gmdb_debug_add_page_ptr(dbug, NULL, fbuf, "Used Pages Pointer", offset+35); - - container = gmdb_debug_add_item(dbug, NULL, "Index Entries", -1, -1); - for (i=0;ictree, NULL, gmdb_clear_node_cb, NULL); - -/* - node = gtk_ctree_node_nth(GTK_CTREE(dbug->ctree), 0); - data = gtk_ctree_node_get_row_data(GTK_CTREE(dbug->ctree), node); - g_free(data); - gtk_ctree_remove_node(GTK_CTREE(dbug->ctree), node); -*/ - - /* call delete text last because remove_node fires unselect signal */ - gtk_editable_delete_text(GTK_EDITABLE(dbug->textbox),0, -1); -} - -GtkCTreeNode * -gmdb_debug_add_item(GMdbDebugTab *dbug, GtkCTreeNode *parent, gchar *text, int start, int end) -{ -gchar *nodetext[2]; -GtkCTreeNode *node; -GMdbDebugRange *range; - - nodetext[0] = text; - nodetext[1] = "0"; - node = gtk_ctree_insert_node(GTK_CTREE(dbug->ctree), parent, NULL, nodetext, 0, NULL, NULL, NULL, NULL, FALSE, FALSE); - range = g_malloc(sizeof(GMdbDebugRange)); - range->start_byte = start; - range->end_byte = end; - gtk_ctree_node_set_row_data(GTK_CTREE(dbug->ctree), node, range); - - return node; -} - -void -gmdb_debug_redraw(GtkWidget *textbox, - GdkFont *font, GdkColor *fg, GdkColor *bg, - int start_byte, int end_byte) -{ -gchar *text; - - gtk_text_set_point(GTK_TEXT(textbox), start_byte); - text = gtk_editable_get_chars(GTK_EDITABLE(textbox), start_byte, end_byte); - gtk_text_forward_delete(GTK_TEXT(textbox), end_byte - start_byte); - gtk_text_insert (GTK_TEXT (textbox), font, fg, bg, text, strlen(text)); - g_free(text); -} - -void -gmdb_debug_tab_new(GtkWidget *notebook) -{ -GtkWidget *tabbox; -GtkWidget *label; -GtkWidget *label1; -GtkWidget *button; -GtkWidget *pixmapwid; -GtkWidget *frame; -GtkWidget *hbox; -GtkWidget *hpane; -GtkWidget *vbox; -GtkWidget *scroll; -GtkWidget *scroll2; -GdkPixmap *pixmap; -GdkBitmap *mask; -GdkColormap *cmap; - - dbug = g_malloc0(sizeof(GMdbDebugTab)); - dbug->max_page = -1; - dbug->font = gdk_font_load("-*-*-medium-r-normal-*-10-*-*-*-m-*-*-*"); - cmap = gdk_colormap_get_system(); - gdk_color_white(cmap, &dbug->white); - gdk_color_black(cmap, &dbug->black); - - vbox = gtk_vbox_new (FALSE,5); - gtk_widget_show (vbox); - - hbox = gtk_hbox_new (FALSE,5); - gtk_widget_show (hbox); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 10); - - label1 = gtk_label_new ("Page Number"); - gtk_widget_show (label1); - gtk_box_pack_start (GTK_BOX (hbox), label1, FALSE, FALSE, 10); - - dbug->pglabel = gtk_label_new (":"); - gtk_widget_show (dbug->pglabel); - gtk_box_pack_start (GTK_BOX (hbox), dbug->pglabel, FALSE, FALSE, 0); - - dbug->entry = gtk_entry_new (); - gtk_widget_show (dbug->entry); - gtk_box_pack_start (GTK_BOX (hbox), dbug->entry, TRUE, TRUE, 0); - gtk_signal_connect ( GTK_OBJECT (dbug->entry), - "activate", GTK_SIGNAL_FUNC (gmdb_debug_display_cb), dbug); - - button = gtk_button_new_with_label ("Display"); - gtk_widget_show (button); - gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); - - gtk_signal_connect ( GTK_OBJECT (button), - "clicked", GTK_SIGNAL_FUNC (gmdb_debug_display_cb), dbug); - - hpane = gtk_hpaned_new (); - gtk_paned_set_position(GTK_PANED(hpane), 200); - gtk_paned_set_gutter_size(GTK_PANED(hpane), 12); - gtk_widget_show(hpane); - gtk_box_pack_start (GTK_BOX (vbox), hpane, TRUE, TRUE, 10); - - scroll = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_widget_show (scroll); - gtk_container_add(GTK_CONTAINER(hpane), scroll); - - dbug->ctree = gtk_ctree_new (1, 0); - gtk_widget_show (dbug->ctree); - gtk_container_add (GTK_CONTAINER (scroll), dbug->ctree); - - gtk_signal_connect ( GTK_OBJECT (dbug->ctree), - "tree-select-row", GTK_SIGNAL_FUNC (gmdb_debug_select_cb), dbug); - gtk_signal_connect ( GTK_OBJECT (dbug->ctree), - "tree-unselect-row", GTK_SIGNAL_FUNC (gmdb_debug_unselect_cb), dbug); - - frame = gtk_frame_new (NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); - gtk_container_set_border_width (GTK_CONTAINER (frame), 0); - //gtk_widget_set_usize (frame, 100, 75); - gtk_widget_show (frame); - gtk_container_add (GTK_CONTAINER (hpane), frame); - - scroll2 = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll2), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show (scroll2); - gtk_container_add(GTK_CONTAINER(frame), scroll2); - - dbug->textbox = gtk_text_new (NULL,NULL); - gtk_widget_show (dbug->textbox); - gtk_container_add(GTK_CONTAINER(scroll2), dbug->textbox); - - /* set selection callback for list */ - //gtk_signal_connect ( GTK_OBJECT (table_hlist), - // "select-child", GTK_SIGNAL_FUNC (gmdb_table_select_cb), NULL); - - /* create a picture/label box and use for tab */ - tabbox = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm_d( NULL, - gtk_widget_get_colormap(app), &mask, NULL, debug_xpm); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (tabbox), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new ("Debug"); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (tabbox), label, FALSE, TRUE, 0); - - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, tabbox); - - if (mdb) gmdb_debug_init(mdb); -} - -void gmdb_debug_init(MdbHandle *mdb) -{ -struct stat st; -char tmpstr[100]; - - assert( fstat(mdb->fd, &st)!=-1 ); - dbug->max_page = st.st_size/mdb->pg_size; - sprintf(tmpstr, "(0-%d):", dbug->max_page); - gtk_label_set_text(GTK_LABEL(dbug->pglabel), tmpstr); - gtk_widget_grab_focus(GTK_WIDGET(dbug->entry)); -} diff --git a/src/gmdb/debug.xpm b/src/gmdb/debug.xpm deleted file mode 100644 index dcec39c..0000000 --- a/src/gmdb/debug.xpm +++ /dev/null @@ -1,23 +0,0 @@ -/* XPM */ -static char * debug_xpm[] = { -"16 16 4 1", -" c None", -". c #ED2D2D", -"+ c #635757", -"@ c #000000", -" ", -" ..... ", -" ... ... ", -" .. +@+ .. ", -" .... @@@ .. ", -" .@+..+@+ +@. ", -".. @+..@@ +@ .. ", -". @@..@@@ . ", -". @@..@ . ", -". @@@@@@..@@@ . ", -".. @@@@.. .. ", -" . @@@@@@.. . ", -" ..@+ @@@ +... ", -" .. .. ", -" ... ... ", -" ..... "}; diff --git a/src/gmdb/file.c b/src/gmdb/file.c deleted file mode 100644 index c4e9cc1..0000000 --- a/src/gmdb/file.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "gmdb.h" -#include - -GtkWidget *file_selector; -MdbHandle *mdb; -extern int main_show_debug; - -void -gmdb_file_open(gchar *file_path) -{ - mdb = mdb_open(file_path, MDB_NOFLAGS); - if (!mdb) { - gmdb_info_msg("Unable to open file."); - return; - } - sql->mdb = mdb; - mdb_read_catalog(mdb, MDB_TABLE); - gmdb_table_populate(mdb); - gmdb_query_populate(mdb); - gmdb_form_populate(mdb); - gmdb_report_populate(mdb); - gmdb_macro_populate(mdb); - gmdb_module_populate(mdb); - if (main_show_debug) gmdb_debug_init(mdb); -} - -void -gmdb_file_open_cb(GtkWidget *selector, gpointer data) -{ -gchar *file_path; - file_path = gtk_file_selection_get_filename (GTK_FILE_SELECTION(file_selector)); - gmdb_file_open(file_path); -} - - -void -gmdb_file_select_cb(GtkWidget *button, gpointer data) -{ - /*just print a string so that we know we got there*/ - file_selector = gtk_file_selection_new("Please select a database."); - - gtk_signal_connect ( - GTK_OBJECT (GTK_FILE_SELECTION(file_selector)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gmdb_file_open_cb), NULL); - - gtk_signal_connect_object ( GTK_OBJECT ( - GTK_FILE_SELECTION(file_selector)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) file_selector); - - gtk_signal_connect_object ( - GTK_OBJECT (GTK_FILE_SELECTION(file_selector)->cancel_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) file_selector); - - gtk_widget_show (file_selector); -} -void -gmdb_file_close_cb(GtkWidget *button, gpointer data) -{ -} diff --git a/src/gmdb/form.c b/src/gmdb/form.c deleted file mode 100644 index c3d2614..0000000 --- a/src/gmdb/form.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -GtkWidget *form_hlist; -extern GtkWidget *app; - -void -gmdb_form_add_icon(gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm( NULL, - gtk_widget_get_colormap(app), &mask, NULL, "table.xpm"); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show_all (li); - gtk_hlist_append_items(GTK_HLIST(form_hlist), glist); -} - -void gmdb_form_populate(MdbHandle *mdb) -{ -int i; -MdbCatalogEntry *entry; - - /* loop over each entry in the catalog */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - - /* if it's a form */ - if (entry->object_type == MDB_FORM) { - /* add table to tab */ - gmdb_form_add_icon(entry->object_name); - } /* if MDB_FORM */ - } /* for */ -} diff --git a/src/gmdb/forms.xpm b/src/gmdb/forms.xpm deleted file mode 100644 index a7c32ae..0000000 --- a/src/gmdb/forms.xpm +++ /dev/null @@ -1,126 +0,0 @@ -/* XPM */ -static char * forms_xpm[] = { -"16 16 107 2", -" c None", -". c #585858", -"+ c #C47D41", -"@ c #FACB8D", -"# c #DEDEDE", -"$ c #C37B40", -"% c #FAC78C", -"& c #FE8F0C", -"* c #FFFFFF", -"= c #CECECE", -"- c #FAC689", -"; c #FE880E", -"> c #FE8801", -", c #FCFCFC", -"' c #FEFEFE", -") c #E5D6C8", -"! c #FAC98F", -"~ c #FD8810", -"{ c #FE8803", -"] c #EC7A03", -"^ c #FDFDFD", -"/ c #E7DACC", -"( c #FD850C", -"_ c #FE8703", -": c #E47604", -"< c #A54E04", -"[ c #ECDAD2", -"} c #D38F5D", -"| c #F8C58D", -"1 c #FE8406", -"2 c #FE8804", -"3 c #A34C04", -"4 c #1C0C01", -"5 c #EDEDED", -"6 c #F4D6C1", -"7 c #FFE2CD", -"8 c #EB9260", -"9 c #FA800A", -"0 c #E47702", -"a c #A04A04", -"b c #210F01", -"c c #DFDFDF", -"d c #EBB698", -"e c #FEE5CA", -"f c #F1B492", -"g c #D37043", -"h c #CF6524", -"i c #A04B0A", -"j c #231001", -"k c #E4E0D8", -"l c #EFD0B5", -"m c #FFD1B1", -"n c #C67E5D", -"o c #87542B", -"p c #5C4733", -"q c #241008", -"r c #303030", -"s c #FDFDFC", -"t c #EFB493", -"u c #F7C9AC", -"v c #C67D5A", -"w c #825234", -"x c #332E23", -"y c #474544", -"z c #BCAB90", -"A c #DCD0BF", -"B c #897862", -"C c #A36F52", -"D c #4C392C", -"E c #5B5957", -"F c #B0B0AF", -"G c #BCA88A", -"H c #FAF6F2", -"I c #A09380", -"J c #1A1812", -"K c #534F4C", -"L c #9F9C96", -"M c #C4BFB9", -"N c #DAD6D3", -"O c #E9D6BA", -"P c #BCA685", -"Q c #DAC8AB", -"R c #736A5A", -"S c #9C9488", -"T c #BDB4A4", -"U c #EEDFC8", -"V c #ECDAC0", -"W c #E9D6B9", -"X c #E7D1B0", -"Y c #BCA37F", -"Z c #F4EDE1", -"` c #F2E8D8", -" . c #F0E4D0", -".. c #EEDEC8", -"+. c #ECDABF", -"@. c #E9D6B8", -"#. c #E5CCA7", -"$. c #BCA178", -"%. c #C6C1B6", -"&. c #C4BDAC", -"*. c #C3B8A3", -"=. c #C2B39A", -"-. c #C0AF91", -";. c #BFAA88", -">. c #BEA57F", -",. c #BDA076", -"'. c #BC9E73", -" . . . . . . . . . . . . + @ ", -" . # # # # # # # # # $ % & ", -" . # * * * # * * * = $ - ; > ", -" . # * * * # , ' ) $ ! ~ { ] ", -" . # # # # # ^ / $ ! ( _ : < ", -" . # * * * # [ } | 1 2 : 3 4 ", -" . # * * * 5 6 7 8 9 0 a b ", -" . c # # # d e f g h i j ", -" . # * * k l m n o p q r ", -" . # * s t u v w x y z r ", -" . # # A B C D E F F G r ", -" . # H I J K L M N O P r ", -" . # Q R S T U V W X Y r ", -" . # Z ` ...+.@.X #.$.r ", -" . %.%.&.*.=.-.;.>.,.'.r ", -" . r r r r r r r r r r r "}; diff --git a/src/gmdb/gmdb.h b/src/gmdb/gmdb.h deleted file mode 100644 index 731ca81..0000000 --- a/src/gmdb/gmdb.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef _gmdb_h_ -#define _gmdb_h_ - -#include -#include -#include -#include -#include -#ifdef HAVE_GNOME -#include -#endif -#include "mdbtools.h" -#include "mdbsql.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -void gmdb_info_msg(gchar *message); - -GtkWidget *gmdb_info_new(); - -GtkWidget *gmdb_table_data_new(MdbCatalogEntry *entry); -GtkWidget *gmdb_table_def_new(MdbCatalogEntry *entry); -GtkWidget *gmdb_table_export_new(MdbCatalogEntry *entry); - -void gmdb_file_select_cb(GtkWidget *w, gpointer data); -void gmdb_file_open_cb(GtkWidget *w, gpointer data); -void gmdb_file_close_cb(GtkWidget *w, gpointer data); -void gmdb_file_open(gchar *file_path); - -void gmdb_sql_new_window_cb(GtkWidget *w, gpointer data); - -void gmdb_table_populate(MdbHandle *mdb); -void gmdb_form_populate(MdbHandle *mdb); -void gmdb_query_populate(MdbHandle *mdb); -void gmdb_report_populate(MdbHandle *mdb); -void gmdb_macro_populate(MdbHandle *mdb); -void gmdb_module_populate(MdbHandle *mdb); -void gmdb_debug_init(MdbHandle *mdb); - -void gmdb_table_add_tab(GtkWidget *notebook); -void gmdb_debug_tab_new(GtkWidget *notebook); - -extern GtkWidget *table_hlist; -extern GtkWidget *form_hlist; -extern GtkWidget *query_hlist; -extern GtkWidget *report_hlist; -extern GtkWidget *macro_hlist; -extern GtkWidget *module_hlist; - -extern MdbSQL *sql; - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#endif diff --git a/src/gmdb/gtkhlist.c b/src/gmdb/gtkhlist.c deleted file mode 100644 index 6542000..0000000 --- a/src/gmdb/gtkhlist.c +++ /dev/null @@ -1,2824 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#include "gtkhlist.h" -#include "gtk/gtklistitem.h" -#include "gtk/gtkmain.h" -#include "gtk/gtksignal.h" -#include "gtk/gtklabel.h" - -enum { - SELECTION_CHANGED, - SELECT_CHILD, - UNSELECT_CHILD, - LAST_SIGNAL -}; - -enum { - ARG_0, - ARG_SELECTION_MODE -}; - -#define SCROLL_TIME 100 - -/** GtkHList Methods **/ -static void gtk_hlist_class_init (GtkHListClass *klass); -static void gtk_hlist_init (GtkHList *list); -static void gtk_hlist_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); -static void gtk_hlist_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id); -/** GtkObject Methods **/ -static void gtk_hlist_shutdown (GtkObject *object); - -/** GtkWidget Methods **/ -static void gtk_hlist_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_hlist_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_hlist_realize (GtkWidget *widget); -static void gtk_hlist_map (GtkWidget *widget); -static void gtk_hlist_unmap (GtkWidget *widget); -static void gtk_hlist_style_set (GtkWidget *widget, - GtkStyle *previous_style); -static void gtk_hlist_draw (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_hlist_expose (GtkWidget *widget, - GdkEventExpose *event); -static gint gtk_hlist_motion_notify (GtkWidget *widget, - GdkEventMotion *event); -static gint gtk_hlist_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_hlist_button_release (GtkWidget *widget, - GdkEventButton *event); - -/** GtkContainer Methods **/ -static void gtk_hlist_add (GtkContainer *container, - GtkWidget *widget); -static void gtk_hlist_remove (GtkContainer *container, - GtkWidget *widget); -static void gtk_hlist_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); -static GtkType gtk_hlist_child_type (GtkContainer *container); -static void gtk_hlist_set_focus_child (GtkContainer *container, - GtkWidget *widget); -static gint gtk_hlist_focus (GtkContainer *container, - GtkDirectionType direction); - -/** GtkHList Private Functions **/ -static void gtk_hlist_move_focus_child (GtkHList *list, - GtkScrollType scroll_type, - gfloat position); -static gint gtk_hlist_horizontal_timeout (GtkWidget *list); -static gint gtk_hlist_vertical_timeout (GtkWidget *list); -static void gtk_hlist_remove_items_internal (GtkHList *list, - GList *items, - gboolean no_unref); - -/** GtkHList Selection Methods **/ -static void gtk_real_list_select_child (GtkHList *list, - GtkWidget *child); -static void gtk_real_list_unselect_child (GtkHList *list, - GtkWidget *child); - -/** GtkHList Selection Functions **/ -static void gtk_hlist_set_anchor (GtkHList *list, - gboolean add_mode, - gint anchor, - GtkWidget *undo_focus_child); -static void gtk_hlist_fake_unselect_all (GtkHList *list, - GtkWidget *item); -static void gtk_hlist_fake_toggle_row (GtkHList *list, - GtkWidget *item); -static void gtk_hlist_update_extended_selection (GtkHList *list, - gint row); -static void gtk_hlist_reset_extended_selection (GtkHList *list); - -/** GtkListItem Signal Functions **/ -static void gtk_hlist_signal_drag_begin (GtkWidget *widget, - GdkDragContext *context, - GtkHList *list); -static void gtk_hlist_signal_toggle_focus_row (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_select_all (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_unselect_all (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_undo_selection (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_start_selection (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_end_selection (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_extend_selection (GtkListItem *list_item, - GtkScrollType scroll_type, - gfloat position, - gboolean auto_start_selection, - GtkHList *list); -static void gtk_hlist_signal_scroll_horizontal (GtkListItem *list_item, - GtkScrollType scroll_type, - gfloat position, - GtkHList *list); -static void gtk_hlist_signal_scroll_vertical (GtkListItem *list_item, - GtkScrollType scroll_type, - gfloat position, - GtkHList *list); -static void gtk_hlist_signal_toggle_add_mode (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_item_select (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_item_deselect (GtkListItem *list_item, - GtkHList *list); -static void gtk_hlist_signal_item_toggle (GtkListItem *list_item, - GtkHList *list); - - -static void gtk_hlist_drag_begin (GtkWidget *widget, - GdkDragContext *context); - - -static GtkContainerClass *parent_class = NULL; -static guint list_signals[LAST_SIGNAL] = { 0 }; - -static const gchar *vadjustment_key = "gtk-vadjustment"; -static guint vadjustment_key_id = 0; -static const gchar *hadjustment_key = "gtk-hadjustment"; -static guint hadjustment_key_id = 0; - -GtkType -gtk_hlist_get_type (void) -{ - static GtkType list_type = 0; - - if (!list_type) - { - static const GtkTypeInfo list_info = - { - "GtkHList", - sizeof (GtkHList), - sizeof (GtkHListClass), - (GtkClassInitFunc) gtk_hlist_class_init, - (GtkObjectInitFunc) gtk_hlist_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - list_type = gtk_type_unique (GTK_TYPE_CONTAINER, &list_info); - } - - return list_type; -} - -static void -gtk_hlist_class_init (GtkHListClass *class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (GTK_TYPE_CONTAINER); - - vadjustment_key_id = g_quark_from_static_string (vadjustment_key); - hadjustment_key_id = g_quark_from_static_string (hadjustment_key); - - list_signals[SELECTION_CHANGED] = - gtk_signal_new ("selection_changed", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkHListClass, selection_changed), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - list_signals[SELECT_CHILD] = - gtk_signal_new ("select_child", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkHListClass, select_child), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_WIDGET); - list_signals[UNSELECT_CHILD] = - gtk_signal_new ("unselect_child", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkHListClass, unselect_child), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_WIDGET); - - gtk_object_class_add_signals (object_class, list_signals, LAST_SIGNAL); - - object_class->shutdown = gtk_hlist_shutdown; - object_class->set_arg = gtk_hlist_set_arg; - object_class->get_arg = gtk_hlist_get_arg; - - widget_class->map = gtk_hlist_map; - widget_class->unmap = gtk_hlist_unmap; - widget_class->style_set = gtk_hlist_style_set; - widget_class->realize = gtk_hlist_realize; - widget_class->draw = gtk_hlist_draw; - widget_class->expose_event = gtk_hlist_expose; - widget_class->button_press_event = gtk_hlist_button_press; - widget_class->button_release_event = gtk_hlist_button_release; - widget_class->motion_notify_event = gtk_hlist_motion_notify; - widget_class->size_request = gtk_hlist_size_request; - widget_class->size_allocate = gtk_hlist_size_allocate; - widget_class->drag_begin = gtk_hlist_drag_begin; - - container_class->add = gtk_hlist_add; - container_class->remove = gtk_hlist_remove; - container_class->forall = gtk_hlist_forall; - container_class->child_type = gtk_hlist_child_type; - container_class->set_focus_child = gtk_hlist_set_focus_child; - container_class->focus = gtk_hlist_focus; - - class->selection_changed = NULL; - class->select_child = gtk_real_list_select_child; - class->unselect_child = gtk_real_list_unselect_child; - - gtk_object_add_arg_type ("GtkHList::selection_mode", - GTK_TYPE_SELECTION_MODE, GTK_ARG_READWRITE, - ARG_SELECTION_MODE); -} - -static void -gtk_hlist_init (GtkHList *list) -{ - list->children = NULL; - list->selection = NULL; - - list->undo_selection = NULL; - list->undo_unselection = NULL; - - list->last_focus_child = NULL; - list->undo_focus_child = NULL; - - list->htimer = 0; - list->vtimer = 0; - - list->anchor = -1; - list->drag_pos = -1; - list->anchor_state = GTK_STATE_SELECTED; - - list->selection_mode = GTK_SELECTION_SINGLE; - list->drag_selection = FALSE; - list->add_mode = FALSE; -} - -static void -gtk_hlist_set_arg (GtkObject *object, - GtkArg *arg, - guint arg_id) -{ - GtkHList *list = GTK_HLIST (object); - - switch (arg_id) - { - case ARG_SELECTION_MODE: - gtk_hlist_set_selection_mode (list, GTK_VALUE_ENUM (*arg)); - break; - } -} - -static void -gtk_hlist_get_arg (GtkObject *object, - GtkArg *arg, - guint arg_id) -{ - GtkHList *list = GTK_HLIST (object); - - switch (arg_id) - { - case ARG_SELECTION_MODE: - GTK_VALUE_ENUM (*arg) = list->selection_mode; - break; - default: - arg->type = GTK_TYPE_INVALID; - break; - } -} - -GtkWidget* -gtk_hlist_new (void) -{ - return GTK_WIDGET (gtk_type_new (GTK_TYPE_HLIST)); -} - - -/* Private GtkObject Methods : - * - * gtk_hlist_shutdown - */ -static void -gtk_hlist_shutdown (GtkObject *object) -{ - gtk_hlist_clear_items (GTK_HLIST (object), 0, -1); - GTK_OBJECT_CLASS (parent_class)->shutdown (object); -} - - -/* Private GtkWidget Methods : - * - * gtk_hlist_size_request - * gtk_hlist_size_allocate - * gtk_hlist_realize - * gtk_hlist_map - * gtk_hlist_unmap - * gtk_hlist_motion_notify - * gtk_hlist_button_press - * gtk_hlist_button_release - */ -static void -gtk_hlist_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkHList *list; - GtkWidget *child; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - g_return_if_fail (requisition != NULL); - - list = GTK_HLIST (widget); - requisition->width = 0; - requisition->height = 0; - - children = list->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - GtkRequisition child_requisition; - - gtk_widget_size_request (child, &child_requisition); - - requisition->width = MAX (requisition->width, - child_requisition.width); - requisition->height += child_requisition.height; - } - } - - requisition->width += GTK_CONTAINER (list)->border_width * 2; - requisition->height += GTK_CONTAINER (list)->border_width * 2; - - requisition->width = MAX (requisition->width, 1); - requisition->height = MAX (requisition->height, 1); -} - -static void -gtk_hlist_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkHList *list; - GtkWidget *child; - GtkAllocation child_allocation; - GList *children; - gint max_child_height = 0; - gint max_child_width = 0; - gint rows = 0; - gint column = 0; - gint child_num = 0; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - g_return_if_fail (allocation != NULL); - - list = GTK_HLIST (widget); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - if (list->children) - { - child_allocation.x = GTK_CONTAINER (list)->border_width; - child_allocation.y = GTK_CONTAINER (list)->border_width; - child_allocation.width = MAX (1, (gint)allocation->width - - child_allocation.x * 2); - - /* find maximum height and width from all children */ - children = list->children; - - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - GtkRequisition child_requisition; - gtk_widget_get_child_requisition (child, &child_requisition); - - if (child_requisition.height > max_child_height) - max_child_height = child_requisition.height; - if (child_requisition.width > max_child_width) - max_child_width = child_requisition.width; - } - } - - rows = allocation->height / max_child_height; - - children = list->children; - - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - child_allocation.height = max_child_height; - child_allocation.width = max_child_width; - - gtk_widget_size_allocate (child, &child_allocation); - - child_allocation.y += max_child_height; - - child_num ++; - column = (child_num) / rows; - child_allocation.x = column * max_child_width; - - if (child_num % rows == 0) { - child_allocation.y = GTK_CONTAINER (list)->border_width; - } - - } - } - } -} - -static void -gtk_hlist_realize (GtkWidget *widget) -{ - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - - widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), - &attributes, attributes_mask); - gdk_window_set_user_data (widget->window, widget); - - widget->style = gtk_style_attach (widget->style, widget->window); - gdk_window_set_background (widget->window, - &widget->style->base[GTK_STATE_NORMAL]); -} - -static void -gtk_hlist_map (GtkWidget *widget) -{ - GtkHList *list; - GtkWidget *child; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - list = GTK_HLIST (widget); - - children = list->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child) && - !GTK_WIDGET_MAPPED (child)) - gtk_widget_map (child); - } - - gdk_window_show (widget->window); -} - -static void -gtk_hlist_unmap (GtkWidget *widget) -{ - GtkHList *list; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - - if (!GTK_WIDGET_MAPPED (widget)) - return; - - list = GTK_HLIST (widget); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - - if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - { - gtk_hlist_end_drag_selection (list); - - if (list->anchor != -1 && list->selection_mode == GTK_SELECTION_EXTENDED) - gtk_hlist_end_selection (list); - } - - gdk_window_hide (widget->window); -} - -static gint -gtk_hlist_motion_notify (GtkWidget *widget, - GdkEventMotion *event) -{ - GtkHList *list; - GtkWidget *item = NULL; - GtkAdjustment *adj; - GtkContainer *container; - GList *work; - gint x; - gint y; - gint row = -1; - gint focus_row = 0; - gint length = 0; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_HLIST (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - list = GTK_HLIST (widget); - - if (!list->drag_selection || !list->children) - return FALSE; - - container = GTK_CONTAINER (widget); - - if (event->is_hint || event->window != widget->window) - gdk_window_get_pointer (widget->window, &x, &y, NULL); - - adj = gtk_object_get_data_by_id (GTK_OBJECT (list), hadjustment_key_id); - - /* horizontal autoscrolling */ - if (adj && widget->allocation.width > adj->page_size && - (x < adj->value || x >= adj->value + adj->page_size)) - { - if (list->htimer == 0) - { - list->htimer = gtk_timeout_add - (SCROLL_TIME, (GtkFunction) gtk_hlist_horizontal_timeout, widget); - - if (!((x < adj->value && adj->value <= 0) || - (x > adj->value + adj->page_size && - adj->value >= adj->upper - adj->page_size))) - { - gfloat value; - - if (x < adj->value) - value = adj->value + (x - adj->value) / 2 - 1; - else - value = adj->value + 1 + (x - adj->value - adj->page_size) / 2; - - gtk_adjustment_set_value (adj, - CLAMP (value, 0.0, - adj->upper - adj->page_size)); - } - } - else - return FALSE; - } - - - /* vertical autoscrolling */ - for (work = list->children; work; length++, work = work->next) - { - if (row < 0) - { - item = GTK_WIDGET (work->data); - if (item->allocation.y > y || - (item->allocation.y <= y && - item->allocation.y + item->allocation.height > y)) - row = length; - } - - if (work->data == container->focus_child) - focus_row = length; - } - - if (row < 0) - row = length - 1; - - if (list->vtimer != 0) - return FALSE; - - if (!((y < 0 && focus_row == 0) || - (y > widget->allocation.height && focus_row >= length - 1))) - list->vtimer = gtk_timeout_add (SCROLL_TIME, - (GtkFunction) gtk_hlist_vertical_timeout, - list); - - if (row != focus_row) - gtk_widget_grab_focus (item); - - switch (list->selection_mode) - { - case GTK_SELECTION_BROWSE: - gtk_hlist_select_child (list, item); - break; - case GTK_SELECTION_EXTENDED: - gtk_hlist_update_extended_selection (list, row); - break; - default: - break; - } - - return FALSE; -} - -static gint -gtk_hlist_button_press (GtkWidget *widget, - GdkEventButton *event) -{ - GtkHList *list; - GtkWidget *item; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_HLIST (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (event->button != 1) - return FALSE; - - list = GTK_HLIST (widget); - item = gtk_get_event_widget ((GdkEvent*) event); - - while (item && !GTK_IS_LIST_ITEM (item)) - item = item->parent; - - if (item && (item->parent == widget)) - { - gint last_focus_row; - gint focus_row; - - if (event->type == GDK_BUTTON_PRESS) - { - if (gdk_pointer_grab (widget->window, TRUE, - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK, - NULL, NULL, event->time)) - return FALSE; - - gtk_grab_add (widget); - list->drag_selection = TRUE; - } - else if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - gtk_hlist_end_drag_selection (list); - - if (!GTK_WIDGET_HAS_FOCUS(item)) - gtk_widget_grab_focus (item); - - if (list->add_mode) - { - list->add_mode = FALSE; - gtk_widget_queue_draw (item); - } - - switch (list->selection_mode) - { - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_MULTIPLE: - if (event->type != GDK_BUTTON_PRESS) - gtk_hlist_select_child (list, item); - else - list->undo_focus_child = item; - break; - - case GTK_SELECTION_BROWSE: - break; - - case GTK_SELECTION_EXTENDED: - focus_row = g_list_index (list->children, item); - - if (list->last_focus_child) - last_focus_row = g_list_index (list->children, - list->last_focus_child); - else - { - last_focus_row = focus_row; - list->last_focus_child = item; - } - - if (event->type != GDK_BUTTON_PRESS) - { - if (list->anchor >= 0) - { - gtk_hlist_update_extended_selection (list, focus_row); - gtk_hlist_end_selection (list); - } - gtk_hlist_select_child (list, item); - break; - } - - if (event->state & GDK_CONTROL_MASK) - { - if (event->state & GDK_SHIFT_MASK) - { - if (list->anchor < 0) - { - g_list_free (list->undo_selection); - g_list_free (list->undo_unselection); - list->undo_selection = NULL; - list->undo_unselection = NULL; - - list->anchor = last_focus_row; - list->drag_pos = last_focus_row; - list->undo_focus_child = list->last_focus_child; - } - gtk_hlist_update_extended_selection (list, focus_row); - } - else - { - if (list->anchor < 0) - gtk_hlist_set_anchor (list, TRUE, - focus_row, list->last_focus_child); - else - gtk_hlist_update_extended_selection (list, focus_row); - } - break; - } - - if (event->state & GDK_SHIFT_MASK) - { - gtk_hlist_set_anchor (list, FALSE, - last_focus_row, list->last_focus_child); - gtk_hlist_update_extended_selection (list, focus_row); - break; - } - - if (list->anchor < 0) - gtk_hlist_set_anchor (list, FALSE, focus_row, - list->last_focus_child); - else - gtk_hlist_update_extended_selection (list, focus_row); - break; - - default: - break; - } - } - - return FALSE; -} - -static gint -gtk_hlist_button_release (GtkWidget *widget, - GdkEventButton *event) -{ - GtkHList *list; - GtkWidget *item; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_HLIST (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - list = GTK_HLIST (widget); - - /* we don't handle button 2 and 3 */ - if (event->button != 1) - return FALSE; - - if (list->drag_selection) - { - gtk_hlist_end_drag_selection (list); - - switch (list->selection_mode) - { - case GTK_SELECTION_EXTENDED: - if (!(event->state & GDK_SHIFT_MASK)) - gtk_hlist_end_selection (list); - break; - - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_MULTIPLE: - - item = gtk_get_event_widget ((GdkEvent*) event); - - while (item && !GTK_IS_LIST_ITEM (item)) - item = item->parent; - - if (item && item->parent == widget) - { - if (list->undo_focus_child == item) - gtk_hlist_toggle_row (list, item); - } - list->undo_focus_child = NULL; - break; - - default: - break; - } - } - - return FALSE; -} - -static void -gtk_hlist_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkHList *list; - GtkWidget *child; - GdkRectangle child_area; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - list = GTK_HLIST (widget); - - children = list->children; - while (children) - { - child = children->data; - children = children->next; - - if (gtk_widget_intersect (child, area, &child_area)) - gtk_widget_draw (child, &child_area); - } - } -} - -static gint -gtk_hlist_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkHList *list; - GtkWidget *child; - GdkEventExpose child_event; - GList *children; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_HLIST (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - list = GTK_HLIST (widget); - - child_event = *event; - - children = list->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_NO_WINDOW (child) && - gtk_widget_intersect (child, &event->area, &child_event.area)) - gtk_widget_event (child, (GdkEvent*) &child_event); - } - } - - return FALSE; -} - -static void -gtk_hlist_style_set (GtkWidget *widget, - GtkStyle *previous_style) -{ - g_return_if_fail (widget != NULL); - - if (previous_style && GTK_WIDGET_REALIZED (widget)) - gdk_window_set_background (widget->window, &widget->style->base[GTK_WIDGET_STATE (widget)]); -} - -/* GtkContainer Methods : - * gtk_hlist_add - * gtk_hlist_remove - * gtk_hlist_forall - * gtk_hlist_child_type - * gtk_hlist_set_focus_child - * gtk_hlist_focus - */ -static void -gtk_hlist_add (GtkContainer *container, - GtkWidget *widget) -{ - GList *item_list; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_HLIST (container)); - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_LIST_ITEM (widget)); - - item_list = g_list_alloc (); - item_list->data = widget; - - gtk_hlist_append_items (GTK_HLIST (container), item_list); -} - -static void -gtk_hlist_remove (GtkContainer *container, - GtkWidget *widget) -{ - GList *item_list; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_HLIST (container)); - g_return_if_fail (widget != NULL); - g_return_if_fail (container == GTK_CONTAINER (widget->parent)); - - item_list = g_list_alloc (); - item_list->data = widget; - - gtk_hlist_remove_items (GTK_HLIST (container), item_list); - - g_list_free (item_list); -} - -static void -gtk_hlist_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) -{ - GtkHList *list; - GtkWidget *child; - GList *children; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_HLIST (container)); - g_return_if_fail (callback != NULL); - - list = GTK_HLIST (container); - children = list->children; - - while (children) - { - child = children->data; - children = children->next; - - (* callback) (child, callback_data); - } -} - -static GtkType -gtk_hlist_child_type (GtkContainer *container) -{ - return GTK_TYPE_LIST_ITEM; -} - -static void -gtk_hlist_set_focus_child (GtkContainer *container, - GtkWidget *child) -{ - GtkHList *list; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_HLIST (container)); - - if (child) - g_return_if_fail (GTK_IS_WIDGET (child)); - - list = GTK_HLIST (container); - - if (child != container->focus_child) - { - if (container->focus_child) - { - list->last_focus_child = container->focus_child; - gtk_widget_unref (container->focus_child); - } - container->focus_child = child; - if (container->focus_child) - gtk_widget_ref (container->focus_child); - } - - /* check for v adjustment */ - if (container->focus_child) - { - GtkAdjustment *adjustment; - - adjustment = gtk_object_get_data_by_id (GTK_OBJECT (container), - vadjustment_key_id); - if (adjustment) - gtk_adjustment_clamp_page (adjustment, - container->focus_child->allocation.y, - (container->focus_child->allocation.y + - container->focus_child->allocation.height)); - switch (list->selection_mode) - { - case GTK_SELECTION_BROWSE: - gtk_hlist_select_child (list, child); - break; - case GTK_SELECTION_EXTENDED: - if (!list->last_focus_child && !list->add_mode) - { - list->undo_focus_child = list->last_focus_child; - gtk_hlist_unselect_all (list); - gtk_hlist_select_child (list, child); - } - break; - default: - break; - } - } -} - -static gint -gtk_hlist_focus (GtkContainer *container, - GtkDirectionType direction) -{ - gint return_val = FALSE; - - g_return_val_if_fail (container != NULL, FALSE); - g_return_val_if_fail (GTK_IS_HLIST (container), FALSE); - - if (container->focus_child == NULL || - !GTK_WIDGET_HAS_FOCUS (container->focus_child)) - { - if (GTK_HLIST (container)->last_focus_child) - gtk_container_set_focus_child - (container, GTK_HLIST (container)->last_focus_child); - - if (GTK_CONTAINER_CLASS (parent_class)->focus) - return_val = GTK_CONTAINER_CLASS (parent_class)->focus (container, - direction); - } - - if (!return_val) - { - GtkHList *list; - - list = GTK_HLIST (container); - if (list->selection_mode == GTK_SELECTION_EXTENDED && list->anchor >= 0) - gtk_hlist_end_selection (list); - - if (container->focus_child) - list->last_focus_child = container->focus_child; - } - - return return_val; -} - - -/* Public GtkHList Methods : - * - * gtk_hlist_insert_items - * gtk_hlist_append_items - * gtk_hlist_prepend_items - * gtk_hlist_remove_items - * gtk_hlist_remove_items_no_unref - * gtk_hlist_clear_items - * - * gtk_hlist_child_position - */ -void -gtk_hlist_insert_items (GtkHList *list, - GList *items, - gint position) -{ - GtkWidget *widget; - GList *tmp_list; - GList *last; - gint nchildren; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (!items) - return; - - gtk_hlist_end_drag_selection (list); - if (list->selection_mode == GTK_SELECTION_EXTENDED && list->anchor >= 0) - gtk_hlist_end_selection (list); - - tmp_list = items; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - - gtk_widget_set_parent (widget, GTK_WIDGET (list)); - gtk_signal_connect (GTK_OBJECT (widget), "drag_begin", - GTK_SIGNAL_FUNC (gtk_hlist_signal_drag_begin), - list); - gtk_signal_connect (GTK_OBJECT (widget), "toggle_focus_row", - GTK_SIGNAL_FUNC (gtk_hlist_signal_toggle_focus_row), - list); - gtk_signal_connect (GTK_OBJECT (widget), "select_all", - GTK_SIGNAL_FUNC (gtk_hlist_signal_select_all), - list); - gtk_signal_connect (GTK_OBJECT (widget), "unselect_all", - GTK_SIGNAL_FUNC (gtk_hlist_signal_unselect_all), - list); - gtk_signal_connect (GTK_OBJECT (widget), "undo_selection", - GTK_SIGNAL_FUNC (gtk_hlist_signal_undo_selection), - list); - gtk_signal_connect (GTK_OBJECT (widget), "start_selection", - GTK_SIGNAL_FUNC (gtk_hlist_signal_start_selection), - list); - gtk_signal_connect (GTK_OBJECT (widget), "end_selection", - GTK_SIGNAL_FUNC (gtk_hlist_signal_end_selection), - list); - gtk_signal_connect (GTK_OBJECT (widget), "extend_selection", - GTK_SIGNAL_FUNC (gtk_hlist_signal_extend_selection), - list); - gtk_signal_connect (GTK_OBJECT (widget), "scroll_horizontal", - GTK_SIGNAL_FUNC (gtk_hlist_signal_scroll_horizontal), - list); - gtk_signal_connect (GTK_OBJECT (widget), "scroll_vertical", - GTK_SIGNAL_FUNC (gtk_hlist_signal_scroll_vertical), - list); - gtk_signal_connect (GTK_OBJECT (widget), "toggle_add_mode", - GTK_SIGNAL_FUNC (gtk_hlist_signal_toggle_add_mode), - list); - gtk_signal_connect (GTK_OBJECT (widget), "select", - GTK_SIGNAL_FUNC (gtk_hlist_signal_item_select), - list); - gtk_signal_connect (GTK_OBJECT (widget), "deselect", - GTK_SIGNAL_FUNC (gtk_hlist_signal_item_deselect), - list); - gtk_signal_connect (GTK_OBJECT (widget), "toggle", - GTK_SIGNAL_FUNC (gtk_hlist_signal_item_toggle), - list); - - if (GTK_WIDGET_REALIZED (widget->parent)) - gtk_widget_realize (widget); - - if (GTK_WIDGET_VISIBLE (widget->parent) && GTK_WIDGET_VISIBLE (widget)) - { - if (GTK_WIDGET_MAPPED (widget->parent)) - gtk_widget_map (widget); - - gtk_widget_queue_resize (widget); - } - } - - - nchildren = g_list_length (list->children); - if ((position < 0) || (position > nchildren)) - position = nchildren; - - if (position == nchildren) - { - if (list->children) - { - tmp_list = g_list_last (list->children); - tmp_list->next = items; - items->prev = tmp_list; - } - else - { - list->children = items; - } - } - else - { - tmp_list = g_list_nth (list->children, position); - last = g_list_last (items); - - if (tmp_list->prev) - tmp_list->prev->next = items; - last->next = tmp_list; - items->prev = tmp_list->prev; - tmp_list->prev = last; - - if (tmp_list == list->children) - list->children = items; - } - - if (list->children && !list->selection && - (list->selection_mode == GTK_SELECTION_BROWSE)) - { - widget = list->children->data; - gtk_hlist_select_child (list, widget); - } -} - -void -gtk_hlist_append_items (GtkHList *list, - GList *items) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_insert_items (list, items, -1); -} - -void -gtk_hlist_prepend_items (GtkHList *list, - GList *items) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_insert_items (list, items, 0); -} - -void -gtk_hlist_remove_items (GtkHList *list, - GList *items) -{ - gtk_hlist_remove_items_internal (list, items, FALSE); -} - -void -gtk_hlist_remove_items_no_unref (GtkHList *list, - GList *items) -{ - gtk_hlist_remove_items_internal (list, items, TRUE); -} - -void -gtk_hlist_clear_items (GtkHList *list, - gint start, - gint end) -{ - GtkContainer *container; - GtkWidget *widget; - GtkWidget *new_focus_child = NULL; - GList *start_list; - GList *end_list; - GList *tmp_list; - guint nchildren; - gboolean grab_focus = FALSE; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - nchildren = g_list_length (list->children); - - if (nchildren == 0) - return; - - if ((end < 0) || (end > nchildren)) - end = nchildren; - - if (start >= end) - return; - - container = GTK_CONTAINER (list); - - gtk_hlist_end_drag_selection (list); - if (list->selection_mode == GTK_SELECTION_EXTENDED) - { - if (list->anchor >= 0) - gtk_hlist_end_selection (list); - - gtk_hlist_reset_extended_selection (list); - } - - start_list = g_list_nth (list->children, start); - end_list = g_list_nth (list->children, end); - - if (start_list->prev) - start_list->prev->next = end_list; - if (end_list && end_list->prev) - end_list->prev->next = NULL; - if (end_list) - end_list->prev = start_list->prev; - if (start_list == list->children) - list->children = end_list; - - if (container->focus_child) - { - if (g_list_find (start_list, container->focus_child)) - { - if (start_list->prev) - new_focus_child = start_list->prev->data; - else if (list->children) - new_focus_child = list->children->prev->data; - - if (GTK_WIDGET_HAS_FOCUS (container->focus_child)) - grab_focus = TRUE; - } - } - - tmp_list = start_list; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - - if (widget->state == GTK_STATE_SELECTED) - gtk_hlist_unselect_child (list, widget); - - if (widget == list->undo_focus_child) - list->undo_focus_child = NULL; - if (widget == list->last_focus_child) - list->last_focus_child = NULL; - - gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list); - gtk_widget_unparent (widget); - } - - g_list_free (start_list); - - if (new_focus_child) - { - if (grab_focus) - gtk_widget_grab_focus (new_focus_child); - else if (container->focus_child) - gtk_container_set_focus_child (container, new_focus_child); - - if ((list->selection_mode == GTK_SELECTION_BROWSE || - list->selection_mode == GTK_SELECTION_EXTENDED) && !list->selection) - { - list->last_focus_child = new_focus_child; - gtk_hlist_select_child (list, new_focus_child); - } - } - - if (GTK_WIDGET_VISIBLE (list)) - gtk_widget_queue_resize (GTK_WIDGET (list)); -} - -gint -gtk_hlist_child_position (GtkHList *list, - GtkWidget *child) -{ - GList *children; - gint pos; - - g_return_val_if_fail (list != NULL, -1); - g_return_val_if_fail (GTK_IS_HLIST (list), -1); - g_return_val_if_fail (child != NULL, -1); - - pos = 0; - children = list->children; - - while (children) - { - if (child == GTK_WIDGET (children->data)) - return pos; - - pos += 1; - children = children->next; - } - - return -1; -} - - -/* Private GtkHList Insert/Remove Item Functions: - * - * gtk_hlist_remove_items_internal - */ -static void -gtk_hlist_remove_items_internal (GtkHList *list, - GList *items, - gboolean no_unref) -{ - GtkWidget *widget; - GtkWidget *new_focus_child; - GtkWidget *old_focus_child; - GtkContainer *container; - GList *tmp_list; - GList *work; - gboolean grab_focus = FALSE; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (!items) - return; - - container = GTK_CONTAINER (list); - - gtk_hlist_end_drag_selection (list); - if (list->selection_mode == GTK_SELECTION_EXTENDED) - { - if (list->anchor >= 0) - gtk_hlist_end_selection (list); - - gtk_hlist_reset_extended_selection (list); - } - - tmp_list = items; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - - if (widget->state == GTK_STATE_SELECTED) - gtk_hlist_unselect_child (list, widget); - } - - if (container->focus_child) - { - old_focus_child = new_focus_child = container->focus_child; - if (GTK_WIDGET_HAS_FOCUS (container->focus_child)) - grab_focus = TRUE; - } - else - old_focus_child = new_focus_child = list->last_focus_child; - - tmp_list = items; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - - if (no_unref) - gtk_widget_ref (widget); - - if (widget == new_focus_child) - { - work = g_list_find (list->children, widget); - - if (work) - { - if (work->next) - new_focus_child = work->next->data; - else if (list->children != work && work->prev) - new_focus_child = work->prev->data; - else - new_focus_child = NULL; - } - } - - if (widget == list->undo_focus_child) - list->undo_focus_child = NULL; - if (widget == list->last_focus_child) - list->last_focus_child = NULL; - - gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list); - list->children = g_list_remove (list->children, widget); - gtk_widget_unparent (widget); - } - - if (new_focus_child && new_focus_child != old_focus_child) - { - if (grab_focus) - gtk_widget_grab_focus (new_focus_child); - else if (container->focus_child) - gtk_container_set_focus_child (container, new_focus_child); - - if (list->selection_mode == GTK_SELECTION_BROWSE && !list->selection) - { - list->last_focus_child = new_focus_child; - gtk_hlist_select_child (list, new_focus_child); - } - } - - if (GTK_WIDGET_VISIBLE (list)) - gtk_widget_queue_resize (GTK_WIDGET (list)); -} - - -/* Public GtkHList Selection Methods : - * - * gtk_hlist_set_selection_mode - * gtk_hlist_select_item - * gtk_hlist_unselect_item - * gtk_hlist_select_child - * gtk_hlist_unselect_child - * gtk_hlist_select_all - * gtk_hlist_unselect_all - * gtk_hlist_extend_selection - * gtk_hlist_end_drag_selection - * gtk_hlist_start_selection - * gtk_hlist_end_selection - * gtk_hlist_toggle_row - * gtk_hlist_toggle_focus_row - * gtk_hlist_toggle_add_mode - * gtk_hlist_undo_selection - */ -void -gtk_hlist_set_selection_mode (GtkHList *list, - GtkSelectionMode mode) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (list->selection_mode == mode) - return; - - list->selection_mode = mode; - - switch (mode) - { - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_BROWSE: - gtk_hlist_unselect_all (list); - break; - default: - break; - } -} - -void -gtk_hlist_select_item (GtkHList *list, - gint item) -{ - GList *tmp_list; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - tmp_list = g_list_nth (list->children, item); - if (tmp_list) - gtk_hlist_select_child (list, GTK_WIDGET (tmp_list->data)); -} - -void -gtk_hlist_unselect_item (GtkHList *list, - gint item) -{ - GList *tmp_list; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - tmp_list = g_list_nth (list->children, item); - if (tmp_list) - gtk_hlist_unselect_child (list, GTK_WIDGET (tmp_list->data)); -} - -void -gtk_hlist_select_child (GtkHList *list, - GtkWidget *child) -{ - gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECT_CHILD], child); -} - -void -gtk_hlist_unselect_child (GtkHList *list, - GtkWidget *child) -{ - gtk_signal_emit (GTK_OBJECT (list), list_signals[UNSELECT_CHILD], child); -} - -void -gtk_hlist_select_all (GtkHList *list) -{ - GtkContainer *container; - GList *work; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (!list->children) - return; - - if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - gtk_hlist_end_drag_selection (list); - - if (list->selection_mode == GTK_SELECTION_EXTENDED && list->anchor >= 0) - gtk_hlist_end_selection (list); - - container = GTK_CONTAINER (list); - - switch (list->selection_mode) - { - case GTK_SELECTION_BROWSE: - if (container->focus_child) - { - gtk_hlist_select_child (list, container->focus_child); - return; - } - break; - case GTK_SELECTION_EXTENDED: - g_list_free (list->undo_selection); - g_list_free (list->undo_unselection); - list->undo_selection = NULL; - list->undo_unselection = NULL; - - if (list->children && - GTK_WIDGET_STATE (list->children->data) != GTK_STATE_SELECTED) - gtk_hlist_fake_toggle_row (list, GTK_WIDGET (list->children->data)); - - list->anchor_state = GTK_STATE_SELECTED; - list->anchor = 0; - list->drag_pos = 0; - list->undo_focus_child = container->focus_child; - gtk_hlist_update_extended_selection (list, g_list_length(list->children)); - gtk_hlist_end_selection (list); - return; - case GTK_SELECTION_MULTIPLE: - for (work = list->children; work; work = work->next) - { - if (GTK_WIDGET_STATE (work->data) == GTK_STATE_NORMAL) - gtk_hlist_select_child (list, GTK_WIDGET (work->data)); - } - return; - default: - break; - } -} - -void -gtk_hlist_unselect_all (GtkHList *list) -{ - GtkContainer *container; - GtkWidget *item; - GList *work; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (!list->children) - return; - - if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - gtk_hlist_end_drag_selection (list); - - if (list->selection_mode == GTK_SELECTION_EXTENDED && list->anchor >= 0) - gtk_hlist_end_selection (list); - - container = GTK_CONTAINER (list); - - switch (list->selection_mode) - { - case GTK_SELECTION_BROWSE: - if (container->focus_child) - { - gtk_hlist_select_child (list, container->focus_child); - return; - } - break; - case GTK_SELECTION_EXTENDED: - gtk_hlist_reset_extended_selection (list); - break; - default: - break; - } - - work = list->selection; - - while (work) - { - item = work->data; - work = work->next; - gtk_hlist_unselect_child (list, item); - } -} - -void -gtk_hlist_extend_selection (GtkHList *list, - GtkScrollType scroll_type, - gfloat position, - gboolean auto_start_selection) -{ - GtkContainer *container; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) || - list->selection_mode != GTK_SELECTION_EXTENDED) - return; - - container = GTK_CONTAINER (list); - - if (auto_start_selection) - { - gint focus_row; - - focus_row = g_list_index (list->children, container->focus_child); - gtk_hlist_set_anchor (list, list->add_mode, focus_row, - container->focus_child); - } - else if (list->anchor < 0) - return; - - gtk_hlist_move_focus_child (list, scroll_type, position); - gtk_hlist_update_extended_selection - (list, g_list_index (list->children, container->focus_child)); -} - -void -gtk_hlist_end_drag_selection (GtkHList *list) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - list->drag_selection = FALSE; - if (GTK_WIDGET_HAS_GRAB (list)) - { - gtk_grab_remove (GTK_WIDGET (list)); - if (gdk_pointer_is_grabbed()) - gdk_pointer_ungrab (GDK_CURRENT_TIME); - } - if (list->htimer) - { - gtk_timeout_remove (list->htimer); - list->htimer = 0; - } - if (list->vtimer) - { - gtk_timeout_remove (list->vtimer); - list->vtimer = 0; - } -} - -void -gtk_hlist_start_selection (GtkHList *list) -{ - GtkContainer *container; - gint focus_row; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - return; - - container = GTK_CONTAINER (list); - - if ((focus_row = g_list_index (list->selection, container->focus_child)) - >= 0) - gtk_hlist_set_anchor (list, list->add_mode, - focus_row, container->focus_child); -} - -void -gtk_hlist_end_selection (GtkHList *list) -{ - gint i; - gint e; - gboolean top_down; - GList *work; - GtkWidget *item; - gint item_index; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) || - list->anchor < 0) - return; - - i = MIN (list->anchor, list->drag_pos); - e = MAX (list->anchor, list->drag_pos); - - top_down = (list->anchor < list->drag_pos); - - list->anchor = -1; - list->drag_pos = -1; - - if (list->undo_selection) - { - work = list->selection; - list->selection = list->undo_selection; - list->undo_selection = work; - work = list->selection; - while (work) - { - item = work->data; - work = work->next; - item_index = g_list_index (list->children, item); - if (item_index < i || item_index > e) - { - gtk_widget_set_state (item, GTK_STATE_SELECTED); - gtk_hlist_unselect_child (list, item); - list->undo_selection = g_list_prepend (list->undo_selection, - item); - } - } - } - - if (top_down) - { - for (work = g_list_nth (list->children, i); i <= e; - i++, work = work->next) - { - item = work->data; - if (g_list_find (list->selection, item)) - { - if (item->state == GTK_STATE_NORMAL) - { - gtk_widget_set_state (item, GTK_STATE_SELECTED); - gtk_hlist_unselect_child (list, item); - list->undo_selection = g_list_prepend (list->undo_selection, - item); - } - } - else if (item->state == GTK_STATE_SELECTED) - { - gtk_widget_set_state (item, GTK_STATE_NORMAL); - list->undo_unselection = g_list_prepend (list->undo_unselection, - item); - } - } - } - else - { - for (work = g_list_nth (list->children, e); i <= e; - e--, work = work->prev) - { - item = work->data; - if (g_list_find (list->selection, item)) - { - if (item->state == GTK_STATE_NORMAL) - { - gtk_widget_set_state (item, GTK_STATE_SELECTED); - gtk_hlist_unselect_child (list, item); - list->undo_selection = g_list_prepend (list->undo_selection, - item); - } - } - else if (item->state == GTK_STATE_SELECTED) - { - gtk_widget_set_state (item, GTK_STATE_NORMAL); - list->undo_unselection = g_list_prepend (list->undo_unselection, - item); - } - } - } - - for (work = g_list_reverse (list->undo_unselection); work; work = work->next) - gtk_hlist_select_child (list, GTK_WIDGET (work->data)); - - -} - -void -gtk_hlist_toggle_row (GtkHList *list, - GtkWidget *item) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_LIST_ITEM (item)); - - switch (list->selection_mode) - { - case GTK_SELECTION_EXTENDED: - case GTK_SELECTION_MULTIPLE: - case GTK_SELECTION_SINGLE: - if (item->state == GTK_STATE_SELECTED) - { - gtk_hlist_unselect_child (list, item); - return; - } - case GTK_SELECTION_BROWSE: - gtk_hlist_select_child (list, item); - break; - } -} - -void -gtk_hlist_toggle_focus_row (GtkHList *list) -{ - GtkContainer *container; - gint focus_row; - - g_return_if_fail (list != 0); - g_return_if_fail (GTK_IS_HLIST (list)); - - container = GTK_CONTAINER (list); - - if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) || - !container->focus_child) - return; - - switch (list->selection_mode) - { - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_MULTIPLE: - gtk_hlist_toggle_row (list, container->focus_child); - break; - case GTK_SELECTION_EXTENDED: - if ((focus_row = g_list_index (list->children, container->focus_child)) - < 0) - return; - - g_list_free (list->undo_selection); - g_list_free (list->undo_unselection); - list->undo_selection = NULL; - list->undo_unselection = NULL; - - list->anchor = focus_row; - list->drag_pos = focus_row; - list->undo_focus_child = container->focus_child; - - if (list->add_mode) - gtk_hlist_fake_toggle_row (list, container->focus_child); - else - gtk_hlist_fake_unselect_all (list, container->focus_child); - - gtk_hlist_end_selection (list); - break; - default: - break; - } -} - -void -gtk_hlist_toggle_add_mode (GtkHList *list) -{ - GtkContainer *container; - - g_return_if_fail (list != 0); - g_return_if_fail (GTK_IS_HLIST (list)); - - if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) || - list->selection_mode != GTK_SELECTION_EXTENDED) - return; - - container = GTK_CONTAINER (list); - - if (list->add_mode) - { - list->add_mode = FALSE; - list->anchor_state = GTK_STATE_SELECTED; - } - else - list->add_mode = TRUE; - - if (container->focus_child) - gtk_widget_queue_draw (container->focus_child); -} - -void -gtk_hlist_undo_selection (GtkHList *list) -{ - GList *work; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (list->selection_mode != GTK_SELECTION_EXTENDED || - (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list))) - return; - - if (list->anchor >= 0) - gtk_hlist_end_selection (list); - - if (!(list->undo_selection || list->undo_unselection)) - { - gtk_hlist_unselect_all (list); - return; - } - - for (work = list->undo_selection; work; work = work->next) - gtk_hlist_select_child (list, GTK_WIDGET (work->data)); - - for (work = list->undo_unselection; work; work = work->next) - gtk_hlist_unselect_child (list, GTK_WIDGET (work->data)); - - if (list->undo_focus_child) - { - GtkContainer *container; - - container = GTK_CONTAINER (list); - - if (container->focus_child && - GTK_WIDGET_HAS_FOCUS (container->focus_child)) - gtk_widget_grab_focus (list->undo_focus_child); - else - gtk_container_set_focus_child (container, list->undo_focus_child); - } - - list->undo_focus_child = NULL; - - g_list_free (list->undo_selection); - g_list_free (list->undo_unselection); - list->undo_selection = NULL; - list->undo_unselection = NULL; -} - - -/* Private GtkHList Selection Methods : - * - * gtk_real_list_select_child - * gtk_real_list_unselect_child - */ -static void -gtk_real_list_select_child (GtkHList *list, - GtkWidget *child) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - g_return_if_fail (child != NULL); - g_return_if_fail (GTK_IS_LIST_ITEM (child)); - - switch (child->state) - { - case GTK_STATE_SELECTED: - case GTK_STATE_INSENSITIVE: - break; - default: - gtk_list_item_select (GTK_LIST_ITEM (child)); - break; - } -} - -static void -gtk_real_list_unselect_child (GtkHList *list, - GtkWidget *child) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - g_return_if_fail (child != NULL); - g_return_if_fail (GTK_IS_LIST_ITEM (child)); - - if (child->state == GTK_STATE_SELECTED) - gtk_list_item_deselect (GTK_LIST_ITEM (child)); -} - - -/* Private GtkHList Selection Functions : - * - * gtk_hlist_set_anchor - * gtk_hlist_fake_unselect_all - * gtk_hlist_fake_toggle_row - * gtk_hlist_update_extended_selection - * gtk_hlist_reset_extended_selection - */ -static void -gtk_hlist_set_anchor (GtkHList *list, - gboolean add_mode, - gint anchor, - GtkWidget *undo_focus_child) -{ - GList *work; - - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (list->selection_mode != GTK_SELECTION_EXTENDED || list->anchor >= 0) - return; - - g_list_free (list->undo_selection); - g_list_free (list->undo_unselection); - list->undo_selection = NULL; - list->undo_unselection = NULL; - - if ((work = g_list_nth (list->children, anchor))) - { - if (add_mode) - gtk_hlist_fake_toggle_row (list, GTK_WIDGET (work->data)); - else - { - gtk_hlist_fake_unselect_all (list, GTK_WIDGET (work->data)); - list->anchor_state = GTK_STATE_SELECTED; - } - } - - list->anchor = anchor; - list->drag_pos = anchor; - list->undo_focus_child = undo_focus_child; -} - -static void -gtk_hlist_fake_unselect_all (GtkHList *list, - GtkWidget *item) -{ - GList *work; - - if (item && item->state == GTK_STATE_NORMAL) - gtk_widget_set_state (item, GTK_STATE_SELECTED); - - list->undo_selection = list->selection; - list->selection = NULL; - - for (work = list->undo_selection; work; work = work->next) - if (work->data != item) - gtk_widget_set_state (GTK_WIDGET (work->data), GTK_STATE_NORMAL); -} - -static void -gtk_hlist_fake_toggle_row (GtkHList *list, - GtkWidget *item) -{ - if (!item) - return; - - if (item->state == GTK_STATE_NORMAL) - { - list->anchor_state = GTK_STATE_SELECTED; - gtk_widget_set_state (item, GTK_STATE_SELECTED); - } - else - { - list->anchor_state = GTK_STATE_NORMAL; - gtk_widget_set_state (item, GTK_STATE_NORMAL); - } -} - -static void -gtk_hlist_update_extended_selection (GtkHList *list, - gint row) -{ - gint i; - GList *work; - gint s1 = -1; - gint s2 = -1; - gint e1 = -1; - gint e2 = -1; - gint length; - - if (row < 0) - row = 0; - - length = g_list_length (list->children); - if (row >= length) - row = length - 1; - - if (list->selection_mode != GTK_SELECTION_EXTENDED || !list->anchor < 0) - return; - - /* extending downwards */ - if (row > list->drag_pos && list->anchor <= list->drag_pos) - { - s2 = list->drag_pos + 1; - e2 = row; - } - /* extending upwards */ - else if (row < list->drag_pos && list->anchor >= list->drag_pos) - { - s2 = row; - e2 = list->drag_pos - 1; - } - else if (row < list->drag_pos && list->anchor < list->drag_pos) - { - e1 = list->drag_pos; - /* row and drag_pos on different sides of anchor : - take back the selection between anchor and drag_pos, - select between anchor and row */ - if (row < list->anchor) - { - s1 = list->anchor + 1; - s2 = row; - e2 = list->anchor - 1; - } - /* take back the selection between anchor and drag_pos */ - else - s1 = row + 1; - } - else if (row > list->drag_pos && list->anchor > list->drag_pos) - { - s1 = list->drag_pos; - /* row and drag_pos on different sides of anchor : - take back the selection between anchor and drag_pos, - select between anchor and row */ - if (row > list->anchor) - { - e1 = list->anchor - 1; - s2 = list->anchor + 1; - e2 = row; - } - /* take back the selection between anchor and drag_pos */ - else - e1 = row - 1; - } - - list->drag_pos = row; - - /* restore the elements between s1 and e1 */ - if (s1 >= 0) - { - for (i = s1, work = g_list_nth (list->children, i); i <= e1; - i++, work = work->next) - { - if (g_list_find (list->selection, work->data)) - gtk_widget_set_state (GTK_WIDGET (work->data), GTK_STATE_SELECTED); - else - gtk_widget_set_state (GTK_WIDGET (work->data), GTK_STATE_NORMAL); - } - } - - /* extend the selection between s2 and e2 */ - if (s2 >= 0) - { - for (i = s2, work = g_list_nth (list->children, i); i <= e2; - i++, work = work->next) - if (GTK_WIDGET (work->data)->state != list->anchor_state) - gtk_widget_set_state (GTK_WIDGET (work->data), list->anchor_state); - } -} - -static void -gtk_hlist_reset_extended_selection (GtkHList *list) -{ - g_return_if_fail (list != 0); - g_return_if_fail (GTK_IS_HLIST (list)); - - g_list_free (list->undo_selection); - g_list_free (list->undo_unselection); - list->undo_selection = NULL; - list->undo_unselection = NULL; - - list->anchor = -1; - list->drag_pos = -1; - list->undo_focus_child = GTK_CONTAINER (list)->focus_child; -} - -/* Public GtkHList Scroll Methods : - * - * gtk_hlist_scroll_horizontal - * gtk_hlist_scroll_vertical - */ -void -gtk_hlist_scroll_horizontal (GtkHList *list, - GtkScrollType scroll_type, - gfloat position) -{ - GtkAdjustment *adj; - - g_return_if_fail (list != 0); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - return; - - if (!(adj = - gtk_object_get_data_by_id (GTK_OBJECT (list), hadjustment_key_id))) - return; - - switch (scroll_type) - { - case GTK_SCROLL_STEP_BACKWARD: - adj->value = CLAMP (adj->value - adj->step_increment, adj->lower, - adj->upper - adj->page_size); - break; - case GTK_SCROLL_STEP_FORWARD: - adj->value = CLAMP (adj->value + adj->step_increment, adj->lower, - adj->upper - adj->page_size); - break; - case GTK_SCROLL_PAGE_BACKWARD: - adj->value = CLAMP (adj->value - adj->page_increment, adj->lower, - adj->upper - adj->page_size); - break; - case GTK_SCROLL_PAGE_FORWARD: - adj->value = CLAMP (adj->value + adj->page_increment, adj->lower, - adj->upper - adj->page_size); - break; - case GTK_SCROLL_JUMP: - adj->value = CLAMP (adj->lower + (adj->upper - adj->lower) * position, - adj->lower, adj->upper - adj->page_size); - break; - default: - break; - } - gtk_adjustment_value_changed (adj); -} - -void -gtk_hlist_scroll_vertical (GtkHList *list, - GtkScrollType scroll_type, - gfloat position) -{ - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (list)) - return; - - if (list->selection_mode == GTK_SELECTION_EXTENDED) - { - GtkContainer *container; - - if (list->anchor >= 0) - return; - - container = GTK_CONTAINER (list); - list->undo_focus_child = container->focus_child; - gtk_hlist_move_focus_child (list, scroll_type, position); - if (container->focus_child != list->undo_focus_child && !list->add_mode) - { - gtk_hlist_unselect_all (list); - gtk_hlist_select_child (list, container->focus_child); - } - } - else - gtk_hlist_move_focus_child (list, scroll_type, position); -} - - -/* Private GtkHList Scroll/Focus Functions : - * - * gtk_hlist_move_focus_child - * gtk_hlist_horizontal_timeout - * gtk_hlist_vertical_timeout - */ -static void -gtk_hlist_move_focus_child (GtkHList *list, - GtkScrollType scroll_type, - gfloat position) -{ - GtkContainer *container; - GList *work; - GtkWidget *item; - GtkAdjustment *adj; - gint new_value; - - g_return_if_fail (list != 0); - g_return_if_fail (GTK_IS_HLIST (list)); - - container = GTK_CONTAINER (list); - - if (container->focus_child) - work = g_list_find (list->children, container->focus_child); - else - work = list->children; - - if (!work) - return; - - switch (scroll_type) - { - case GTK_SCROLL_STEP_BACKWARD: - work = work->prev; - if (work) - gtk_widget_grab_focus (GTK_WIDGET (work->data)); - break; - case GTK_SCROLL_STEP_FORWARD: - work = work->next; - if (work) - gtk_widget_grab_focus (GTK_WIDGET (work->data)); - break; - case GTK_SCROLL_PAGE_BACKWARD: - if (!work->prev) - return; - - item = work->data; - adj = gtk_object_get_data_by_id (GTK_OBJECT (list), vadjustment_key_id); - - if (adj) - { - gboolean correct = FALSE; - - new_value = adj->value; - - if (item->allocation.y <= adj->value) - { - new_value = MAX (item->allocation.y + item->allocation.height - - adj->page_size, adj->lower); - correct = TRUE; - } - - if (item->allocation.y > new_value) - for (; work; work = work->prev) - { - item = GTK_WIDGET (work->data); - if (item->allocation.y <= new_value && - item->allocation.y + item->allocation.height > new_value) - break; - } - else - for (; work; work = work->next) - { - item = GTK_WIDGET (work->data); - if (item->allocation.y <= new_value && - item->allocation.y + item->allocation.height > new_value) - break; - } - - if (correct && work && work->next && item->allocation.y < new_value) - item = work->next->data; - } - else - item = list->children->data; - - gtk_widget_grab_focus (item); - break; - case GTK_SCROLL_PAGE_FORWARD: - if (!work->next) - return; - - item = work->data; - adj = gtk_object_get_data_by_id (GTK_OBJECT (list), vadjustment_key_id); - - if (adj) - { - gboolean correct = FALSE; - - new_value = adj->value; - - if (item->allocation.y + item->allocation.height >= - adj->value + adj->page_size) - { - new_value = item->allocation.y; - correct = TRUE; - } - - new_value = MIN (new_value + adj->page_size, adj->upper); - - if (item->allocation.y > new_value) - for (; work; work = work->prev) - { - item = GTK_WIDGET (work->data); - if (item->allocation.y <= new_value && - item->allocation.y + item->allocation.height > new_value) - break; - } - else - for (; work; work = work->next) - { - item = GTK_WIDGET (work->data); - if (item->allocation.y <= new_value && - item->allocation.y + item->allocation.height > new_value) - break; - } - - if (correct && work && work->prev && - item->allocation.y + item->allocation.height - 1 > new_value) - item = work->prev->data; - } - else - item = g_list_last (work)->data; - - gtk_widget_grab_focus (item); - break; - case GTK_SCROLL_JUMP: - new_value = GTK_WIDGET(list)->allocation.height * CLAMP (position, 0, 1); - - for (item = NULL, work = list->children; work; work =work->next) - { - item = GTK_WIDGET (work->data); - if (item->allocation.y <= new_value && - item->allocation.y + item->allocation.height > new_value) - break; - } - - gtk_widget_grab_focus (item); - break; - default: - break; - } -} - -static gint -gtk_hlist_horizontal_timeout (GtkWidget *list) -{ - GdkEventMotion event = { 0 }; - - GDK_THREADS_ENTER (); - - GTK_HLIST (list)->htimer = 0; - - event.type = GDK_MOTION_NOTIFY; - event.send_event = TRUE; - - gtk_hlist_motion_notify (list, &event); - - GDK_THREADS_LEAVE (); - - return FALSE; -} - -static gint -gtk_hlist_vertical_timeout (GtkWidget *list) -{ - GdkEventMotion event = { 0 }; - - GDK_THREADS_ENTER (); - - GTK_HLIST (list)->vtimer = 0; - - event.type = GDK_MOTION_NOTIFY; - event.send_event = TRUE; - - gtk_hlist_motion_notify (list, &event); - - GDK_THREADS_LEAVE (); - - return FALSE; -} - - -/* Private GtkListItem Signal Functions : - * - * gtk_hlist_signal_toggle_focus_row - * gtk_hlist_signal_select_all - * gtk_hlist_signal_unselect_all - * gtk_hlist_signal_undo_selection - * gtk_hlist_signal_start_selection - * gtk_hlist_signal_end_selection - * gtk_hlist_signal_extend_selection - * gtk_hlist_signal_scroll_horizontal - * gtk_hlist_signal_scroll_vertical - * gtk_hlist_signal_toggle_add_mode - * gtk_hlist_signal_item_select - * gtk_hlist_signal_item_deselect - * gtk_hlist_signal_item_toggle - */ -static void -gtk_hlist_signal_toggle_focus_row (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_toggle_focus_row (list); -} - -static void -gtk_hlist_signal_select_all (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_select_all (list); -} - -static void -gtk_hlist_signal_unselect_all (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_unselect_all (list); -} - -static void -gtk_hlist_signal_undo_selection (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_undo_selection (list); -} - -static void -gtk_hlist_signal_start_selection (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_start_selection (list); -} - -static void -gtk_hlist_signal_end_selection (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_end_selection (list); -} - -static void -gtk_hlist_signal_extend_selection (GtkListItem *list_item, - GtkScrollType scroll_type, - gfloat position, - gboolean auto_start_selection, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_extend_selection (list, scroll_type, position, - auto_start_selection); -} - -static void -gtk_hlist_signal_scroll_horizontal (GtkListItem *list_item, - GtkScrollType scroll_type, - gfloat position, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_scroll_horizontal (list, scroll_type, position); -} - -static void -gtk_hlist_signal_scroll_vertical (GtkListItem *list_item, - GtkScrollType scroll_type, - gfloat position, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_scroll_vertical (list, scroll_type, position); -} - -static void -gtk_hlist_signal_toggle_add_mode (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_toggle_add_mode (list); -} - -static void -gtk_hlist_signal_item_select (GtkListItem *list_item, - GtkHList *list) -{ - GList *selection; - GList *tmp_list; - GList *sel_list; - - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (GTK_WIDGET (list_item)->state != GTK_STATE_SELECTED) - return; - - switch (list->selection_mode) - { - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_BROWSE: - sel_list = NULL; - selection = list->selection; - - while (selection) - { - tmp_list = selection; - selection = selection->next; - - if (tmp_list->data == list_item) - sel_list = tmp_list; - else - gtk_list_item_deselect (GTK_LIST_ITEM (tmp_list->data)); - } - - if (!sel_list) - { - list->selection = g_list_prepend (list->selection, list_item); - gtk_widget_ref (GTK_WIDGET (list_item)); - } - gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECTION_CHANGED]); - break; - case GTK_SELECTION_EXTENDED: - if (list->anchor >= 0) - return; - case GTK_SELECTION_MULTIPLE: - if (!g_list_find (list->selection, list_item)) - { - list->selection = g_list_prepend (list->selection, list_item); - gtk_widget_ref (GTK_WIDGET (list_item)); - gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECTION_CHANGED]); - } - break; - } -} - -static void -gtk_hlist_signal_item_deselect (GtkListItem *list_item, - GtkHList *list) -{ - GList *node; - - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if (GTK_WIDGET (list_item)->state != GTK_STATE_NORMAL) - return; - - node = g_list_find (list->selection, list_item); - - if (node) - { - list->selection = g_list_remove_link (list->selection, node); - g_list_free_1 (node); - gtk_widget_unref (GTK_WIDGET (list_item)); - gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECTION_CHANGED]); - } -} - -static void -gtk_hlist_signal_item_toggle (GtkListItem *list_item, - GtkHList *list) -{ - g_return_if_fail (list_item != 0); - g_return_if_fail (GTK_IS_LIST_ITEM (list_item)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - if ((list->selection_mode == GTK_SELECTION_BROWSE || - list->selection_mode == GTK_SELECTION_EXTENDED) && - GTK_WIDGET (list_item)->state == GTK_STATE_NORMAL) - { - gtk_widget_set_state (GTK_WIDGET (list_item), GTK_STATE_SELECTED); - return; - } - - switch (GTK_WIDGET (list_item)->state) - { - case GTK_STATE_SELECTED: - gtk_hlist_signal_item_select (list_item, list); - break; - case GTK_STATE_NORMAL: - gtk_hlist_signal_item_deselect (list_item, list); - break; - default: - break; - } -} - -static void -gtk_hlist_signal_drag_begin (GtkWidget *widget, - GdkDragContext *context, - GtkHList *list) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_LIST_ITEM (widget)); - g_return_if_fail (list != NULL); - g_return_if_fail (GTK_IS_HLIST (list)); - - gtk_hlist_drag_begin (GTK_WIDGET (list), context); -} - -static void -gtk_hlist_drag_begin (GtkWidget *widget, - GdkDragContext *context) -{ - GtkHList *list; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_HLIST (widget)); - g_return_if_fail (context != NULL); - - list = GTK_HLIST (widget); - - if (list->drag_selection) - { - gtk_hlist_end_drag_selection (list); - - switch (list->selection_mode) - { - case GTK_SELECTION_EXTENDED: - gtk_hlist_end_selection (list); - break; - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_MULTIPLE: - list->undo_focus_child = NULL; - break; - default: - break; - } - } -} diff --git a/src/gmdb/gtkhlist.h b/src/gmdb/gtkhlist.h deleted file mode 100644 index 7368795..0000000 --- a/src/gmdb/gtkhlist.h +++ /dev/null @@ -1,147 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GTK_HLIST_H__ -#define __GTK_HLIST_H__ - - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_TYPE_HLIST (gtk_hlist_get_type ()) -#define GTK_HLIST(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_HLIST, GtkHList)) -#define GTK_HLIST_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_HLIST, GtkHListClass)) -#define GTK_IS_HLIST(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_HLIST)) -#define GTK_IS_HLIST_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_HLIST)) - - -typedef struct _GtkHList GtkHList; -typedef struct _GtkHListClass GtkHListClass; - -struct _GtkHList -{ - GtkContainer container; - - GList *children; - GList *selection; - - GList *undo_selection; - GList *undo_unselection; - - GtkWidget *last_focus_child; - GtkWidget *undo_focus_child; - - guint htimer; - guint vtimer; - - gint anchor; - gint drag_pos; - GtkStateType anchor_state; - - guint selection_mode : 2; - guint drag_selection:1; - guint add_mode:1; - - gboolean horizontal; - guint horiz_spacing; -}; - -struct _GtkHListClass -{ - GtkContainerClass parent_class; - - void (* selection_changed) (GtkHList *list); - void (* select_child) (GtkHList *list, - GtkWidget *child); - void (* unselect_child) (GtkHList *list, - GtkWidget *child); -}; - - -GtkType gtk_hlist_get_type (void); -GtkWidget* gtk_hlist_new (void); -void gtk_hlist_insert_items (GtkHList *list, - GList *items, - gint position); -void gtk_hlist_append_items (GtkHList *list, - GList *items); -void gtk_hlist_prepend_items (GtkHList *list, - GList *items); -void gtk_hlist_remove_items (GtkHList *list, - GList *items); -void gtk_hlist_remove_items_no_unref (GtkHList *list, - GList *items); -void gtk_hlist_clear_items (GtkHList *list, - gint start, - gint end); -void gtk_hlist_select_item (GtkHList *list, - gint item); -void gtk_hlist_unselect_item (GtkHList *list, - gint item); -void gtk_hlist_select_child (GtkHList *list, - GtkWidget *child); -void gtk_hlist_unselect_child (GtkHList *list, - GtkWidget *child); -gint gtk_hlist_child_position (GtkHList *list, - GtkWidget *child); -void gtk_hlist_set_selection_mode (GtkHList *list, - GtkSelectionMode mode); -void gtk_hlist_set_horizontal_mode (GtkHList *list, - gboolean horiz); - -void gtk_hlist_extend_selection (GtkHList *list, - GtkScrollType scroll_type, - gfloat position, - gboolean auto_start_selection); -void gtk_hlist_start_selection (GtkHList *list); -void gtk_hlist_end_selection (GtkHList *list); -void gtk_hlist_select_all (GtkHList *list); -void gtk_hlist_unselect_all (GtkHList *list); -void gtk_hlist_scroll_horizontal (GtkHList *list, - GtkScrollType scroll_type, - gfloat position); -void gtk_hlist_scroll_vertical (GtkHList *list, - GtkScrollType scroll_type, - gfloat position); -void gtk_hlist_toggle_add_mode (GtkHList *list); -void gtk_hlist_toggle_focus_row (GtkHList *list); -void gtk_hlist_toggle_row (GtkHList *list, - GtkWidget *item); -void gtk_hlist_undo_selection (GtkHList *list); -void gtk_hlist_end_drag_selection (GtkHList *list); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_HLIST_H__ */ diff --git a/src/gmdb/info.c b/src/gmdb/info.c deleted file mode 100644 index 52f88cf..0000000 --- a/src/gmdb/info.c +++ /dev/null @@ -1,89 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -extern GtkWidget *app; -extern MdbHandle *mdb; - -typedef struct GMdbInfoWindow { - GtkWidget *window; -} GMdbInfoWindow; - -GMdbInfoWindow *infow; - -/* callbacks */ -gint -gmdb_info_dismiss_cb(GtkWidget *w, gpointer data) -{ - g_free(infow); - infow = NULL; - - return FALSE; -} - -void -gmdb_info_add_keyvalue(GtkWidget *table, gint row, gchar *key, gchar *value) -{ -GtkWidget *label; - - label = gtk_label_new(key); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row+1, - GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0); - gtk_widget_show(label); - label = gtk_label_new(value); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); - gtk_table_attach(GTK_TABLE(table), label, 1, 2, row, row+1, - GTK_FILL| GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0); - gtk_widget_show(label); -} - -GtkWidget * -gmdb_info_new() -{ -GtkWidget *vbox; -GtkWidget *button; -GtkWidget *table; -char tmpstr[20]; -struct stat st; - - if (infow) { - return infow->window; - } - - infow = g_malloc(sizeof(GMdbInfoWindow)); - infow->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(infow->window), "File Info"); - gtk_widget_set_uposition(infow->window, 300,300); - gtk_widget_show(infow->window); - - gtk_signal_connect ( GTK_OBJECT (infow->window), - "destroy", GTK_SIGNAL_FUNC (gmdb_info_dismiss_cb), infow->window); - - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); - gtk_container_add(GTK_CONTAINER(infow->window), vbox); - - table = gtk_table_new(3,2,FALSE); - gtk_widget_show(table); - gmdb_info_add_keyvalue(table, 0, "File Name:", mdb->filename); - gmdb_info_add_keyvalue(table, 1, "JET Version:", mdb->jet_version == MDB_VER_JET3 ? "3 (Access 97)" : "4 (Access 2000/XP)"); - assert( fstat(mdb->fd, &st)!=-1 ); - sprintf(tmpstr, "%ld", st.st_size); - gmdb_info_add_keyvalue(table, 2, "File Size:", tmpstr); - sprintf(tmpstr, "%ld", st.st_size / mdb->pg_size); - gmdb_info_add_keyvalue(table, 3, "Number of Pages:", tmpstr); - sprintf(tmpstr, "%d", mdb->num_catalog); - gmdb_info_add_keyvalue(table, 4, "Number of Tables:", tmpstr); - - gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 5); - - button = gtk_button_new_with_label("Close"); - gtk_widget_show (button); - gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 5); - - gtk_signal_connect_object ( GTK_OBJECT (button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT(infow->window)); - - return infow->window; -} diff --git a/src/gmdb/macro.c b/src/gmdb/macro.c deleted file mode 100644 index 4c9a617..0000000 --- a/src/gmdb/macro.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -GtkWidget *macro_hlist; -extern GtkWidget *app; - -void -gmdb_macro_add_icon(gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm( NULL, - gtk_widget_get_colormap(app), &mask, NULL, "table.xpm"); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show_all (li); - gtk_hlist_append_items(GTK_HLIST(macro_hlist), glist); -} - -void gmdb_macro_populate(MdbHandle *mdb) -{ -int i; -MdbCatalogEntry *entry; - - /* loop over each entry in the catalog */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - - /* if it's a macro */ - if (entry->object_type == MDB_MACRO) { - /* add table to tab */ - gmdb_macro_add_icon(entry->object_name); - } /* if MDB_MACRO */ - } /* for */ -} diff --git a/src/gmdb/macros.xpm b/src/gmdb/macros.xpm deleted file mode 100644 index b4b72a4..0000000 --- a/src/gmdb/macros.xpm +++ /dev/null @@ -1,137 +0,0 @@ -/* XPM */ -static char * macros_xpm[] = { -"14 14 120 2", -" c None", -". c #564F44", -"+ c #554C41", -"@ c #534D44", -"# c #817867", -"$ c #756A5C", -"% c #756B5E", -"& c #70685C", -"* c #A0907A", -"= c #827766", -"- c #998A75", -"; c #C8B498", -"> c #887A68", -", c #C5B195", -"' c #887B68", -") c #A8977F", -"! c #9A8A75", -"~ c #6D6356", -"{ c #DEC7A9", -"] c #A0907B", -"^ c #C4B196", -"/ c #DDC7A8", -"( c #A1917C", -"_ c #CDB99C", -": c #D9C3A5", -"< c #A2927C", -"[ c #C5B296", -"} c #7A7165", -"| c #6E6456", -"1 c #E1C9AB", -"2 c #A89781", -"3 c #BFAD93", -"4 c #E1CAAB", -"5 c #B6A48B", -"6 c #D3BEA1", -"7 c #B4A38A", -"8 c #9B8C76", -"9 c #9C8D76", -"0 c #92836F", -"a c #897C69", -"b c #8A7C69", -"c c #5F564B", -"d c #AC9A83", -"e c #E5CEAD", -"f c #B3A188", -"g c #CBB79A", -"h c #877A67", -"i c #B3A287", -"j c #E0C9A9", -"k c #E1CBAB", -"l c #E2CBAD", -"m c #D8C2A5", -"n c #6B6255", -"o c #595349", -"p c #BDAB90", -"q c #968772", -"r c #8F806C", -"s c #D6C1A3", -"t c #B4A388", -"u c #C5B295", -"v c #B2A088", -"w c #796D5D", -"x c #978973", -"y c #90826E", -"z c #DCC6A8", -"A c #E4CDAD", -"B c #7D705F", -"C c #756C5F", -"D c #B6A48A", -"E c #C5B196", -"F c #B2A188", -"G c #9E8F78", -"H c #B3A087", -"I c #B39F86", -"J c #7A6E5D", -"K c #867866", -"L c #B09F87", -"M c #AD9C83", -"N c #E3CDAC", -"O c #E5CEAE", -"P c #9D8C76", -"Q c #796E5E", -"R c #E3CCAA", -"S c #E5CDAD", -"T c #E0CAAB", -"U c #E4CDAE", -"V c #DDC7A9", -"W c #C0AD92", -"X c #DEC8A9", -"Y c #847764", -"Z c #6B6254", -"` c #D4BFA1", -" . c #E3CCAD", -".. c #BFAC91", -"+. c #5E574C", -"@. c #A89880", -"#. c #E3CDAD", -"$. c #E3CCAC", -"%. c #786E5F", -"&. c #867A6A", -"*. c #C9B699", -"=. c #DEC7A7", -"-. c #D7C2A4", -";. c #9A8C77", -">. c #797060", -",. c #D3BFA0", -"'. c #E0C9AA", -"). c #E5CDAE", -"!. c #E2CCAB", -"~. c #928470", -"{. c #565148", -"]. c #C6B297", -"^. c #E5CEAF", -"/. c #E4CEAE", -"(. c #8E806E", -"_. c #676056", -":. c #C6B398", -"<. c #E2CDAE", -"[. c #E1CBAD", -"}. c #A49681", -" . + @ # $ % ", -"& * = - ; > , ; ' ) ! ", -"~ { ] ^ / ( _ : < [ ; } ", -"| 1 2 3 4 5 6 7 8 9 0 a b ", -"c { 0 d e f g h i j k l m n ", -"o p q r s t u v w x y z A B ", -"C D E F G H I J K L M N O P ", -"Q R O S T U V W X O O O A Y ", -"Z ` O O O O O O O O O ...+.", -" @.#.O O O O O O O $.W %. ", -" &.*.A j =.A $.O -.;.~ ", -" >.,.4 '.).O !.~. ", -" {.].O O ^./.T (. ", -" _.:.O O /.<.[.}. "}; diff --git a/src/gmdb/main.c b/src/gmdb/main.c deleted file mode 100644 index c4fb495..0000000 --- a/src/gmdb/main.c +++ /dev/null @@ -1,323 +0,0 @@ -#include "gtkhlist.h" -#include -#include -#include "gmdb.h" -#include "code.xpm" -#include "forms.xpm" -#include "macros.xpm" -#include "query.xpm" -#include "reports.xpm" - - -GtkWidget *app; -MdbSQL *sql; - -GtkWidget *main_notebook; -int main_show_debug; - - -/* called when the user closes the window */ -static gint -delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) -{ - /* signal the main loop to quit */ - gtk_main_quit(); - /* return FALSE to continue closing the window */ - return FALSE; -} - -static void -gmdb_info_cb(GtkWidget *button, gpointer data) -{ - gmdb_info_new(); -} - -/* show the debug tab */ -static void -show_debug_cb(GtkWidget *button, gpointer data) -{ - if (main_show_debug) { - main_show_debug = 0; - gtk_notebook_remove_page(GTK_NOTEBOOK(main_notebook), 6); - } else { - main_show_debug = 1; - gmdb_debug_tab_new(main_notebook); - gtk_notebook_set_page(GTK_NOTEBOOK(main_notebook), -1); - } -} -/* a callback for the buttons */ -static void -gmdb_about_cb(GtkWidget *button, gpointer data) -{ -const gchar *authors[] = { - "Brian Bruns", - NULL -}; -#ifdef HAVE_GNOME -gtk_widget_show (gnome_about_new ("Gtk MDB Viewer", "0.1", - "Copyright 2002 Brian Bruns", - (const gchar **) authors, - _("The Gtk-MDB Viewer is the grapical interface to " - "MDB Tools. It lets you view, print and export data " - "from MDB files produced by MS Access 97/2000/XP."), - NULL)); -#else - gmdb_info_msg("Gtk MDB Viewer 0.1\nCopyright 2002 Brian Bruns\n" - "The Gtk-MDB Viewer is the grapical interface to\n" - "MDB Tools. It lets you view, print and export data\n" - "from MDB files produced by MS Access 97/2000/XP.\n"); -#endif -} - -/* a callback for the buttons */ -static void -a_callback(GtkWidget *button, gpointer data) -{ - - /*just print a string so that we know we got there*/ - g_print("Inside Callback\n"); -} - -#ifdef HAVE_GNOME - -GnomeUIInfo file_menu[] = { - GNOMEUIINFO_MENU_OPEN_ITEM(gmdb_file_select_cb, "Open Database..."), - GNOMEUIINFO_MENU_CLOSE_ITEM(gmdb_file_close_cb, "Close Database"), - GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_MENU_PRINT_SETUP_ITEM(a_callback, NULL), - GNOMEUIINFO_MENU_PRINT_ITEM("Print...",NULL), - GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_MENU_EXIT_ITEM(gtk_main_quit,NULL), - GNOMEUIINFO_END -}; - -GnomeUIInfo edit_menu[] = { - GNOMEUIINFO_MENU_UNDO_ITEM("Undo", a_callback), - GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_MENU_CUT_ITEM("Cut",a_callback), - GNOMEUIINFO_MENU_COPY_ITEM("Copy", a_callback), - GNOMEUIINFO_MENU_PASTE_ITEM("Paste", a_callback), - GNOMEUIINFO_END -}; -GnomeUIInfo view_menu[] = { - GNOMEUIINFO_ITEM_NONE("File _Info","Display Information about MDB File", - gmdb_info_cb), - GNOMEUIINFO_ITEM_NONE("_Debug Tab","Show file debugger tab", - show_debug_cb), - GNOMEUIINFO_END -}; -GnomeUIInfo tools_menu[] = { - GNOMEUIINFO_ITEM_NONE("S_QL Window...","Run SQL Query Tool", gmdb_sql_new_window_cb), - GNOMEUIINFO_ITEM_NONE("E_xport Schema...","Export the database schema DDL to a file", - a_callback), - GNOMEUIINFO_END -}; - -GnomeUIInfo help_menu[] = { - GNOMEUIINFO_MENU_ABOUT_ITEM(gmdb_about_cb, NULL), - GNOMEUIINFO_END -}; - -GnomeUIInfo menubar[] = { - GNOMEUIINFO_MENU_FILE_TREE(file_menu), - GNOMEUIINFO_SUBTREE("_Edit",edit_menu), - GNOMEUIINFO_SUBTREE("_View",view_menu), - GNOMEUIINFO_SUBTREE("_Tools",tools_menu), - GNOMEUIINFO_MENU_HELP_TREE(help_menu), - GNOMEUIINFO_END -}; -#else -static GtkItemFactoryEntry menu_items[] = { - { "/_File", NULL, NULL, 0, "" }, - { "/_File/_Open", "O", gmdb_file_select_cb, 0, NULL }, - { "/_File/_Close", "C", gmdb_file_close_cb, 0, NULL }, - { "/_File/sep1", NULL, NULL, 0, "" }, - { "/_File/Print Setup", NULL, NULL, 0, NULL }, - { "/_File/_Print", NULL, NULL, 0, NULL }, - { "/_File/E_xit", "Q", gtk_main_quit, 0, NULL }, - { "/_Edit", NULL, NULL, 0, "" }, - { "/_Edit/_Undo", NULL, NULL, 0, NULL }, - { "/_File/sep2", NULL, NULL, 0, "" }, - { "/_Edit/Cu_t", NULL, NULL, 0, NULL }, - { "/_Edit/_Copy", NULL, NULL, 0, NULL }, - { "/_Edit/_Paste", NULL, NULL, 0, NULL }, - { "/_View", NULL, NULL, 0, "" }, - { "/_View/File _Info", NULL, gmdb_info_cb, 0, NULL }, - { "/_View/_Debug Tab", NULL, show_debug_cb, 0, NULL }, - { "/_Tools", NULL, NULL, 0, "" }, - { "/_Tools/S_QL Window...", NULL, gmdb_sql_new_window_cb, 0, NULL }, - { "/_Tools/E_xport Schema...", NULL, a_callback, 0, NULL }, - { "/_Help", NULL, NULL, 0, "" }, - { "/_Help/About...", NULL, gmdb_about_cb, 0, NULL }, -}; -#endif - -GtkWidget * -add_tab(GtkWidget *notebook, gchar **xpm, gchar *text) -{ -GtkWidget *tabbox; -GtkWidget *label; -GtkWidget *pixmapwid; -GtkWidget *frame; -GtkWidget *hlist; -GdkPixmap *pixmap; -GdkBitmap *mask; - - frame = gtk_frame_new (NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); - gtk_container_set_border_width (GTK_CONTAINER (frame), 10); - gtk_widget_set_usize (frame, 100, 75); - gtk_widget_show (frame); - - hlist = gtk_hlist_new (); - gtk_widget_show (hlist); - gtk_container_add(GTK_CONTAINER(frame), hlist); - - - /* create a picture/label box and use for tab */ - tabbox = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm_d( NULL, - gtk_widget_get_colormap(app), &mask, NULL, xpm); - - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (tabbox), pixmapwid, TRUE, TRUE, 0); - - label = gtk_label_new (text); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (tabbox), label, TRUE, TRUE, 0); - - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, tabbox); - - return hlist; -} - -void -add_icon(GtkWidget *list, gchar **xpm, gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; -//GtkStyle *style; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - //style = gtk_widget_get_style( app ); - pixmap = gdk_pixmap_colormap_create_from_xpm_d( NULL, - gtk_widget_get_colormap(app), &mask, NULL, xpm); - //pixmap = gdk_pixmap_create_from_xpm_d( app->window, &mask, - //&style->bg[GTK_STATE_NORMAL], - //(gchar **)xpm ); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, TRUE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show (li); - gtk_hlist_append_items(GTK_HLIST(list), glist); -} -int -main(int argc, char *argv[]) -{ -GtkWidget *hbox; -#ifndef HAVE_GNOME -GtkWidget *vbox; -GtkWidget *menubar; -GtkItemFactory *item_factory; -GtkAccelGroup *accel_group; -gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); - -#endif - -#ifdef SQL - /* initialize the SQL engine */ - sql = mdb_sql_init(); -#endif - -#ifdef HAVE_GNOME - /* Initialize GNOME */ - gnome_init ("gtk-mdb-viewer", "0.1", argc, argv); - /* Create a Gnome app widget, which sets up a basic window - for your application */ - app = gnome_app_new ("gtk-mdb-viewer", "gtk-MDB File Viewer"); -#else - gtk_init(&argc, &argv); - app = gtk_window_new (GTK_WINDOW_TOPLEVEL); - vbox = gtk_vbox_new (FALSE,1); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 1); - gtk_container_add (GTK_CONTAINER (app), vbox); - gtk_widget_show (vbox); -#endif - - gtk_widget_set_uposition(GTK_WIDGET(app), 50, 50); - - /* bind "delete_event", which is the event we get when - the user closes the window with the window manager, - to gtk_main_quit, which is a function that causes - the gtk_main loop to exit, and consequently to quit - the application */ - gtk_signal_connect (GTK_OBJECT (app), "delete_event", - GTK_SIGNAL_FUNC (delete_event), NULL); - -#ifdef HAVE_GNOME - gnome_app_create_menus (GNOME_APP (app), menubar); - /* create a horizontal box for the buttons and add it - ** into the app widget */ - hbox = gtk_hbox_new (FALSE,5); - gnome_app_set_contents (GNOME_APP (app), hbox); -#else - accel_group = gtk_accel_group_new (); - item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", accel_group); - gtk_item_factory_create_items (item_factory, nmenu_items, menu_items, NULL); - gtk_window_add_accel_group (GTK_WINDOW (app), accel_group); - /* Finally, return the actual menu bar created by the item factory. */ - menubar = gtk_item_factory_get_widget (item_factory, "
"); - gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); - hbox = gtk_hbox_new (FALSE,5); - gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); -#endif - - /* create the tabbed interface */ - main_notebook = gtk_notebook_new(); - gtk_box_pack_start (GTK_BOX (hbox), main_notebook, TRUE, TRUE, 0); - - gmdb_table_add_tab(main_notebook); - query_hlist = add_tab(main_notebook, query_xpm, "Queries"); - form_hlist = add_tab(main_notebook, forms_xpm, "Forms"); - report_hlist = add_tab(main_notebook, reports_xpm, "Reports"); - macro_hlist = add_tab(main_notebook, macros_xpm, "Macros"); - module_hlist = add_tab(main_notebook, code_xpm, "Modules"); - - //add_icon(table_hlist, "table.xpm", "Table1"); - - /* show everything inside this app widget and the app - widget itself */ - gtk_widget_show_all(app); - - if (argc>1) { - gmdb_file_open(argv[1]); - } - - /* enter the main loop */ - gtk_main (); - -#ifdef SQL - /* free MDB Tools library */ - mdb_sql_exit(sql); -#endif - - return 0; -} diff --git a/src/gmdb/module.c b/src/gmdb/module.c deleted file mode 100644 index 183e008..0000000 --- a/src/gmdb/module.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -GtkWidget *module_hlist; -extern GtkWidget *app; - -void -gmdb_module_add_icon(gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm( NULL, - gtk_widget_get_colormap(app), &mask, NULL, "table.xpm"); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show_all (li); - gtk_hlist_append_items(GTK_HLIST(module_hlist), glist); -} - -void gmdb_module_populate(MdbHandle *mdb) -{ -int i; -MdbCatalogEntry *entry; - - /* loop over each entry in the catalog */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - - /* if it's a module */ - if (entry->object_type == MDB_MODULE) { - /* add table to tab */ - gmdb_module_add_icon(entry->object_name); - } /* if MDB_MODULE */ - } /* for */ -} diff --git a/src/gmdb/pk.xpm b/src/gmdb/pk.xpm deleted file mode 100644 index a8f9b44..0000000 --- a/src/gmdb/pk.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * pk_xpm[] = { -"16 16 5 1", -" c None", -". c #FFBF00", -"+ c #1C59DD", -"@ c #000000", -"# c #E8AC17", -" ", -" .... +++ ", -" ..@@.. + + ", -" ...... + + ", -" ...... +++ ", -" .... + ", -" .# + ", -" .# ", -" .# + + ", -" .#. + + ", -" .#.. ++ ", -" .# + + ", -" .#. + + ", -" .#.. + + ", -" ", -" "}; diff --git a/src/gmdb/query.c b/src/gmdb/query.c deleted file mode 100644 index 5e7b88b..0000000 --- a/src/gmdb/query.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -GtkWidget *query_hlist; -extern GtkWidget *app; - -void -gmdb_query_add_icon(gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm( NULL, - gtk_widget_get_colormap(app), &mask, NULL, "query.xpm"); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show_all (li); - gtk_hlist_append_items(GTK_HLIST(query_hlist), glist); -} - -void gmdb_query_populate(MdbHandle *mdb) -{ -int i; -MdbCatalogEntry *entry; - - /* loop over each entry in the catalog */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - - /* if it's a query */ - if (entry->object_type == MDB_QUERY) { - gmdb_query_add_icon(entry->object_name); - } /* if MDB_QUERY */ - } /* for */ -} diff --git a/src/gmdb/query.xpm b/src/gmdb/query.xpm deleted file mode 100644 index dd3a654..0000000 --- a/src/gmdb/query.xpm +++ /dev/null @@ -1,46 +0,0 @@ -/* XPM */ -static char * query_xpm[] = { -"10 12 31 1", -" c None", -". c #C9C5C5", -"+ c #C2BEBE", -"@ c #D0CCCC", -"# c #DAD5D5", -"$ c #C1BDBD", -"% c #9B9B9B", -"& c #B6B5B5", -"* c #C0BCBC", -"= c #9D9C9C", -"- c #D4D1D1", -"; c #CCC8C8", -"> c #8C8C8C", -", c #A09F9F", -"' c #959696", -") c #A7A6A6", -"! c #C6C1C1", -"~ c #8D8E8E", -"{ c #A4A5A5", -"] c #BEBBBB", -"^ c #C3C0C0", -"/ c #9D9E9E", -"( c #AFACAC", -"_ c #949595", -": c #B9B7B7", -"< c #AEABAB", -"[ c #B0AEAE", -"} c #A2A2A2", -"| c #A5A5A5", -"1 c #979797", -"2 c #ACABAB", -" .+@ ", -" #$%&*%=- ", -" ;> ,' ", -" )> !~+", -" +{ ]~+", -" ^~/ ", -" (_: ", -" <[ ", -" } ", -" ", -" |+ ", -" +12 "}; diff --git a/src/gmdb/report.c b/src/gmdb/report.c deleted file mode 100644 index aa58593..0000000 --- a/src/gmdb/report.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -GtkWidget *report_hlist; -extern GtkWidget *app; - -void -gmdb_report_add_icon(gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm( NULL, - gtk_widget_get_colormap(app), &mask, NULL, "table.xpm"); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show_all (li); - gtk_hlist_append_items(GTK_HLIST(report_hlist), glist); -} - -void gmdb_report_populate(MdbHandle *mdb) -{ -int i; -MdbCatalogEntry *entry; - - /* loop over each entry in the catalog */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - - /* if it's a report */ - if (entry->object_type == MDB_REPORT) { - /* add table to tab */ - gmdb_report_add_icon(entry->object_name); - } /* if MDB_REPORT */ - } /* for */ -} diff --git a/src/gmdb/reports.xpm b/src/gmdb/reports.xpm deleted file mode 100644 index 66b4e11..0000000 --- a/src/gmdb/reports.xpm +++ /dev/null @@ -1,95 +0,0 @@ -/* XPM */ -static char * reports_xpm[] = { -"16 16 76 1", -" c None", -". c #45372B", -"+ c #4F3939", -"@ c #E7D1AA", -"# c #EBD7B9", -"$ c #D1B692", -"% c #000000", -"& c #F0DBB9", -"* c #F0E7D9", -"= c #F5EBDF", -"- c #CDB18C", -"; c #050403", -"> c #4C3E31", -", c #EFE4D7", -"' c #FBF7F3", -") c #FFFCF9", -"! c #FDF6EF", -"~ c #554542", -"{ c #5A4A47", -"] c #55473A", -"^ c #F2E9DB", -"/ c #FBF6F0", -"( c #FEFBF8", -"_ c #FEFAF7", -": c #FCF4EF", -"< c #FAF3ED", -"[ c #413533", -"} c #57483A", -"| c #F7EDDE", -"1 c #FEF8F0", -"2 c #FEF8EF", -"3 c #FDF7F3", -"4 c #F9F1E7", -"5 c #FBF2E7", -"6 c #594946", -"7 c #EFD8B0", -"8 c #A78568", -"9 c #FBF2E3", -"0 c #FEF5E8", -"a c #FDF5EA", -"b c #F9EFE2", -"c c #F7EDDC", -"d c #F7ECDC", -"e c #4D3D30", -"f c #F1E2CA", -"g c #FCEFD9", -"h c #FEF2DC", -"i c #F8EAD3", -"j c #F4E5CE", -"k c #EEDBC5", -"l c #F5E5C7", -"m c #F7E7C9", -"n c #FCEED0", -"o c #F6E6C8", -"p c #F4E1C3", -"q c #E9D8BC", -"r c #E2CFB1", -"s c #AE9676", -"t c #E5CFA8", -"u c #E4CCA5", -"v c #EFD8B6", -"w c #EBD7B5", -"x c #E7D3B4", -"y c #D7BD99", -"z c #FFFCFB", -"A c #FFF8E9", -"B c #E2C7A3", -"C c #806553", -"D c #BFA582", -"E c #DBC19D", -"F c #020200", -"G c #E1C6A2", -"H c #836854", -"I c #B89F7D", -"J c #FEF7E8", -"K c #5D4B47", -" ... ", -" +@#$%% ", -" +&*=#-;% ", -" >,'))!#-~{ ", -" ]^/(_:<{[{%", -" }|12345{67%", -" .890abcd%%% ", -" efghhijk; ", -" .lmnopqr% ", -" ...stuvw#xy% ", -".zABCCDyEByF ", -".-#zAGHCIDD% ", -" %%-#zJB{Ks% ", -" %%-#{[{% ", -" %%{{7% ", -" %%% "}; diff --git a/src/gmdb/sql.c b/src/gmdb/sql.c deleted file mode 100644 index 6460993..0000000 --- a/src/gmdb/sql.c +++ /dev/null @@ -1,284 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" - -#if SQL - -typedef struct GMdbSQLWindow { - GtkWidget *window; - GtkWidget *textbox; - GtkWidget *combo; - GtkWidget *clist; - GtkWidget *scroll; - GtkWidget *ctree; - GtkCTreeNode *current_node; - GList *history; -} GMdbSQLWindow; - -GList *window_list; - -extern GtkWidget *app; -extern MdbHandle *mdb; -extern MdbSQL *sql; - - -void gmdb_sql_ctree_populate(MdbHandle *mdb, GMdbSQLWindow *sqlwin); - -/* callbacks */ -gint -gmdb_sql_close(GtkHList *hlist, GtkWidget *w, GMdbSQLWindow *sqlwin) -{ - window_list = g_list_remove(window_list, sql); - g_free(sql); - return FALSE; -} - -void -gmdb_sql_tree_select_cb(GtkCTree *tree, GList *node, gint column, GMdbSQLWindow *sqlwin) -{ - sqlwin->current_node = node; -} -void -gmdb_sql_dnd_dataget_cb( - GtkWidget *w, GdkDragContext *dc, - GtkSelectionData *selection_data, guint info, guint t, - GMdbSQLWindow *sqlwin) -{ -gchar tablename[256]; -gchar *text[2]; - - gtk_ctree_get_node_info(GTK_CTREE(sqlwin->ctree), sqlwin->current_node, text, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - - strcpy(tablename, "Shippers"); - gtk_selection_data_set( - selection_data, - GDK_SELECTION_TYPE_STRING, - 8, /* 8 bits per character. */ - text[0], strlen(text[0])); -} -void gmdb_sql_dnd_datareceived_cb( - GtkWidget *w, - GdkDragContext *dc, - gint x, gint y, - GtkSelectionData *selection_data, - guint info, guint t, - GMdbSQLWindow *sqlwin) -{ -gchar *buf; - - buf = selection_data->data; - if (gtk_text_get_length(GTK_TEXT(sqlwin->textbox))==0) { - gtk_text_insert(GTK_TEXT(sqlwin->textbox), NULL, NULL, NULL, "select * from ", 14); - } - gtk_text_insert(GTK_TEXT(sqlwin->textbox), NULL, NULL, NULL, buf, strlen(buf)); - gtk_widget_grab_focus(GTK_WIDGET(sqlwin->textbox)); -} - -void -gmdb_sql_select_hist_cb(GtkList *list, GtkWidget *w, GMdbSQLWindow *sqlwin) -{ -guint child_num; -gchar *buf; - - child_num = gtk_list_child_position(list, w); - buf = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(sqlwin->combo)->entry)); - gtk_editable_delete_text(GTK_EDITABLE(sqlwin->textbox), 0, -1); - gtk_text_insert(GTK_TEXT(sqlwin->textbox), NULL, NULL, NULL, buf, strlen(buf)); -} - -void -gmdb_sql_execute_cb(GtkWidget *w, GMdbSQLWindow *sqlwin) -{ -guint len; -gchar *buf; -gchar *bound_data[256]; -int i; -MdbSQLColumn *sqlcol; -gchar *titles[256]; - - /* stuff this query on the history */ - len = gtk_text_get_length(GTK_TEXT(sqlwin->textbox)); - buf = gtk_editable_get_chars(GTK_EDITABLE(sqlwin->textbox), 0, -1); - sqlwin->history = g_list_prepend(sqlwin->history, g_strdup(buf)); - gtk_combo_set_popdown_strings(GTK_COMBO(sqlwin->combo), sqlwin->history); - - /* ok now execute it */ - g_input_ptr = buf; - /* begin unsafe */ - _mdb_sql(sql); - if (yyparse()) { - /* end unsafe */ - gmdb_info_msg("Couldn't parse SQL"); - mdb_sql_reset(sql); - return; - } - for (i=0;inum_columns;i++) { - bound_data[i] = (char *) g_malloc0(MDB_BIND_SIZE); - mdb_sql_bind_column(sql, i+1, bound_data[i]); - sqlcol = g_ptr_array_index(sql->columns,i); - titles[i] = sqlcol->name; - } - if (sqlwin->clist) { - gtk_container_remove(GTK_CONTAINER(sqlwin->scroll), sqlwin->clist); - } - sqlwin->clist = gtk_clist_new_with_titles(sql->num_columns, titles); - gtk_container_add(GTK_CONTAINER(sqlwin->scroll),sqlwin->clist); - gtk_widget_show(sqlwin->clist); - - while(mdb_fetch_row(sql->cur_table)) { - gtk_clist_append(GTK_CLIST(sqlwin->clist), bound_data); - } - - - /* free the memory used to bind */ - for (i=0;inum_columns;i++) { - g_free(bound_data[i]); - } - - mdb_sql_reset(sql); - g_free(buf); -} - -void -gmdb_sql_new_window_cb(GtkWidget *w, gpointer data) -{ -GtkWidget *hpane; -GtkWidget *vpane; -GtkWidget *vbox; -GtkWidget *hbox; -GtkWidget *scroll; -GtkWidget *button; -GtkWidget *frame1; -GtkTargetEntry src; -GMdbSQLWindow *sqlwin; - - if (!mdb) { - gmdb_info_msg("No database is open."); - return; - } - sqlwin = g_malloc0(sizeof(GMdbSQLWindow)); - sqlwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(sqlwin->window), "Query Tool"); - gtk_widget_set_usize(sqlwin->window, 400,300); - gtk_widget_show(sqlwin->window); - - gtk_signal_connect (GTK_OBJECT (sqlwin->window), "delete_event", - GTK_SIGNAL_FUNC (gmdb_sql_close), sqlwin); - - vpane = gtk_vpaned_new(); - gtk_widget_show(vpane); - gtk_paned_set_position(GTK_PANED(vpane), 100); - gtk_paned_set_gutter_size(GTK_PANED(vpane), 12); - gtk_container_add(GTK_CONTAINER(sqlwin->window), vpane); - - hpane = gtk_hpaned_new(); - gtk_widget_show(hpane); - gtk_paned_set_position(GTK_PANED(hpane), 100); - gtk_paned_set_gutter_size(GTK_PANED(hpane), 12); - gtk_container_add(GTK_CONTAINER(vpane), hpane); - - scroll = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_widget_show (scroll); - gtk_container_add(GTK_CONTAINER(hpane), scroll); - - sqlwin->ctree = gtk_ctree_new (1, 0); - gtk_widget_show (sqlwin->ctree); - gtk_container_add (GTK_CONTAINER (scroll), sqlwin->ctree); - - gtk_signal_connect ( GTK_OBJECT (sqlwin->ctree), - "tree-select-row", GTK_SIGNAL_FUNC (gmdb_sql_tree_select_cb), sqlwin); - - vbox = gtk_vbox_new(FALSE,0); - gtk_widget_show (vbox); - gtk_container_add(GTK_CONTAINER(hpane), vbox); - - frame1 = gtk_frame_new (NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame1), GTK_SHADOW_IN); - gtk_widget_show (frame1); - gtk_box_pack_start (GTK_BOX (vbox), frame1, TRUE, TRUE, 0); - - sqlwin->textbox = gtk_text_new (NULL,NULL); - gtk_widget_show (sqlwin->textbox); - gtk_text_set_editable(GTK_TEXT(sqlwin->textbox), TRUE); - gtk_container_add(GTK_CONTAINER(frame1), sqlwin->textbox); - - gtk_signal_connect ( GTK_OBJECT (sqlwin->textbox), - "activate", GTK_SIGNAL_FUNC (gmdb_sql_execute_cb), sqlwin); - - hbox = gtk_hbox_new(FALSE,0); - gtk_widget_show (hbox); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - - sqlwin->combo = gtk_combo_new(); - gtk_widget_show (sqlwin->combo); - gtk_box_pack_start (GTK_BOX (hbox), sqlwin->combo, TRUE, TRUE, 0); - gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(sqlwin->combo)->entry), FALSE); - - gtk_signal_connect ( GTK_OBJECT (GTK_COMBO(sqlwin->combo)->list), - "select-child", GTK_SIGNAL_FUNC (gmdb_sql_select_hist_cb), sqlwin); - - button = gtk_button_new_with_label("Execute"); - gtk_widget_show (button); - gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 5); - - gtk_signal_connect ( GTK_OBJECT (button), - "clicked", GTK_SIGNAL_FUNC (gmdb_sql_execute_cb), sqlwin); - - sqlwin->scroll = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sqlwin->scroll), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show (sqlwin->scroll); - gtk_container_add(GTK_CONTAINER(vpane), sqlwin->scroll); - - sqlwin->clist = gtk_clist_new(1); - gtk_widget_show(sqlwin->clist); - gtk_container_add(GTK_CONTAINER(sqlwin->scroll),sqlwin->clist); - - /* populate first level of tree */ - gmdb_sql_ctree_populate(mdb, sqlwin); - src.target = "table"; - src.flags = 0; - src.info = 1; - gtk_drag_source_set( sqlwin->ctree, GDK_BUTTON1_MASK, &src, 1, GDK_ACTION_COPY); - gtk_drag_dest_set( sqlwin->textbox, - GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | - GTK_DEST_DEFAULT_DROP, - &src, 1, GDK_ACTION_COPY | GDK_ACTION_MOVE); - gtk_signal_connect( GTK_OBJECT(sqlwin->ctree), "drag_data_get", - GTK_SIGNAL_FUNC(gmdb_sql_dnd_dataget_cb), sqlwin); - gtk_signal_connect( GTK_OBJECT(sqlwin->textbox), "drag_data_received", - GTK_SIGNAL_FUNC(gmdb_sql_dnd_datareceived_cb), sqlwin); - - gtk_widget_grab_focus(GTK_WIDGET(sqlwin->textbox)); - - /* add this one to the window list */ - window_list = g_list_append(window_list, sql); -} - -/* functions */ -void gmdb_sql_ctree_populate(MdbHandle *mdb, GMdbSQLWindow *sqlwin) -{ -int i; -MdbCatalogEntry *entry; -gchar *text[2]; - - /* add all user tables in catalog to tab */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - if (mdb_is_user_table(entry)) { - text[0] = entry->object_name; - text[1] = ""; - gtk_ctree_insert_node(GTK_CTREE(sqlwin->ctree), NULL, NULL, text, 0, NULL, NULL, NULL, NULL, FALSE, FALSE); - } - } /* for */ -} -#else - -void -gmdb_sql_new_window_cb(GtkWidget *w, gpointer data) -{ - gmdb_info_msg("SQL support was not built in.\nRun configure with the --enable-sql option."); -} - -#endif diff --git a/src/gmdb/table.c b/src/gmdb/table.c deleted file mode 100644 index d47531f..0000000 --- a/src/gmdb/table.c +++ /dev/null @@ -1,201 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" -#include "table.xpm" - -GtkWidget *table_hlist; -GtkWidget *table_data_window; -GtkWidget *table_def_window; -extern GtkWidget *app; -extern MdbHandle *mdb; -int selected_child = -1; -int selected_table = -1; -extern char *mdb_access_types[]; - -/* callbacks */ -void -gmdb_table_def_cb(GtkHList *hlist, GtkWidget *w, gpointer data) -{ -MdbCatalogEntry *entry; - - /* nothing selected yet? */ - if (selected_table==-1) { - return; - } - - entry = g_ptr_array_index(mdb->catalog,selected_table); - - gmdb_table_def_new(entry); -} - -void -gmdb_table_export_cb(GtkHList *hlist, GtkWidget *w, gpointer data) -{ -MdbCatalogEntry *entry; - - /* nothing selected yet? */ - if (selected_table==-1) { - return; - } - - entry = g_ptr_array_index(mdb->catalog,selected_table); - - gmdb_table_export(entry); -} -void -gmdb_table_data_cb(GtkHList *hlist, GtkWidget *w, gpointer data) -{ -MdbCatalogEntry *entry; - - /* nothing selected yet? */ - if (selected_table==-1) { - return; - } - - entry = g_ptr_array_index(mdb->catalog,selected_table); - - gmdb_table_data_new(entry); -} -void -gmdb_table_select_cb(GtkHList *hlist, GtkWidget *w, gpointer data) -{ -int child_num; -int i,j=0; -MdbCatalogEntry *entry; - - child_num = gtk_hlist_child_position(hlist, w); - selected_child = child_num; - for (i=0;inum_catalog;i++) { - entry = g_ptr_array_index(mdb->catalog,i); - if (mdb_is_user_table(entry)) { - if (j==child_num) { - selected_table = i; - } - j++; - } - } -} - -/* functions */ -void -gmdb_table_add_icon(gchar *text) -{ -GList *glist = NULL; -GtkWidget *li; -GtkWidget *label; -GtkWidget *box; -GtkWidget *pixmapwid; -GdkPixmap *pixmap; -GdkBitmap *mask; - - li = gtk_list_item_new (); - box = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm_d( NULL, - gtk_widget_get_colormap(app), &mask, NULL, table_xpm); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (box), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new (text); - gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0); - - gtk_container_add(GTK_CONTAINER(li), box); - glist = g_list_append (glist, li); - gtk_widget_show (label); - gtk_widget_show_all (li); - gtk_hlist_append_items(GTK_HLIST(table_hlist), glist); -} - -void -gmdb_table_add_tab(GtkWidget *notebook) -{ -GtkWidget *tabbox; -GtkWidget *label; -GtkWidget *pixmapwid; -GtkWidget *frame; -GtkWidget *hbox; -GtkWidget *vbbox; -GtkWidget *button1; -GtkWidget *button2; -GtkWidget *button3; -GdkPixmap *pixmap; -GdkBitmap *mask; - - hbox = gtk_hbox_new (FALSE,5); - gtk_widget_show (hbox); - - frame = gtk_frame_new (NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); - gtk_container_set_border_width (GTK_CONTAINER (frame), 10); - gtk_widget_set_usize (frame, 100, 75); - gtk_widget_show (frame); - gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); - - table_hlist = gtk_hlist_new (); - gtk_widget_show (table_hlist); - gtk_container_add(GTK_CONTAINER(frame), table_hlist); - - /* set selection callback for list */ - gtk_signal_connect ( - GTK_OBJECT (table_hlist), - "select-child", GTK_SIGNAL_FUNC (gmdb_table_select_cb), NULL); - - vbbox = gtk_vbutton_box_new (); - gtk_container_set_border_width (GTK_CONTAINER (vbbox), 10); - gtk_vbutton_box_set_layout_default ( GTK_BUTTONBOX_START ); - gtk_button_box_set_child_size ( GTK_BUTTON_BOX( vbbox), 80, 20); - gtk_box_pack_start (GTK_BOX (hbox), vbbox, FALSE, FALSE, 10); - gtk_widget_show( vbbox ); - - button1 = gtk_button_new_with_label("Definition"); - gtk_box_pack_start (GTK_BOX (vbbox), button1, FALSE, TRUE, 0); - gtk_widget_show( button1 ); - - gtk_signal_connect ( GTK_OBJECT (button1), - "clicked", GTK_SIGNAL_FUNC (gmdb_table_def_cb), NULL); - - button2 = gtk_button_new_with_label("Data"); - gtk_box_pack_start (GTK_BOX (vbbox), button2, FALSE, FALSE, 0); - gtk_widget_show( button2 ); - - gtk_signal_connect ( GTK_OBJECT (button2), - "clicked", GTK_SIGNAL_FUNC (gmdb_table_data_cb), NULL); - - button3 = gtk_button_new_with_label("Export"); - gtk_box_pack_start (GTK_BOX (vbbox), button3, FALSE, FALSE, 0); - gtk_widget_show( button3 ); - - gtk_signal_connect ( GTK_OBJECT (button3), - "clicked", GTK_SIGNAL_FUNC (gmdb_table_export_cb), NULL); - - /* create a picture/label box and use for tab */ - tabbox = gtk_hbox_new (FALSE,5); - pixmap = gdk_pixmap_colormap_create_from_xpm_d( NULL, - gtk_widget_get_colormap(app), &mask, NULL, table_xpm); - - /* a pixmap widget to contain the pixmap */ - pixmapwid = gtk_pixmap_new( pixmap, mask ); - gtk_widget_show( pixmapwid ); - gtk_box_pack_start (GTK_BOX (tabbox), pixmapwid, FALSE, TRUE, 0); - - label = gtk_label_new ("Tables"); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (tabbox), label, FALSE, TRUE, 0); - - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), hbox, tabbox); -} - -void gmdb_table_populate(MdbHandle *mdb) -{ -int i; -MdbCatalogEntry *entry; - - /* add all user tables in catalog to tab */ - for (i=0; i < mdb->num_catalog; i++) { - entry = g_ptr_array_index (mdb->catalog, i); - if (mdb_is_user_table(entry)) { - gmdb_table_add_icon(entry->object_name); - } - } /* for */ -} diff --git a/src/gmdb/table.xpm b/src/gmdb/table.xpm deleted file mode 100644 index 871aeed..0000000 --- a/src/gmdb/table.xpm +++ /dev/null @@ -1,19 +0,0 @@ -/* XPM */ -static char * table_xpm[] = { -"10 12 4 1", -" c None", -". c #1874B1", -"+ c #606060", -"@ c #D7D2D2", -"..........", -"..........", -"+@@+@@@+@+", -"++++++++++", -"+@@+@@@+@+", -"++++++++++", -"+@@+@@@+@+", -"++++++++++", -"+@@+@@@+@+", -"++++++++++", -"+@@+@@@+@+", -"++++++++++"}; diff --git a/src/gmdb/table_data.c b/src/gmdb/table_data.c deleted file mode 100644 index a0ac7de..0000000 --- a/src/gmdb/table_data.c +++ /dev/null @@ -1,96 +0,0 @@ -#include "gmdb.h" - -extern GtkWidget *app; -extern MdbHandle *mdb; - -typedef struct GMdbDataWindow { - gchar table_name[MDB_MAX_OBJ_NAME]; - GtkWidget *window; -} GMdbDataWindow; - -static GList *window_list; - -/* callbacks */ -gint -gmdb_table_data_close(GtkWidget *w, GdkEvent *event, GMdbDataWindow *dataw) -{ - window_list = g_list_remove(window_list, dataw); - g_free(dataw); - return FALSE; -} -/* functions */ -GtkWidget * -gmdb_table_data_new(MdbCatalogEntry *entry) -{ -MdbTableDef *table; -MdbColumn *col; -GtkWidget *clist; -GtkWidget *scroll; -int i, rownum; -gchar *bound_data[256]; -GMdbDataWindow *dataw = NULL; - - - /* do we have an active window for this object? if so raise it */ - for (i=0;itable_name, entry->object_name)) { - gdk_window_raise (dataw->window->window); - return dataw->window; - } - } - - dataw = g_malloc(sizeof(GMdbDataWindow)); - strcpy(dataw->table_name, entry->object_name); - - dataw->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(dataw->window), entry->object_name); - gtk_widget_set_usize(dataw->window, 300,200); - gtk_widget_set_uposition(dataw->window, 50,50); - gtk_widget_show(dataw->window); - - gtk_signal_connect (GTK_OBJECT (dataw->window), "delete_event", - GTK_SIGNAL_FUNC (gmdb_table_data_close), dataw); - - - scroll = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show (scroll); - gtk_container_add(GTK_CONTAINER(dataw->window), scroll); - - /* read table */ - table = mdb_read_table(entry); - mdb_read_columns(table); - mdb_rewind_table(table); - - clist = gtk_clist_new(table->num_cols); - gtk_widget_show(clist); - gtk_container_add(GTK_CONTAINER(scroll),clist); - - for (i=0;inum_cols;i++) { - /* bind columns */ - bound_data[i] = (char *) g_malloc0(MDB_BIND_SIZE); - mdb_bind_column(table, i+1, bound_data[i], NULL); - - /* display column titles */ - col=g_ptr_array_index(table->columns,i); - gtk_clist_set_column_title(GTK_CLIST(clist), i, col->name); - } - gtk_clist_column_titles_show(GTK_CLIST(clist)); - - /* fetch those rows! */ - while(mdb_fetch_row(table)) { - rownum = gtk_clist_append(GTK_CLIST(clist), bound_data); - } - - /* free the memory used to bind */ - for (i=0;inum_cols;i++) { - g_free(bound_data[i]); - } - - /* add this one to the window list */ - window_list = g_list_append(window_list, dataw); - - return dataw->window; -} diff --git a/src/gmdb/table_def.c b/src/gmdb/table_def.c deleted file mode 100644 index 08f7e4e..0000000 --- a/src/gmdb/table_def.c +++ /dev/null @@ -1,124 +0,0 @@ -#include "gmdb.h" -#include "gtkhlist.h" -#include "pk.xpm" - -extern GtkWidget *app; -extern MdbHandle *mdb; -extern char *mdb_access_types[]; - -typedef struct GMdbDefWindow { - gchar table_name[MDB_MAX_OBJ_NAME]; - GtkWidget *window; -} GMdbDefWindow; - -static GList *window_list; - -/* callbacks */ -gint -gmdb_table_def_close(GtkHList *hlist, GtkWidget *w, GMdbDefWindow *defw) -{ - window_list = g_list_remove(window_list, defw); - g_free(defw); - return FALSE; -} - -GtkWidget * -gmdb_table_def_new(MdbCatalogEntry *entry) -{ -MdbTableDef *table; -MdbIndex *idx; -MdbColumn *col; -GtkWidget *clist; -GtkWidget *scroll; -GdkPixmap *pixmap; -GdkBitmap *mask; -int i,j; -gchar *titles[] = { "", "Column", "Name", "Type", "Size", "Allow Nulls" }; -gchar *row[6]; -GMdbDefWindow *defw; - - /* do we have an active window for this object? if so raise it */ - for (i=0;itable_name, entry->object_name)) { - gdk_window_raise (defw->window->window); - return defw->window; - } - } - - defw = g_malloc(sizeof(GMdbDefWindow)); - strcpy(defw->table_name, entry->object_name); - - defw->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(defw->window), entry->object_name); - gtk_widget_set_usize(defw->window, 300,200); - gtk_widget_show(defw->window); - - gtk_signal_connect (GTK_OBJECT (defw->window), "delete_event", - GTK_SIGNAL_FUNC (gmdb_table_def_close), defw); - - scroll = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show (scroll); - gtk_container_add(GTK_CONTAINER(defw->window), scroll); - - /* read table */ - table = mdb_read_table(entry); - mdb_read_columns(table); - mdb_rewind_table(table); - - clist = gtk_clist_new_with_titles(5, titles); - gtk_clist_set_column_width (GTK_CLIST(clist), 0, 20); - gtk_clist_set_column_width (GTK_CLIST(clist), 1, 35); - gtk_clist_set_column_width (GTK_CLIST(clist), 2, 80); - gtk_clist_set_column_width (GTK_CLIST(clist), 3, 60); - gtk_clist_set_column_width (GTK_CLIST(clist), 4, 30); - gtk_clist_set_column_width (GTK_CLIST(clist), 5, 30); - gtk_widget_show(clist); - gtk_container_add(GTK_CONTAINER(scroll),clist); - - for (i=0;inum_cols;i++) { - /* display column titles */ - col=g_ptr_array_index(table->columns,i); - row[0] = (char *) g_malloc0(MDB_BIND_SIZE); - row[1] = (char *) g_malloc0(MDB_BIND_SIZE); - row[2] = (char *) g_malloc0(MDB_BIND_SIZE); - row[3] = (char *) g_malloc0(MDB_BIND_SIZE); - row[4] = (char *) g_malloc0(MDB_BIND_SIZE); - row[5] = (char *) g_malloc0(MDB_BIND_SIZE); - strcpy(row[0],""); - sprintf(row[1],"%d", col->col_num+1); - strcpy(row[2],col->name); - strcpy(row[3],mdb_access_types[col->col_type]); - sprintf(row[4],"%d",col->col_size); - if (col->is_fixed) { - strcpy(row[5],"No"); - } else { - strcpy(row[5],"Yes"); - } - gtk_clist_append(GTK_CLIST(clist), row); - } - pixmap = gdk_pixmap_colormap_create_from_xpm_d( NULL, - gtk_widget_get_colormap(app), &mask, NULL, pk_xpm); - - mdb_read_indices(table); - for (i=0;inum_idxs;i++) { - idx = g_ptr_array_index (table->indices, i); - if (idx->index_type==1) { - for (j=0;jnum_keys;j++) { - gtk_clist_set_pixmap(GTK_CLIST(clist), idx->key_col_num[j]-1,0, pixmap, mask); - } - // } else { - //for (j=0;jnum_keys;j++) { - //sprintf(tmpstr,"%s:%d",idx->name,j); - //gtk_clist_set_text(GTK_CLIST(clist), idx->key_col_num[j]-1,0, tmpstr); - //} - } - } /* for */ - - /* add this one to the window list */ - window_list = g_list_append(window_list, defw); - - return defw->window; -} diff --git a/src/gmdb/table_export.c b/src/gmdb/table_export.c deleted file mode 100644 index 2163121..0000000 --- a/src/gmdb/table_export.c +++ /dev/null @@ -1,259 +0,0 @@ -#include "gmdb.h" - -extern GtkWidget *app; -extern MdbHandle *mdb; - -typedef struct GMdbTableExportDialog { - MdbCatalogEntry *entry; - GtkWidget *dialog; - GtkWidget *lineterm; - GtkWidget *colsep; - GtkWidget *quote; - GtkWidget *quotechar; - GtkWidget *headers; - GtkWidget *filesel; -} GMdbTableExportDialog; - -GMdbTableExportDialog *export; - -#define COMMA "Comma (,)" -#define TAB "Tab" -#define SPACE "Space" -#define COLON "Colon (:)" -#define SEMICOLON "Semicolon (;)" -#define PIPE "Pipe (|)" - -#define LF "Unix (linefeed only)" -#define CR "Mac (carriage return only)" -#define CRLF "Windows (CR + LF)" - -#define ALWAYS "Always" -#define NEVER "Never" -#define AUTOMAT "Automatic (where necessary)" - -void -print_quote(FILE *outfile, int need_quote, char quotechar, char *colsep, char *str) -{ - if (need_quote==1) { - fprintf(outfile, "%c", quotechar); - } else if (need_quote==-1) { - if (strstr(str,colsep)) { - fprintf(outfile, "%c", quotechar); - } - } -} - -void -gmdb_export_file_cb(GtkWidget *selector, GMdbTableExportDialog *export) -{ -gchar *file_path; -FILE *outfile; -gchar *bound_data[256]; -MdbTableDef *table; -MdbColumn *col; -int i; -int need_headers = 0; -int need_quote = 0; -gchar delimiter[11]; -gchar quotechar; -gchar lineterm[5]; -gchar *str; -int rows=0; -char msg[100]; - - - str = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(export->colsep)->entry)); - if (!strcmp(str,COMMA)) { strcpy(delimiter, ","); } - else if (!strcmp(str,TAB)) { strcpy(delimiter, "\t"); } - else if (!strcmp(str,SPACE)) { strcpy(delimiter, " "); } - else if (!strcmp(str,COLON)) { strcpy(delimiter, ":"); } - else if (!strcmp(str,SEMICOLON)) { strcpy(delimiter, ";"); } - else if (!strcmp(str,PIPE)) { strcpy(delimiter, "|"); } - else { - strncpy(delimiter,str, 10); - delimiter[10]='\0'; - } - - str = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(export->lineterm)->entry)); - if (!strcmp(str,LF)) { strcpy(lineterm, "\n"); } - else if (!strcmp(str,CR)) { strcpy(lineterm, "\r"); } - else if (!strcmp(str,CRLF)) { strcpy(lineterm, "\r\n"); } - - str = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(export->quote)->entry)); - if (!strcmp(str,ALWAYS)) { need_quote = 1; } - else if (!strcmp(str,NEVER)) { need_quote = 0; } - else if (!strcmp(str,AUTOMAT)) { need_quote = -1; } - - str = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(export->quotechar)->entry)); - quotechar = str[0]; - - /* headers */ - str = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(export->headers)->entry)); - if (str && str[0]=='Y') need_headers = 1; - - file_path = gtk_file_selection_get_filename (GTK_FILE_SELECTION(export->filesel)); - // printf("file path %s\n",file_path); - if ((outfile=fopen(file_path, "w"))==NULL) { - gmdb_info_msg("Unable to Open File!"); - return; - } - - /* read table */ - table = mdb_read_table(export->entry); - mdb_read_columns(table); - mdb_rewind_table(table); - - for (i=0;inum_cols;i++) { - /* bind columns */ - bound_data[i] = (char *) g_malloc0(MDB_BIND_SIZE); - mdb_bind_column(table, i+1, bound_data[i], NULL); - - /* display column titles */ - col=g_ptr_array_index(table->columns,i); - if (need_headers) { - if (i>0) fprintf(outfile,delimiter); - print_quote(outfile, need_quote, quotechar, delimiter, col->name); - fprintf(outfile,"%s", col->name); - print_quote(outfile, need_quote, quotechar, delimiter, col->name); - } - } - if (need_headers) fprintf(outfile,lineterm); - - /* fetch those rows! */ - while(mdb_fetch_row(table)) { - for (i=0;inum_cols;i++) { - if (i>0) fprintf(outfile,delimiter); - print_quote(outfile, need_quote, quotechar, delimiter, bound_data[i]); - fprintf(outfile,"%s", bound_data[i]); - print_quote(outfile, need_quote, quotechar, delimiter, bound_data[i]); - } - fprintf(outfile,lineterm); - rows++; - } - - /* free the memory used to bind */ - for (i=0;inum_cols;i++) { - g_free(bound_data[i]); - } - - fclose(outfile); - gtk_widget_destroy(export->dialog); - sprintf(msg,"%d Rows exported successfully.\n", rows); - gmdb_info_msg(msg); -} -void -gmdb_export_button_cb(GtkWidget *w, GMdbTableExportDialog *export) -{ - /* just print a string so that we know we got there */ - export->filesel = gtk_file_selection_new("Please choose a filename."); - - gtk_signal_connect ( - GTK_OBJECT (GTK_FILE_SELECTION(export->filesel)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gmdb_export_file_cb), export); - - gtk_signal_connect_object ( GTK_OBJECT ( - GTK_FILE_SELECTION(export->filesel)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) export->filesel); - - gtk_signal_connect_object ( - GTK_OBJECT (GTK_FILE_SELECTION(export->filesel)->cancel_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) export->filesel); - - gtk_widget_show (export->filesel); -} - -GtkWidget * -gmdb_export_add_combo(GtkWidget *table, int row, gchar *text, GList *strings) -{ -GtkWidget *combo; -GtkWidget *label; - - label = gtk_label_new(text); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row + 1, - GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0); - gtk_widget_show(label); - - combo = gtk_combo_new(); - gtk_combo_set_popdown_strings(GTK_COMBO(combo), strings); - gtk_table_attach(GTK_TABLE(table), combo, 1, 2, row, row + 1, - GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 0); - gtk_widget_show(combo); - return combo; -} - -void gmdb_table_export(MdbCatalogEntry *entry) { -GtkWidget *export_button; -GtkWidget *close_button; -GList *glist = NULL; -GtkWidget *table; - - export = g_malloc(sizeof(GMdbTableExportDialog)); - export->entry = entry; - - /* Create the widgets */ - export->dialog = gtk_dialog_new(); - gtk_widget_set_uposition(export->dialog, 300, 300); - - table = gtk_table_new(3,2,FALSE); - gtk_widget_show(table); - - glist = g_list_append(glist, LF); - glist = g_list_append(glist, CR); - glist = g_list_append(glist, CRLF); - export->lineterm = gmdb_export_add_combo(table, 0, "Line Terminator:",glist); - g_list_free(glist); - gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(export->lineterm)->entry), FALSE); - - glist = NULL; - glist = g_list_append(glist, COMMA); - glist = g_list_append(glist, TAB); - glist = g_list_append(glist, SPACE); - glist = g_list_append(glist, COLON); - glist = g_list_append(glist, SEMICOLON); - glist = g_list_append(glist, PIPE); - export->colsep = gmdb_export_add_combo(table, 1, "Column Separator:",glist); - g_list_free(glist); - - glist = NULL; - glist = g_list_append(glist, ALWAYS); - glist = g_list_append(glist, NEVER); - glist = g_list_append(glist, AUTOMAT); - export->quote = gmdb_export_add_combo(table, 2, "Quotes:",glist); - g_list_free(glist); - gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(export->quote)->entry), FALSE); - - glist = NULL; - glist = g_list_append(glist, "\""); - glist = g_list_append(glist, "'"); - glist = g_list_append(glist, "`"); - export->quotechar = gmdb_export_add_combo(table, 3, "Quote Character:",glist); - g_list_free(glist); - - glist = NULL; - glist = g_list_append(glist, "Yes"); - glist = g_list_append(glist, "No"); - export->headers = gmdb_export_add_combo(table, 4, "Include Headers:",glist); - g_list_free(glist); - gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(export->headers)->entry), FALSE); - - export_button = gtk_button_new_with_label("Export"); - gtk_signal_connect ( GTK_OBJECT (export_button), - "clicked", GTK_SIGNAL_FUNC (gmdb_export_button_cb), export); - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(export->dialog)->action_area), - export_button); - - close_button = gtk_button_new_with_label("Cancel"); - gtk_signal_connect_object (GTK_OBJECT (close_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT(export->dialog)); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(export->dialog)->action_area), - close_button); - - /* Add the table, and show everything we've added to the dialog. */ - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(export->dialog)->vbox), table); - gtk_widget_show_all (export->dialog); -} diff --git a/src/gmdb/util.c b/src/gmdb/util.c deleted file mode 100644 index 8e39cee..0000000 --- a/src/gmdb/util.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "gmdb.h" - -void gmdb_info_msg(gchar *message) { -GtkWidget *dialog, *label, *okay_button; - - /* Create the widgets */ - dialog = gtk_dialog_new(); - gtk_widget_set_uposition(dialog, 300, 300); - label = gtk_label_new (message); - gtk_widget_set_usize(label, 250, 100); - okay_button = gtk_button_new_with_label("Okay"); - - /* Ensure that the dialog box is destroyed when the user clicks ok. */ - - gtk_signal_connect_object (GTK_OBJECT (okay_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), dialog); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), - okay_button); - - /* Add the label, and show everything we've added to the dialog. */ - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); - gtk_widget_show_all (dialog); -}