Modify functions to work better with Glade

This commit is contained in:
whydoubt 2005-01-10 12:55:27 +00:00
parent c1e36db86f
commit c8b290f790
5 changed files with 139 additions and 203 deletions

View File

@ -1,3 +1,9 @@
Mon Jan 10 06:52:43 CST 2005 Jeff Smith <whydoubt@yahoo.com>
* src/gmdb2/gladefiles/gmdb-debug.glade:
* src/gmdb2/debug.c:
* src/gmdb2/gmdb.h:
* src/gmdb2/table.c: Modify functions to work better with Glade
Wed Jan 5 07:43:07 CST 2005 Jeff Smith <whydoubt@yahoo.com> Wed Jan 5 07:43:07 CST 2005 Jeff Smith <whydoubt@yahoo.com>
* src/gmdb2/debug.c: * src/gmdb2/debug.c:
* src/gmdb2/file.c: * src/gmdb2/file.c:

View File

@ -21,7 +21,6 @@
#include <gtk/gtkmessagedialog.h> #include <gtk/gtkmessagedialog.h>
#include <libgnome/gnome-i18n.h> #include <libgnome/gnome-i18n.h>
extern GtkWidget *app;
extern MdbHandle *mdb; extern MdbHandle *mdb;
GList *debug_list = NULL; GList *debug_list = NULL;
@ -36,11 +35,10 @@ static GtkTreeIter *gmdb_debug_add_item(GtkTreeStore *store, GtkTreeIter *iter,
static void gmdb_debug_clear(GladeXML *xml); static void gmdb_debug_clear(GladeXML *xml);
static void gmdb_debug_dissect(GtkTreeStore *store, char *fbuf, int offset, int len); static void gmdb_debug_dissect(GtkTreeStore *store, char *fbuf, int offset, int len);
static guint16 get_uint16(unsigned char *c); static guint16 get_uint16(unsigned char *c);
static guint32 get_uint24(unsigned char *c);
static guint32 get_uint32(unsigned char *c); static guint32 get_uint32(unsigned char *c);
static long gmdb_get_max_page(MdbHandle *mdb); static long gmdb_get_max_page(MdbHandle *mdb);
static void gmdb_debug_display_cb(GtkWidget *w, GladeXML *xml);
static void gmdb_debug_display(GladeXML *xml, guint32 page); static void gmdb_debug_display(GladeXML *xml, guint32 page);
static void gmdb_debug_jump(GtkWidget *w, GladeXML *xml, int msb);
/* value to string stuff */ /* value to string stuff */
typedef struct GMdbValStr { typedef struct GMdbValStr {
@ -103,8 +101,8 @@ GtkWidget *textview;
if (start == -1 || end == -1) return; if (start == -1 || end == -1) return;
start_row = start / 16; start_row = LINESZ * (start / 16);
end_row = end / 16; end_row = LINESZ * (end / 16);
start_col = 8 + (start % 16) * 3; start_col = 8 + (start % 16) * 3;
end_col = 8 + (end % 16) * 3; end_col = 8 + (end % 16) * 3;
@ -113,96 +111,89 @@ GtkWidget *textview;
if (start_row == end_row) { if (start_row == end_row) {
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview,
LINESZ * start_row + start_col, start_row + start_col,
LINESZ * start_row + end_col + 2); start_row + end_col + 2);
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview,
LINESZ * start_row + 59 + (start % 16), start_row + 59 + (start % 16),
LINESZ * start_row + 59 + (end % 16) + 1); start_row + 59 + (end % 16) + 1);
} else { } else {
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview,
LINESZ * start_row + start_col, start_row + start_col,
/* 55 = 8 (addr) + 15 (bytes) * 3 (%02x " ") + 2 (last byte) */ /* 55 = 8 (addr) + 15 (bytes) * 3 (%02x " ") + 2 (last byte) */
LINESZ * start_row + 55); start_row + 55);
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview,
LINESZ * start_row + 59 + (start % 16), start_row + 59 + (start % 16),
LINESZ * start_row + 75); start_row + 75);
for (i=start_row + 1; i < end_row; i++) { for (i=start_row + LINESZ; i < end_row; i++) {
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview, i + 8, i + 55);
LINESZ * i + 8, LINESZ * i + 55); gmdb_debug_text_on(textview, i + 59, i + 75);
gmdb_debug_text_on(textview,
LINESZ * i + 59, LINESZ * i + 75);
} }
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview,
LINESZ * end_row + 8, end_row + 8,
LINESZ * end_row + end_col + 2); end_row + end_col + 2);
gmdb_debug_text_on(textview, gmdb_debug_text_on(textview,
LINESZ * end_row + 59, end_row + 59,
LINESZ * end_row + 59 + (end % 16) + 1); end_row + 59 + (end % 16) + 1);
} }
} }
static void void
gmdb_debug_forward_cb(GtkWidget *w, GladeXML *xml) gmdb_debug_forward_cb(GtkWidget *w, gpointer data)
{ {
guint *nav_elem; guint *nav_elem;
gchar *page; gchar *page;
GtkWidget *win; GladeXML *xml;
GList *nav_list = NULL; GList *nav_list;
guint32 page_num; guint32 page_num;
guint num_items; guint num_items;
win = glade_xml_get_widget (xml, "debug_window"); nav_list = g_object_get_data(G_OBJECT(w),"nav_list");
nav_list = g_object_get_data(G_OBJECT(win),"nav_list"); nav_elem = g_object_get_data(G_OBJECT(w),"nav_elem");
nav_elem = g_object_get_data(G_OBJECT(win),"nav_elem");
num_items = g_list_length(nav_list); num_items = g_list_length(nav_list);
if (!nav_elem || *nav_elem == num_items) if (!nav_elem || *nav_elem == num_items)
return; return;
(*nav_elem)++; (*nav_elem)++;
g_object_set_data(G_OBJECT(win), "nav_elem", nav_elem); g_object_set_data(G_OBJECT(w), "nav_elem", nav_elem);
page = g_list_nth_data(nav_list,(*nav_elem) - 1); page = g_list_nth_data(nav_list,(*nav_elem) - 1);
page_num = atol(page); 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_num);
} }
static void void
gmdb_debug_back_cb(GtkWidget *w, GladeXML *xml) gmdb_debug_back_cb(GtkWidget *w, gpointer data)
{ {
guint *nav_elem; guint *nav_elem;
gchar *page; gchar *page;
GtkWidget *win; GladeXML *xml;
GList *nav_list = NULL; GList *nav_list;
guint32 page_num; guint32 page_num;
win = glade_xml_get_widget (xml, "debug_window"); nav_list = g_object_get_data(G_OBJECT(w),"nav_list");
nav_list = g_object_get_data(G_OBJECT(win),"nav_list"); nav_elem = g_object_get_data(G_OBJECT(w),"nav_elem");
nav_elem = g_object_get_data(G_OBJECT(win),"nav_elem");
if (!nav_elem || *nav_elem==1) if (!nav_elem || *nav_elem==1)
return; /* at top of list already */ return; /* at top of list already */
(*nav_elem)--; (*nav_elem)--;
g_object_set_data(G_OBJECT(win), "nav_elem", nav_elem); g_object_set_data(G_OBJECT(w), "nav_elem", nav_elem);
page = g_list_nth_data(nav_list,(*nav_elem) - 1); page = g_list_nth_data(nav_list,(*nav_elem) - 1);
page_num = atol(page); 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_num);
} }
static void static void
gmdb_nav_add_page(GladeXML *xml, guint32 page_num) gmdb_nav_add_page(GtkWidget *win, guint32 page_num)
{ {
GList *nav_list = NULL; GList *nav_list = NULL;
GList *link = NULL; GList *link = NULL;
GtkWidget *win;
guint *nav_elem; guint *nav_elem;
guint num_items; guint num_items;
char buf[100];
int i; int i;
win = glade_xml_get_widget (xml, "debug_window");
nav_elem = g_object_get_data(G_OBJECT(win),"nav_elem"); nav_elem = g_object_get_data(G_OBJECT(win),"nav_elem");
if (!nav_elem) { if (!nav_elem) {
nav_elem = g_malloc0(sizeof(guint)); nav_elem = g_malloc0(sizeof(guint));
} }
sprintf(buf, "%lu", (unsigned long)page_num);
nav_list = g_object_get_data(G_OBJECT(win),"nav_list"); nav_list = g_object_get_data(G_OBJECT(win),"nav_list");
/* /*
@ -221,15 +212,27 @@ gmdb_nav_add_page(GladeXML *xml, guint32 page_num)
*nav_elem = g_list_length(nav_list); *nav_elem = g_list_length(nav_list);
nav_list = g_list_append(nav_list, g_strdup(buf)); nav_list = g_list_append(nav_list,
g_strdup_printf("%lu", (unsigned long)page_num));
*nav_elem = g_list_length(nav_list); *nav_elem = g_list_length(nav_list);
g_object_set_data(G_OBJECT(win), "nav_list", nav_list); g_object_set_data(G_OBJECT(win), "nav_list", nav_list);
g_object_set_data(G_OBJECT(win), "nav_elem", nav_elem); g_object_set_data(G_OBJECT(win), "nav_elem", nav_elem);
} }
void
gmdb_debug_jump_cb(GtkWidget *w, gpointer data)
{
gmdb_debug_jump(g_object_get_data(G_OBJECT(w), "debugwin_xml"), 0);
}
void
gmdb_debug_jump_msb_cb(GtkWidget *w, gpointer data)
{
gmdb_debug_jump(g_object_get_data(G_OBJECT(w), "debugwin_xml"), 1);
}
static void static void
gmdb_debug_jump_cb(GtkWidget *w, GladeXML *xml) gmdb_debug_jump(GladeXML *xml, int msb)
{ {
GtkTextView *textview; GtkTextView *textview;
GtkTextBuffer *txtbuffer; GtkTextBuffer *txtbuffer;
@ -249,6 +252,7 @@ gmdb_debug_jump_cb(GtkWidget *w, GladeXML *xml)
return; return;
} }
text = g_strdup(gtk_text_buffer_get_text(txtbuffer, &start, &end, FALSE)); text = g_strdup(gtk_text_buffer_get_text(txtbuffer, &start, &end, FALSE));
//fprintf(stderr, "selected text = %s\n",text);
hex_digit = strtok(text, " "); hex_digit = strtok(text, " ");
strcpy(page, "0x"); strcpy(page, "0x");
do { do {
@ -258,84 +262,49 @@ gmdb_debug_jump_cb(GtkWidget *w, GladeXML *xml)
} }
strcpy(digits[num_digits++],hex_digit); strcpy(digits[num_digits++],hex_digit);
} while (num_digits < 4 && (hex_digit = strtok(NULL," "))); } while (num_digits < 4 && (hex_digit = strtok(NULL," ")));
if (msb) {
for (i=0;i<num_digits;i++) {
strcat(page, digits[i]);
}
} else {
for (i=num_digits-1;i>=0;i--) { for (i=num_digits-1;i>=0;i--) {
strcat(page, digits[i]); strcat(page, digits[i]);
} }
}
g_free(text); g_free(text);
//fprintf(stderr, "going to page %s\n",page); //fprintf(stderr, "going to page %s\n",page);
entry = glade_xml_get_widget (xml, "debug_entry"); entry = glade_xml_get_widget (xml, "debug_entry");
gtk_entry_set_text(GTK_ENTRY(entry),page); gtk_entry_set_text(GTK_ENTRY(entry),page);
gmdb_debug_display_cb(w, xml); gmdb_debug_display_cb(entry, NULL);
} }
static void
gmdb_debug_jump_msb_cb(GtkWidget *w, GladeXML *xml)
{
GtkTextView *textview;
GtkTextBuffer *txtbuffer;
GtkTextIter start, end;
GtkWidget *entry;
gchar *text;
gchar page[12];
gchar digits[4][3];
gchar *hex_digit;
int i, num_digits = 0;
textview = (GtkTextView *) glade_xml_get_widget (xml, "debug_textview"); /*
txtbuffer = gtk_text_view_get_buffer(textview); * w: pointer to GtkEntry 'debug_entry'
if (!gtk_text_buffer_get_selection_bounds(txtbuffer, &start, &end)) { */
/* FIX ME -- replace with text in status bar */ void
fprintf(stderr, "Nothing selected\n"); gmdb_debug_display_cb(GtkWidget *w, gpointer data)
return;
}
text = g_strdup(gtk_text_buffer_get_text(txtbuffer, &start, &end, FALSE));
fprintf(stderr, "selected text = %s\n",text);
hex_digit = strtok(text, " ");
strcpy(page, "0x");
do {
if (strlen(hex_digit)>2) {
fprintf(stderr, "Not a hex value\n");
return;
}
strcpy(digits[num_digits++],hex_digit);
} while (num_digits < 4 && (hex_digit = strtok(NULL," ")));
for (i=0;i<num_digits;i++) {
strcat(page, digits[i]);
}
g_free(text);
fprintf(stderr, "going to page %s\n",page);
entry = glade_xml_get_widget (xml, "debug_entry");
gtk_entry_set_text(GTK_ENTRY(entry),page);
gmdb_debug_display_cb(w, xml);
}
static void
gmdb_debug_display_cb(GtkWidget *w, GladeXML *xml)
{ {
int page; int page;
int i; int i;
GtkWidget *entry; GtkWidget *win;
gchar *s; gchar *s;
GladeXML *xml;
if (!mdb) return; if (!mdb) return;
entry = glade_xml_get_widget (xml, "debug_entry"); win = gtk_widget_get_toplevel(w);
xml = g_object_get_data(G_OBJECT(win), "debugwin_xml");
s = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
s = g_strdup(gtk_entry_get_text(GTK_ENTRY(w)));
if (!strncmp(s,"0x",2)) { if (!strncmp(s,"0x",2)) {
page = 0; page = strtol(s+2, NULL, 16);
for (i=2;i<strlen(s);i++) {
page *= 16;
if (isupper(s[i]))
s[i] -= 0x20;
page += s[i] > '9' ? s[i] - 'a' + 10 : s[i] - '0';
}
} else { } else {
page = atol(gtk_entry_get_text(GTK_ENTRY(entry))); page = strtol(s, NULL, 10);
} }
g_free(s);
if (page>gmdb_get_max_page(mdb) || page<0) { if (page>gmdb_get_max_page(mdb) || page<0) {
GtkWidget* dlg = gtk_message_dialog_new ( GtkWidget* dlg = gtk_message_dialog_new (GTK_WINDOW(win),
GTK_WINDOW(gtk_widget_get_toplevel(w)),
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING,
GTK_BUTTONS_CLOSE, GTK_BUTTONS_CLOSE,
_("Page entered is outside valid page range.")); _("Page entered is outside valid page range."));
@ -344,7 +313,7 @@ gmdb_debug_display_cb(GtkWidget *w, GladeXML *xml)
} }
/* add to the navigation list */ /* add to the navigation list */
gmdb_nav_add_page(xml, page); gmdb_nav_add_page(win, page);
/* gmdb_debug_display handles the mechanics of getting the page up */ /* gmdb_debug_display handles the mechanics of getting the page up */
gmdb_debug_display(xml, page); gmdb_debug_display(xml, page);
} }
@ -361,7 +330,7 @@ gmdb_debug_display(GladeXML *xml, guint32 page)
GtkTextBuffer *buffer; GtkTextBuffer *buffer;
GtkTextIter iter; GtkTextIter iter;
GtkTextView *textview; GtkTextView *textview;
GtkWidget *entry; GtkWidget *entry, *window;
char pagestr[20]; char pagestr[20];
guint *dissect; guint *dissect;
GtkWidget *tree; GtkWidget *tree;
@ -408,7 +377,8 @@ gmdb_debug_display(GladeXML *xml, guint32 page)
tree = glade_xml_get_widget(xml, "debug_treeview"); tree = glade_xml_get_widget(xml, "debug_treeview");
store = (GtkTreeView *) gtk_tree_view_get_model(GTK_TREE_VIEW(tree)); store = (GtkTreeView *) gtk_tree_view_get_model(GTK_TREE_VIEW(tree));
dissect = g_object_get_data(G_OBJECT(xml),"dissect"); window = glade_xml_get_widget(xml, "debug_window");
dissect = g_object_get_data(G_OBJECT(window),"dissect");
if (!dissect || *dissect==1) if (!dissect || *dissect==1)
gmdb_debug_dissect(GTK_TREE_STORE(store), fbuf, 0, length); gmdb_debug_dissect(GTK_TREE_STORE(store), fbuf, 0, length);
@ -450,17 +420,6 @@ i+=c[0];
return i; return i;
} }
static guint32 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) get_uint32(unsigned char *c)
{ {
guint32 l; guint32 l;
@ -542,13 +501,14 @@ gmdb_debug_add_page_ptr(GtkTreeStore *store, GtkTreeIter *parent, char *fbuf, co
{ {
gchar str[100]; gchar str[100];
GtkTreeIter *node; GtkTreeIter *node;
guint32 pg_row = get_uint32(fbuf+offset);
snprintf(str, 100, "%s", label); snprintf(str, 100, "%s", label);
node = gmdb_debug_add_item(store, parent, str, offset, offset+3); node = gmdb_debug_add_item(store, parent, str, offset, offset+3);
snprintf(str, 100, "Row Number: %u", fbuf[offset]); snprintf(str, 100, "Row Number: %u", pg_row & 0xff);
gmdb_debug_add_item(store, node, str, offset, offset); gmdb_debug_add_item(store, node, str, offset, offset);
snprintf(str, 100, "Page Number: %lu", (unsigned long)get_uint24(&fbuf[offset+1])); snprintf(str, 100, "Page Number: %lu", pg_row >> 8);
gmdb_debug_add_item(store, node, str, offset+1, offset+3); gmdb_debug_add_item(store, node, str, offset+1, offset+3);
} }
static void static void
@ -974,14 +934,14 @@ gmdb_debug_delete_cb(GtkWidget *w, GladeXML *xml)
{ {
return FALSE; return FALSE;
} }
static void void
gmdb_debug_close_cb(GtkWidget *w, GladeXML *xml) gmdb_debug_close_cb(GtkWidget *w, gpointer data)
{ {
GtkWidget *win; GladeXML *xml;
xml = g_object_get_data(G_OBJECT(w), "debugwin_xml");
debug_list = g_list_remove(debug_list, xml); debug_list = g_list_remove(debug_list, xml);
win = glade_xml_get_widget (xml, "debug_window"); gtk_widget_destroy(w);
if (win) gtk_widget_destroy(win);
} }
void void
gmdb_debug_close_all() gmdb_debug_close_all()
@ -997,12 +957,10 @@ gmdb_debug_close_all()
} }
void void
gmdb_debug_new_cb(GtkWidget *w, gpointer *data) gmdb_debug_new_cb(GtkWidget *w, gpointer data)
{ {
GtkTextView *textview; GtkTextView *textview;
guint32 page; GtkWidget *entry, *debugwin;
GtkWidget *entry, *mi, *button, *debugwin;
gchar text[20];
GladeXML *debugwin_xml; GladeXML *debugwin_xml;
GtkWidget *tree; GtkWidget *tree;
GtkTreeStore *store; GtkTreeStore *store;
@ -1019,55 +977,11 @@ gmdb_debug_new_cb(GtkWidget *w, gpointer *data)
/* set signals with user data, anyone know how to do this in glade? */ /* set signals with user data, anyone know how to do this in glade? */
entry = glade_xml_get_widget (debugwin_xml, "debug_entry"); entry = glade_xml_get_widget (debugwin_xml, "debug_entry");
g_signal_connect (G_OBJECT (entry), "activate",
G_CALLBACK (gmdb_debug_display_cb), debugwin_xml);
mi = glade_xml_get_widget (debugwin_xml, "close_menu");
g_signal_connect (G_OBJECT (mi), "activate",
G_CALLBACK (gmdb_debug_close_cb), debugwin_xml);
button = glade_xml_get_widget (debugwin_xml, "close_button");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (gmdb_debug_close_cb), debugwin_xml);
mi = glade_xml_get_widget (debugwin_xml, "menu_page");
g_signal_connect (G_OBJECT (mi), "activate",
G_CALLBACK (gmdb_debug_jump_cb), debugwin_xml);
mi = glade_xml_get_widget (debugwin_xml, "menu_page_msb");
g_signal_connect (G_OBJECT (mi), "activate",
G_CALLBACK (gmdb_debug_jump_msb_cb), debugwin_xml);
button = glade_xml_get_widget (debugwin_xml, "jump_button");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (gmdb_debug_jump_cb), debugwin_xml);
mi = glade_xml_get_widget (debugwin_xml, "back_menu");
g_signal_connect (G_OBJECT (mi), "activate",
G_CALLBACK (gmdb_debug_back_cb), debugwin_xml);
button = glade_xml_get_widget (debugwin_xml, "back_button");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (gmdb_debug_back_cb), debugwin_xml);
mi = glade_xml_get_widget (debugwin_xml, "forward_menu");
g_signal_connect (G_OBJECT (mi), "activate",
G_CALLBACK (gmdb_debug_forward_cb), debugwin_xml);
button = glade_xml_get_widget (debugwin_xml, "forward_button");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (gmdb_debug_forward_cb), debugwin_xml);
mi = glade_xml_get_widget (debugwin_xml, "dissector");
g_signal_connect (G_OBJECT (mi), "activate",
G_CALLBACK (gmdb_debug_set_dissect_cb), debugwin_xml);
button = glade_xml_get_widget (debugwin_xml, "debug_button");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (gmdb_debug_display_cb), debugwin_xml);
debugwin = glade_xml_get_widget (debugwin_xml, "debug_window"); debugwin = glade_xml_get_widget (debugwin_xml, "debug_window");
gtk_signal_connect (GTK_OBJECT (debugwin), "delete_event", g_signal_connect (G_OBJECT (debugwin), "delete_event",
GTK_SIGNAL_FUNC (gmdb_debug_delete_cb), debugwin_xml); G_CALLBACK (gmdb_debug_delete_cb), debugwin_xml);
g_object_set_data (G_OBJECT (debugwin), "debugwin_xml", debugwin_xml);
/* this should be a preference, needs to be fixed width */ /* this should be a preference, needs to be fixed width */
textview = (GtkTextView *) glade_xml_get_widget (debugwin_xml, "debug_textview"); textview = (GtkTextView *) glade_xml_get_widget (debugwin_xml, "debug_textview");
@ -1079,14 +993,6 @@ gmdb_debug_new_cb(GtkWidget *w, gpointer *data)
store = gtk_tree_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT); store = gtk_tree_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT);
gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));
button = glade_xml_get_widget (debugwin_xml, "debug_button");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (gmdb_debug_display_cb), debugwin_xml);
debugwin = glade_xml_get_widget (debugwin_xml, "debug_window");
gtk_signal_connect (GTK_OBJECT (debugwin), "delete_event",
GTK_SIGNAL_FUNC (gmdb_debug_delete_cb), debugwin_xml);
renderer = gtk_cell_renderer_text_new(); renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes("Field", column = gtk_tree_view_column_new_with_attributes("Field",
renderer, "text", 0, NULL); renderer, "text", 0, NULL);
@ -1101,37 +1007,43 @@ gmdb_debug_new_cb(GtkWidget *w, gpointer *data)
if (mdb) { if (mdb) {
gmdb_debug_init(mdb, debugwin_xml); gmdb_debug_init(mdb, debugwin_xml);
if (data) { if (data) {
page = *((guint32 *)data); gchar *text;
sprintf(text,"%lu",(unsigned long)page); guint32 page = *((guint32 *)data);
gtk_entry_set_text(GTK_ENTRY(entry),text);
gmdb_debug_display_cb(w, debugwin_xml); text = g_strdup_printf("%lu", (unsigned long)page);
gtk_entry_set_text(GTK_ENTRY(entry), text);
g_free(text);
gmdb_debug_display_cb(entry, NULL);
} }
} }
} }
void void
gmdb_debug_set_dissect_cb(GtkWidget *w, GladeXML *xml) gmdb_debug_set_dissect_cb(GtkWidget *w, gpointer data)
{ {
guint *dissect; guint *dissect;
//win = glade_xml_get_widget (xml, "debug_window"); dissect = g_object_get_data(G_OBJECT(w),"dissect");
dissect = g_object_get_data(G_OBJECT(xml),"dissect");
if (!dissect) return; if (!dissect) return;
//printf("here %d\n", *dissect); //printf("here %d\n", *dissect);
*dissect = *dissect ? 0 : 1; *dissect = *dissect ? 0 : 1;
g_object_set_data(G_OBJECT(xml), "dissect", dissect); g_object_set_data(G_OBJECT(w), "dissect", dissect);
} }
static void gmdb_debug_init(MdbHandle *mdb, GladeXML *xml) static void gmdb_debug_init(MdbHandle *mdb, GladeXML *xml)
{ {
char tmpstr[100]; gchar *str;
GtkWidget *pglabel, *entry; GtkWidget *pglabel, *entry, *window;
guint *dissect; guint *dissect;
pglabel = glade_xml_get_widget (xml, "debug_num_label"); pglabel = glade_xml_get_widget (xml, "debug_num_label");
sprintf(tmpstr, "(0-%d):", (int)gmdb_get_max_page(mdb)); str = g_strdup_printf("(0-%d):", (int)gmdb_get_max_page(mdb));
gtk_label_set_text(GTK_LABEL(pglabel), tmpstr); gtk_label_set_text(GTK_LABEL(pglabel), str);
g_free(str);
entry = glade_xml_get_widget (xml, "debug_entry"); entry = glade_xml_get_widget (xml, "debug_entry");
gtk_widget_grab_focus(GTK_WIDGET(entry)); gtk_widget_grab_focus(GTK_WIDGET(entry));
window = glade_xml_get_widget (xml, "debug_window");
dissect = g_malloc0(sizeof(guint)); dissect = g_malloc0(sizeof(guint));
*dissect = 1; *dissect = 1;
g_object_set_data(G_OBJECT(xml), "dissect", dissect); g_object_set_data(G_OBJECT(window), "dissect", dissect);
} }

