X-Git-Url: http://git.draconx.ca/gitweb/liblbx.git/blobdiff_plain/beecbda1887c5838c497bcb9fc166d527c3e2660..c6bde872a51bea0beb105d5b9fde0f4aad36ca1d:/src/gui/lbxgui.c?ds=sidebyside diff --git a/src/gui/lbxgui.c b/src/gui/lbxgui.c index 33dfdd8..21dee9a 100644 --- a/src/gui/lbxgui.c +++ b/src/gui/lbxgui.c @@ -169,11 +169,14 @@ gboolean canvas_expose(GtkWidget *canvas, GdkEventExpose *event, gpointer data) return TRUE; } -static int init_framedata(void) +static int init_framedata(int reset) { struct lbx_imginfo info; GtkSpinButton *spin; + if (!image) + return 0; + lbximg_getinfo(image, &info); framebuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, info.width, info.height); @@ -197,7 +200,39 @@ static int img_close(void *handle) return 0; } -void set_image_data(GtkComboBox *combo) +void set_override_data(GtkComboBox *combo) +{ + GtkTreeIter iter; + gpointer lbx; + guint index; + LBXfile *f; + LBX_IMG *img; + + if (!gtk_combo_box_get_active_iter(combo, &iter)) + return; + + gtk_tree_model_get(GTK_TREE_MODEL(archives), &iter, + 1, &lbx, + 2, &index, + -1); + + f = lbx_file_open(lbx, index); + if (f) { + img = lbximg_open(f, &lbx_arch_fops, NULL); + if (img) { + memset(palette_override, 0, sizeof palette_override); + lbximg_getpalette(img, palette_override); + lbximg_close(img); + init_framedata(0); + } + + lbx_file_close(f); + } else { + puts("damn"); + } +} + +void set_palette_data(GtkComboBox *combo) { GtkTreeIter iter; gpointer lbx; @@ -214,8 +249,31 @@ void set_image_data(GtkComboBox *combo) f = lbx_file_open(lbx, index); if (f) { - struct lbx_imginfo info; + if (lbximg_loadpalette(f, &lbx_arch_fops, palette_external)) + memset(palette_external, 0, sizeof palette_external); + lbx_file_close(f); + } + + init_framedata(0); +} + +void set_image_data(GtkComboBox *combo) +{ + GtkTreeIter iter; + gpointer lbx; + guint index; + LBXfile *f; + + if (!gtk_combo_box_get_active_iter(combo, &iter)) + return; + gtk_tree_model_get(GTK_TREE_MODEL(archives), &iter, + 1, &lbx, + 2, &index, + -1); + + f = lbx_file_open(lbx, index); + if (f) { image = lbximg_open(f, &lbx_arch_fops, img_close); if (image) { memset(palette_internal, 0, sizeof palette_internal); @@ -224,7 +282,7 @@ void set_image_data(GtkComboBox *combo) lbximg_close(image); } - if (init_framedata() == -1) { + if (init_framedata(1) == -1) { puts("crap"); lbximg_close(image); } @@ -356,9 +414,17 @@ static void interface_init(void) gtk_tree_view_set_model(tree, GTK_TREE_MODEL(archives)); gtk_tree_view_append_column(tree, column); + combo = GTK_COMBO_BOX(gtk_builder_get_object(builder, "palettechooser")); + gtk_combo_box_set_model(combo, GTK_TREE_MODEL(archives)); + gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo), 0); + combo = GTK_COMBO_BOX(gtk_builder_get_object(builder, "imagechooser")); gtk_combo_box_set_model(combo, GTK_TREE_MODEL(archives)); gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo), 0); + + combo = GTK_COMBO_BOX(gtk_builder_get_object(builder, "overchooser")); + gtk_combo_box_set_model(combo, GTK_TREE_MODEL(archives)); + gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo), 0); } int main(int argc, char **argv) @@ -388,7 +454,7 @@ int main(int argc, char **argv) interface_init(); gtk_builder_connect_signals(builder, window); - g_timeout_add(33, timeout, NULL); + g_timeout_add(10, timeout, NULL); gtk_widget_show_all(window); gtk_main(); }