From 6f9a8992992b34b853f471734f41a3a6b790398c Mon Sep 17 00:00:00 2001 From: whydoubt Date: Fri, 4 Feb 2005 03:21:34 +0000 Subject: [PATCH] Lots of gmdb2 updates and fixes --- ChangeLog | 3 + src/gmdb2/debug.c | 624 ++++++++++++++------------ src/gmdb2/gladefiles/gmdb-debug.glade | 2 +- src/gmdb2/gladefiles/gmdb.glade | 48 +- 4 files changed, 372 insertions(+), 305 deletions(-) diff --git a/ChangeLog b/ChangeLog index e5798ab..8f01d3b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ Thu Feb 3 21:12:55 CST 2005 Jeff Smith * HACKING: Small documentation fix + * src/gmdb2/debug.c: + * src/gmdb2/gladefiles/gmdb-debug.glade: + * src/gmdb2/gladefiles/gmdb.glade: Lots of gmdb2 updates and fixes Mon Jan 10 06:52:43 CST 2005 Jeff Smith * src/gmdb2/gladefiles/gmdb-debug.glade: diff --git a/src/gmdb2/debug.c b/src/gmdb2/debug.c index 788c868..d911d07 100644 --- a/src/gmdb2/debug.c +++ b/src/gmdb2/debug.c @@ -15,6 +15,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +/* Objects attached to debug_window: + * GList *nav_list: list of pages viewed, entries are guint32 *'s + * guint *nav_elem: index to current page in nav_list + * GladeXML *debugwin_xml: the associated glade hierarchy + * gboolean *dissect: whether dissecting is turned on + */ + #include "gmdb.h" #include @@ -31,14 +39,15 @@ GList *debug_list = NULL; static void gmdb_debug_init(MdbHandle *mdb, GladeXML *xml); static void gmdb_debug_text_on(GtkWidget *textbox, int start_byte, int end_byte); static void gmdb_debug_text_off(GtkWidget *textbox); -static GtkTreeIter *gmdb_debug_add_item(GtkTreeStore *store, GtkTreeIter *iter, gchar *text, int start, int end); +static GtkTreeIter *gmdb_debug_add_item(GtkTreeStore *store, GtkTreeIter *iter, gchar *text, int start, int len); static void gmdb_debug_clear(GladeXML *xml); static void gmdb_debug_dissect(GtkTreeStore *store, char *fbuf, int offset, int len); static guint16 get_uint16(unsigned char *c); static guint32 get_uint32(unsigned char *c); +static gchar *gmdb_strappend(gchar *x, gchar *y); static long gmdb_get_max_page(MdbHandle *mdb); static void gmdb_debug_display(GladeXML *xml, guint32 page); -static void gmdb_debug_jump(GtkWidget *w, GladeXML *xml, int msb); +static void gmdb_debug_jump(GladeXML *xml, int msb); /* value to string stuff */ typedef struct GMdbValStr { @@ -86,16 +95,18 @@ int start_col, end_col; int i; GtkTreeIter iter; GtkTreeModel *model; -gchar *fieldname; gint32 start, end; GtkWidget *textview; if (!select) return; if (gtk_tree_selection_get_selected (select, &model, &iter)) { + gchar *fieldname; + gint32 len; gtk_tree_model_get (model, &iter, 0, &fieldname, 1, &start, - 2, &end, -1); + 2, &len, -1); + end = start + len - 1; g_free (fieldname); } @@ -124,7 +135,7 @@ GtkWidget *textview; gmdb_debug_text_on(textview, start_row + 59 + (start % 16), start_row + 75); - for (i=start_row + LINESZ; i < end_row; i++) { + for (i=start_row + LINESZ; i < end_row; i+=LINESZ) { gmdb_debug_text_on(textview, i + 8, i + 55); gmdb_debug_text_on(textview, i + 59, i + 75); } @@ -140,10 +151,9 @@ void gmdb_debug_forward_cb(GtkWidget *w, gpointer data) { guint *nav_elem; - gchar *page; + guint32 *page; GladeXML *xml; GList *nav_list; - guint32 page_num; guint num_items; nav_list = g_object_get_data(G_OBJECT(w),"nav_list"); @@ -155,18 +165,16 @@ gmdb_debug_forward_cb(GtkWidget *w, gpointer data) g_object_set_data(G_OBJECT(w), "nav_elem", nav_elem); page = g_list_nth_data(nav_list,(*nav_elem) - 1); - page_num = atol(page); xml = g_object_get_data(G_OBJECT(w), "debugwin_xml"); - gmdb_debug_display(xml, page_num); + gmdb_debug_display(xml, *page); } void gmdb_debug_back_cb(GtkWidget *w, gpointer data) { guint *nav_elem; - gchar *page; + guint32 *page; GladeXML *xml; GList *nav_list; - guint32 page_num; nav_list = g_object_get_data(G_OBJECT(w),"nav_list"); nav_elem = g_object_get_data(G_OBJECT(w),"nav_elem"); @@ -176,9 +184,8 @@ gmdb_debug_back_cb(GtkWidget *w, gpointer data) g_object_set_data(G_OBJECT(w), "nav_elem", nav_elem); page = g_list_nth_data(nav_list,(*nav_elem) - 1); - page_num = atol(page); xml = g_object_get_data(G_OBJECT(w), "debugwin_xml"); - gmdb_debug_display(xml, page_num); + gmdb_debug_display(xml, *page); } static void gmdb_nav_add_page(GtkWidget *win, guint32 page_num) @@ -189,12 +196,11 @@ gmdb_nav_add_page(GtkWidget *win, guint32 page_num) guint num_items; int i; + nav_list = g_object_get_data(G_OBJECT(win),"nav_list"); nav_elem = g_object_get_data(G_OBJECT(win),"nav_elem"); if (!nav_elem) { nav_elem = g_malloc0(sizeof(guint)); } - - nav_list = g_object_get_data(G_OBJECT(win),"nav_list"); /* * If we are positioned in the middle of the list and jumping from here @@ -210,11 +216,7 @@ gmdb_nav_add_page(GtkWidget *win, guint32 page_num) } } - *nav_elem = g_list_length(nav_list); - - nav_list = g_list_append(nav_list, - g_strdup_printf("%lu", (unsigned long)page_num)); - + nav_list = g_list_append(nav_list, g_memdup(&page_num, 4)); *nav_elem = g_list_length(nav_list); g_object_set_data(G_OBJECT(win), "nav_list", nav_list); @@ -331,17 +333,18 @@ gmdb_debug_display(GladeXML *xml, guint32 page) GtkTextIter iter; GtkTextView *textview; GtkWidget *entry, *window; - char pagestr[20]; - guint *dissect; + char *pagestr; + gboolean *dissect; GtkWidget *tree; GtkTreeView *store; textview = (GtkTextView *) glade_xml_get_widget (xml, "debug_textview"); gmdb_debug_clear(xml); - sprintf(pagestr, "%lu", (unsigned long)page); + pagestr = g_strdup_printf("%lu", (unsigned long)page); entry = glade_xml_get_widget (xml, "debug_entry"); gtk_entry_set_text(GTK_ENTRY(entry),pagestr); + g_free(pagestr); pos = lseek(mdb->f->fd, 0, SEEK_CUR); lseek(mdb->f->fd, page * mdb->fmt->pg_size, SEEK_SET); @@ -379,20 +382,27 @@ gmdb_debug_display(GladeXML *xml, guint32 page) window = glade_xml_get_widget(xml, "debug_window"); dissect = g_object_get_data(G_OBJECT(window),"dissect"); - if (!dissect || *dissect==1) + if (!dissect || *dissect) gmdb_debug_dissect(GTK_TREE_STORE(store), fbuf, 0, length); g_free(fbuf); g_free(tbuf); } /* functions */ +static gchar * +gmdb_strappend(gchar *x, gchar *y) +{ + gchar *z = g_strconcat(x, y); + g_free(x); + return z; +} static long gmdb_get_max_page(MdbHandle *mdb) { struct stat st; assert( fstat(mdb->f->fd, &st)!=-1 ); - return st.st_size/mdb->fmt->pg_size; + return (st.st_size/mdb->fmt->pg_size)-1; } static gchar * gmdb_val_to_str(GMdbValStr *valstr, gint val) @@ -412,248 +422,259 @@ int i = 0; static guint16 get_uint16(unsigned char *c) { -guint16 i; - -i =c[1]; i<<=8; -i+=c[0]; - -return i; + guint16 i; + memcpy(&i, c, 2); + return GINT16_FROM_LE(i); } 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; + guint32 l; + memcpy(&l, c, 4); + return GINT32_FROM_LE(l); } static void gmdb_debug_dissect_column(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, int offset) { - gchar str[100]; + gchar *str; + char *foff = fbuf + offset; - snprintf(str, 100, "Column Type: 0x%02x (%s)", fbuf[offset], - gmdb_val_to_str(column_types, fbuf[offset])); - gmdb_debug_add_item(store, parent, str, offset, offset); - snprintf(str, 100, "Column #: %d", get_uint16(&fbuf[offset+1])); - gmdb_debug_add_item(store, parent, str, offset+1, offset+2); - snprintf(str, 100, "VarCol Offset: %d", get_uint16(&fbuf[offset+3])); - gmdb_debug_add_item(store, parent, str, offset+3, offset+4); - snprintf(str, 100, "Unknown"); - gmdb_debug_add_item(store, parent, str, offset+5, offset+8); - snprintf(str, 100, "Unknown"); - gmdb_debug_add_item(store, parent, str, offset+9, offset+12); - snprintf(str, 100, "Variable Column: %s", - fbuf[offset+13] & 0x01 ? "No" : "Yes"); - gmdb_debug_add_item(store, parent, str, offset+13, offset+13); - snprintf(str, 100, "Fixed Col Offset: %d", get_uint16(&fbuf[offset+14])); - gmdb_debug_add_item(store, parent, str, offset+14, offset+15); - snprintf(str, 100, "Column Length: %d", get_uint16(&fbuf[offset+16])); - gmdb_debug_add_item(store, parent, str, offset+16, offset+17); + str = g_strdup_printf("Column Type: 0x%02x (%s)", foff[0], + gmdb_val_to_str(column_types, foff[0])); + gmdb_debug_add_item(store, parent, str, offset, 1); + str = g_strdup_printf("Column #: %d", get_uint16(foff+1)); + gmdb_debug_add_item(store, parent, str, offset+1, 2); + str = g_strdup_printf("VarCol Offset: %d", get_uint16(foff+3)); + gmdb_debug_add_item(store, parent, str, offset+3, 2); + str = g_strdup_printf("Unknown"); + gmdb_debug_add_item(store, parent, str, offset+5, 4); + str = g_strdup_printf("Unknown"); + gmdb_debug_add_item(store, parent, str, offset+9, 4); + str = g_strdup_printf("Variable Column: %s", + (foff[13] & 0x01) ? "No" : "Yes"); + gmdb_debug_add_item(store, parent, str, offset+13, 1); + str = g_strdup_printf("Fixed Col Offset: %d", get_uint16(foff+14)); + gmdb_debug_add_item(store, parent, str, offset+14, 2); + str = g_strdup_printf("Column Length: %d", get_uint16(foff+16)); + gmdb_debug_add_item(store, parent, str, offset+16, 2); } static void gmdb_debug_dissect_index1(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, int offset) { - gchar str[100]; + gchar *str; - snprintf(str, 100, "Unknown"); - gmdb_debug_add_item(store, parent, str, offset, offset+3); - snprintf(str, 100, "Rows in Index: %lu", (unsigned long)get_uint32(&fbuf[offset+4])); - gmdb_debug_add_item(store, parent, str, offset+4, offset+7); + gmdb_debug_add_item(store, parent, g_strdup("Unknown"), offset, 4); + str = g_strdup_printf("Rows in Index: %lu", + (unsigned long)get_uint32(fbuf+offset+4)); + gmdb_debug_add_item(store, parent, str, offset+4, 4); } static void gmdb_debug_dissect_index2(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, int offset) { - gchar str[100]; + gchar *str; int mod=0; unsigned char flags; - gchar flagstr[100]; /* If adding flags increase this */ - snprintf(str, 100, "Column mask"); - gmdb_debug_add_item(store, parent, str, offset, offset+29); - snprintf(str, 100, "Unknown"); - gmdb_debug_add_item(store, parent, str, offset+30, offset+33); - snprintf(str, 100, "Root index page"); - gmdb_debug_add_item(store, parent, str, offset+34, offset+37); + str = g_strdup("Column mask"); + gmdb_debug_add_item(store, parent, str, offset, 30); + str = g_strdup("Unknown"); + gmdb_debug_add_item(store, parent, str, offset+30, 4); + str = g_strdup("Root index page"); + gmdb_debug_add_item(store, parent, str, offset+34, 4); + flags = fbuf[offset+38]; - flagstr[0]=0; + str = g_strdup("Index Flags ("); if (flags & MDB_IDX_UNIQUE) { - strcat(flagstr, "Unique"); mod++; + str = gmdb_strappend(str, "Unique"); mod++; } if (flags & MDB_IDX_IGNORENULLS) { - if (mod) strcat(flagstr, ","); - strcat(flagstr, "Ignore Nulls"); mod++; + if (mod) str = gmdb_strappend(str, ","); + str = gmdb_strappend(str, "Ignore Nulls"); mod++; } if (flags & MDB_IDX_REQUIRED) { - if (mod) strcat(flagstr, ","); - strcat(flagstr, "Required"); + if (mod) str = gmdb_strappend(str, ","); + str = gmdb_strappend(str, "Required"); mod++; } - if (!mod) strcpy(flagstr, "None"); - snprintf(str, 100, "Index Flags (%s)", flagstr); - gmdb_debug_add_item(store, parent, str, offset+38, offset+38); + if (!mod) str = gmdb_strappend(str, "None"); + str = gmdb_strappend(str, ")"); + gmdb_debug_add_item(store, parent, str, offset+38, 1); } static void gmdb_debug_add_page_ptr(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, const char *label, int offset) { -gchar str[100]; -GtkTreeIter *node; + gchar *str; + GtkTreeIter *node; guint32 pg_row = get_uint32(fbuf+offset); - snprintf(str, 100, "%s", label); - node = gmdb_debug_add_item(store, parent, str, offset, offset+3); + str = g_strdup(label); + node = gmdb_debug_add_item(store, parent, str, offset, 4); - snprintf(str, 100, "Row Number: %u", pg_row & 0xff); - gmdb_debug_add_item(store, node, str, offset, offset); - snprintf(str, 100, "Page Number: %lu", pg_row >> 8); - gmdb_debug_add_item(store, node, str, offset+1, offset+3); + str = g_strdup_printf("Row Number: %u", pg_row & 0xff); + gmdb_debug_add_item(store, node, str, offset, 1); + str = g_strdup_printf("Page Number: %lu", pg_row >> 8); + gmdb_debug_add_item(store, node, str, offset+1, 3); } static void -gmdb_debug_dissect_row(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, int offset, int end) +gmdb_debug_dissect_row(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, int offset, int len) { -gchar str[100]; -int bitmask_sz; -int num_cols, var_cols, var_cols_loc, fixed_end, eod_ptr; -int i; + gchar *str; + int bitmask_sz; + int num_cols, var_cols, var_cols_loc, fixed_end, eod_ptr; + int i; num_cols = fbuf[offset]; - snprintf(str, 100, "Num columns: %u", num_cols); - gmdb_debug_add_item(store, parent, str, offset, offset); - bitmask_sz = ((num_cols-1) / 8) + 1; - printf("bitmask_sz %d\n", bitmask_sz); - var_cols_loc = end - bitmask_sz; + str = g_strdup_printf("Num columns: %u", num_cols); + gmdb_debug_add_item(store, parent, str, offset, 1); + bitmask_sz = (num_cols+7) / 8; + var_cols_loc = offset + len - bitmask_sz - 1; var_cols = fbuf[var_cols_loc]; fixed_end = offset + fbuf[var_cols_loc - 1] - 1; /* work even if 0 b/c of EOD */ - snprintf(str, 100, "Fixed columns"); - gmdb_debug_add_item(store, parent, str, offset + 1, fixed_end); + str = g_strdup("Fixed columns"); + gmdb_debug_add_item(store, parent, str, offset + 1, fixed_end - offset); for (i=0;ifmt->pg_size - 1; + row_len = mdb->fmt->pg_size - row_start; else - row_end = (get_uint16(&fbuf[offset+14+(i-1)*2]) - & 0x0FFF) - 1; - snprintf(str, 100, "Row %d", i+1); - container = gmdb_debug_add_item(store, NULL, str, row_start, row_end); + row_len = (get_uint16(fbuf+offset+14+(i-1)*2) + & 0x0FFF) - row_start; + str = g_strdup_printf("Row %d", i+1); + container = gmdb_debug_add_item(store, NULL, str, + row_start, row_len); /* usage pages have parent id of 0 (database) and do not * follow normal row format */ /* if (tdef) - gmdb_debug_dissect_row(store, container, fbuf, row_start, row_end); + gmdb_debug_dissect_row(store, container, fbuf, row_start, row_len); */ } } static void gmdb_debug_dissect_data_pg3(GtkTreeStore *store, char *fbuf, int offset, int len) { - gchar str[100]; - int num_rows, i, row_start, row_end; + gchar *str; + int num_rows, i, row_start, row_len; guint32 tdef; GtkTreeIter *container; - snprintf(str, 100, "Page free space: %u", - get_uint16(&fbuf[offset+2])); - gmdb_debug_add_item(store, NULL, str, offset+2, offset+3); - tdef = get_uint32(&fbuf[offset+4]); - snprintf(str, 100, "Parents TDEF page: 0x%06x (%lu)", tdef,(unsigned long)tdef); - gmdb_debug_add_item(store, NULL, str, offset+4, offset+7); - num_rows = get_uint16(&fbuf[offset+8]); - snprintf(str, 100, "Num rows: %u", num_rows); - gmdb_debug_add_item(store, NULL, str, offset+8, offset+9); + str = g_strdup_printf("Page free space: %u", get_uint16(fbuf+offset+2)); + gmdb_debug_add_item(store, NULL, str, offset+2, 2); + + tdef = get_uint32(fbuf+offset+4); + str = g_strdup_printf("Parent's TDEF page: 0x%06x (%lu)", tdef, + (unsigned long)tdef); + gmdb_debug_add_item(store, NULL, str, offset+4, 4); + + num_rows = get_uint16(fbuf+offset+8); + str = g_strdup_printf("Num rows: %u", num_rows); + gmdb_debug_add_item(store, NULL, str, offset+8, 2); for (i=0;ifmt->pg_size - 1; + row_len = mdb->fmt->pg_size - row_start; else - row_end = (get_uint16(&fbuf[offset+10+(i-1)*2]) - & 0x0FFF) - 1; - snprintf(str, 100, "Row %d", i+1); - container = gmdb_debug_add_item(store, NULL, str, row_start, row_end); + row_len = (get_uint16(fbuf+offset+10+(i-1)*2) + & 0x0FFF) - row_start; + str = g_strdup_printf("Row %d", i+1); + container = gmdb_debug_add_item(store, NULL, str, + row_start, row_len); /* usage pages have parent id of 0 (database) and do not * follow normal row format */ if (tdef) - gmdb_debug_dissect_row(store, container, fbuf, row_start, row_end); + gmdb_debug_dissect_row(store, container, fbuf, + row_start, row_len); } } static void @@ -667,116 +688,147 @@ gmdb_debug_dissect_data_pg(GtkTreeStore *store, char *fbuf, int offset, int len) static void gmdb_debug_dissect_tabledef_pg4(GtkTreeStore *store, char *fbuf, int offset, int len) { -gchar str[100]; -guint32 i, num_idx, num_cols, idx_entries; -int newbase; -GtkTreeIter *node, *container; + gchar *str; + guint32 i, num_idx, num_cols, idx_entries; + int newbase; + GtkTreeIter *node, *container; + char *foff = fbuf + offset; - snprintf(str, 100, "Next TDEF Page: 0x%06x (%lu)", - get_uint32(&fbuf[offset+4]), (unsigned long)get_uint32(&fbuf[offset+4])); - gmdb_debug_add_item(store, NULL, str, offset+4, offset+7); - snprintf(str, 100, "Length of Data: %lu", (unsigned long)get_uint32(&fbuf[offset+8])); - gmdb_debug_add_item(store, NULL, str, offset+8, offset+11); - snprintf(str, 100, "# of Records: %lu", (unsigned long)get_uint32(&fbuf[offset+16])); - gmdb_debug_add_item(store, NULL, str, offset+16, offset+19); - snprintf(str, 100, "Autonumber Value: %lu", (unsigned long)get_uint32(&fbuf[offset+20])); - gmdb_debug_add_item(store, NULL, str, offset+20, offset+23); - snprintf(str, 100, "Table Type: 0x%02x (%s)", fbuf[offset+40], - gmdb_val_to_str(table_types, fbuf[offset+40])); - gmdb_debug_add_item(store, NULL, str, offset+40, offset+40); - num_cols = get_uint16(&fbuf[offset+41]); - snprintf(str, 100, "Max # of Columns: %u", num_cols); - gmdb_debug_add_item(store, NULL, str, offset+41, offset+42); - snprintf(str, 100, "# of VarCols: %u", - get_uint16(&fbuf[offset+43])); - gmdb_debug_add_item(store, NULL, str, offset+43, offset+44); - snprintf(str, 100, "# of Columns: %u", - (unsigned int)get_uint16(&fbuf[offset+45])); - gmdb_debug_add_item(store, NULL, str, offset+45, offset+46); - idx_entries = get_uint32(&fbuf[offset+47]); - snprintf(str, 100, "# of Index Entries: %lu", (unsigned long)idx_entries); - gmdb_debug_add_item(store, NULL, str, offset+47, offset+50); - - num_idx = get_uint32(&fbuf[offset+51]); - snprintf(str, 100, "# of Real Indices: %lu", (unsigned long)num_idx); - gmdb_debug_add_item(store, NULL, str, offset+51, offset+54); + str = g_strdup_printf("Next TDEF Page: 0x%06x (%lu)", + get_uint32(foff+4), (unsigned long)get_uint32(foff+4)); + gmdb_debug_add_item(store, NULL, str, offset+4, 4); + str = g_strdup_printf("Length of Data: %lu", + (unsigned long)get_uint32(foff+8)); + gmdb_debug_add_item(store, NULL, str, offset+8, 4); + str = g_strdup_printf("# of Records: %lu", + (unsigned long)get_uint32(foff+16)); + gmdb_debug_add_item(store, NULL, str, offset+16, 4); + str = g_strdup_printf("Autonumber Value: %lu", + (unsigned long)get_uint32(foff+20)); + gmdb_debug_add_item(store, NULL, str, offset+20, 4); + str = g_strdup_printf("Table Type: 0x%02x (%s)", foff[40], + gmdb_val_to_str(table_types, foff[40])); + gmdb_debug_add_item(store, NULL, str, offset+40, 1); + str = g_strdup_printf("Max # of Columns: %u", get_uint16(foff+41)); + gmdb_debug_add_item(store, NULL, str, offset+41, 2); + str = g_strdup_printf("# of VarCols: %u", get_uint16(foff+43)); + gmdb_debug_add_item(store, NULL, str, offset+43, 2); + num_cols = get_uint16(foff+45); + str = g_strdup_printf("# of Columns: %u", num_cols); + gmdb_debug_add_item(store, NULL, str, offset+45, 2); + idx_entries = get_uint32(foff+47); + str = g_strdup_printf("# of Index Entries: %lu", + (unsigned long)idx_entries); + gmdb_debug_add_item(store, NULL, str, offset+47, 4); + num_idx = get_uint32(foff+51); + str = g_strdup_printf("# of Real Indices: %lu", + (unsigned long)num_idx); + gmdb_debug_add_item(store, NULL, str, offset+51, 4); gmdb_debug_add_page_ptr(store, NULL, fbuf, "Used Pages Pointer", offset+55); gmdb_debug_add_page_ptr(store, NULL, fbuf, "Pages Freespace Pointer", offset+59); + newbase = offset+63; - container = gmdb_debug_add_item(store, NULL, "Index Entries", -1, -1); + str = g_strdup("Index Entries"); + container = gmdb_debug_add_item(store, NULL, str, -1, 1); for (i=0;i True GNOMEUIINFO_MENU_CLOSE_ITEM - + diff --git a/src/gmdb2/gladefiles/gmdb.glade b/src/gmdb2/gladefiles/gmdb.glade index 9e55ded..afb6e29 100644 --- a/src/gmdb2/gladefiles/gmdb.glade +++ b/src/gmdb2/gladefiles/gmdb.glade @@ -167,12 +167,23 @@ - + True S_QL Window True + + + True + gtk-execute + 1 + 0.5 + 0.5 + 0 + 0 + + @@ -293,41 +304,37 @@ True - + True - Open an MDB database file - gtk-open - True + Open database file + gtk-open - + True View database file properties - gtk-properties - True + gtk-properties - + True - Close this database - gtk-close - True + Close database file + gtk-close + - + True - Open SQL query window - SQL - True - gtk-execute + Perform SQL query + gtk-execute @@ -336,15 +343,14 @@ - + True Export schema definition - Export Schema - True - gtk-convert + gtk-convert +