View File

@ -59,6 +59,7 @@
<widget class="GtkImageMenuItem" id="close_menu"> <widget class="GtkImageMenuItem" id="close_menu">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock_item">GNOMEUIINFO_MENU_CLOSE_ITEM</property> <property name="stock_item">GNOMEUIINFO_MENU_CLOSE_ITEM</property>
<signal name="activate" handler="gmdb_debug_close_cb"/>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -80,6 +81,7 @@
<property name="label" translatable="yes">_Dissector</property> <property name="label" translatable="yes">_Dissector</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">True</property>
<signal name="activate" handler="gmdb_debug_set_dissect_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
@ -88,6 +90,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Back</property> <property name="label" translatable="yes">_Back</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="gmdb_debug_back_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
@ -97,6 +100,7 @@
<property name="stock_item">GNOMEUIINFO_MENU_NEW_ITEM</property> <property name="stock_item">GNOMEUIINFO_MENU_NEW_ITEM</property>
<property name="label" translatable="yes">_Forward</property> <property name="label" translatable="yes">_Forward</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="gmdb_debug_forward_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
@ -111,6 +115,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Selected Page</property> <property name="label" translatable="yes">_Selected Page</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="gmdb_debug_jump_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
@ -119,6 +124,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Selected Page (_MSB)</property> <property name="label" translatable="yes">Selected Page (_MSB)</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="gmdb_debug_jump_msb_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -182,9 +188,10 @@
<child> <child>
<widget class="button" id="back_button"> <widget class="button" id="back_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip" translatable="yes">New File</property> <property name="tooltip" translatable="yes">Back</property>
<property name="label">gtk-go-back</property> <property name="label">gtk-go-back</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="clicked" handler="gmdb_debug_back_cb" object="debug_window"/>
<property name="new_group">True</property> <property name="new_group">True</property>
</widget> </widget>
<packing> <packing>
@ -195,9 +202,10 @@
<child> <child>
<widget class="button" id="forward_button"> <widget class="button" id="forward_button">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip" translatable="yes">Open File</property> <property name="tooltip" translatable="yes">Forward</property>
<property name="label">gtk-go-forward</property> <property name="label">gtk-go-forward</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="clicked" handler="gmdb_debug_forward_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
@ -206,6 +214,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label">gtk-jump-to</property> <property name="label">gtk-jump-to</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="clicked" handler="gmdb_debug_jump_cb" object="debug_window"/>
</widget> </widget>
</child> </child>
@ -215,6 +224,7 @@
<property name="tooltip" translatable="yes">Save File</property> <property name="tooltip" translatable="yes">Save File</property>
<property name="label">gtk-close</property> <property name="label">gtk-close</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="clicked" handler="gmdb_debug_close_cb" object="debug_window"/>
<property name="new_group">True</property> <property name="new_group">True</property>
</widget> </widget>
<packing> <packing>
@ -305,6 +315,7 @@
<property name="has_frame">True</property> <property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property> <property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property> <property name="activates_default">False</property>
<signal name="activate" handler="gmdb_debug_display_cb"/>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -320,6 +331,7 @@
<property name="label" translatable="yes">_Display</property> <property name="label" translatable="yes">_Display</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<signal name="clicked" handler="gmdb_debug_display_cb" object="debug_entry"/>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -57,8 +57,14 @@ void gmdb_table_add_tab(GtkWidget *notebook);
void gmdb_debug_tab_new(GtkWidget *notebook); void gmdb_debug_tab_new(GtkWidget *notebook);
/* debug.c */ /* debug.c */
void gmdb_debug_new_cb(GtkWidget *w, gpointer *data); void gmdb_debug_jump_cb(GtkWidget *w, gpointer data);
void gmdb_debug_set_dissect_cb(GtkWidget *w, GladeXML *xml); void gmdb_debug_jump_msb_cb(GtkWidget *w, gpointer data);
void gmdb_debug_display_cb(GtkWidget *w, gpointer data);
void gmdb_debug_close_cb(GtkWidget *w, gpointer data);
void gmdb_debug_forward_cb(GtkWidget *w, gpointer data);
void gmdb_debug_back_cb(GtkWidget *w, gpointer data);
void gmdb_debug_new_cb(GtkWidget *w, gpointer data);
void gmdb_debug_set_dissect_cb(GtkWidget *w, gpointer data);
void gmdb_debug_close_all(void); void gmdb_debug_close_all(void);
/* sql.c */ /* sql.c */

View File

@ -39,7 +39,7 @@ MdbCatalogEntry *entry;
} }
entry = g_ptr_array_index(mdb->catalog,selected_table); entry = g_ptr_array_index(mdb->catalog,selected_table);
gmdb_debug_new_cb(w, (gpointer *) &entry->table_pg); gmdb_debug_new_cb(w, (gpointer) &entry->table_pg);
} }
void void
gmdb_table_def_cb(GtkList *list, GtkWidget *w, gpointer data) gmdb_table_def_cb(GtkList *list, GtkWidget *w, gpointer data)