From eae3042e427c4ccc7be89afefb476ba8d23d8344 Mon Sep 17 00:00:00 2001 From: punkrockguy318 Date: Wed, 24 Feb 2010 06:51:30 +0000 Subject: [PATCH] GTK: added clear palette button GTK: added exception for bad palette file --- src/drivers/sdl/config.cpp | 5 +++-- src/drivers/sdl/config.h | 2 +- src/drivers/sdl/gui.cpp | 36 ++++++++++++++++++++++++++++-------- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/drivers/sdl/config.cpp b/src/drivers/sdl/config.cpp index 2a543fd2..2e1a0cb9 100644 --- a/src/drivers/sdl/config.cpp +++ b/src/drivers/sdl/config.cpp @@ -29,7 +29,7 @@ /** * Read a custom pallete from a file and load it into the core. */ -void +int LoadCPalette(const std::string &file) { printf("Loading custom palette from file...\n"); @@ -38,11 +38,12 @@ LoadCPalette(const std::string &file) if(!(fp = FCEUD_UTF8fopen(file.c_str(), "rb"))) { printf(" Error loading custom palette from file: %s\n", file.c_str()); - return; + return -1; } fread(tmpp, 1, 192, fp); FCEUI_SetPaletteArray(tmpp); fclose(fp); + return 0; } /** diff --git a/src/drivers/sdl/config.h b/src/drivers/sdl/config.h index 65b877a7..63f485b9 100644 --- a/src/drivers/sdl/config.h +++ b/src/drivers/sdl/config.h @@ -5,6 +5,6 @@ Config *InitConfig(void); void UpdateEMUCore(Config *); -void LoadCPalette(const std::string &file); +int LoadCPalette(const std::string &file); #endif diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index aeadb328..6aad1d5c 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -151,7 +151,15 @@ void loadPalette (GtkWidget* w, gpointer p) filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fileChooser)); g_config->setOption("SDL.Palette", filename); - LoadCPalette(filename); + if(LoadCPalette(filename)) + { + GtkWidget* msgbox; + msgbox = gtk_message_dialog_new(GTK_WINDOW(MainWindow), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, + "Failed to load the palette."); + gtk_dialog_run(GTK_DIALOG(msgbox)); + gtk_widget_hide_all(msgbox); + } + gtk_entry_set_text(GTK_ENTRY(p), filename); g_free(filename); @@ -159,6 +167,13 @@ void loadPalette (GtkWidget* w, gpointer p) } gtk_widget_destroy (fileChooser); } + +void clearPalette(GtkWidget* w, gpointer p) +{ + g_config->setOption("SDL.Palette", 0); + gtk_entry_set_text(GTK_ENTRY(p), ""); +} + void openPaletteConfig() { GtkWidget* win; @@ -166,6 +181,7 @@ void openPaletteConfig() GtkWidget* paletteHbox; GtkWidget* paletteButton; GtkWidget* paletteEntry; + GtkWidget* clearButton; GtkWidget* slidersFrame; GtkWidget* slidersVbox; GtkWidget* colorFrame; @@ -188,10 +204,16 @@ void openPaletteConfig() paletteEntry = gtk_entry_new(); gtk_entry_set_editable(GTK_ENTRY(paletteEntry), FALSE); + clearButton = gtk_button_new_from_stock(GTK_STOCK_CLEAR); + gtk_box_pack_start(GTK_BOX(paletteHbox), paletteButton, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(paletteHbox), paletteEntry, TRUE, TRUE, 5); + gtk_box_pack_start(GTK_BOX(paletteHbox), clearButton, FALSE, FALSE, 0); g_signal_connect(paletteButton, "clicked", G_CALLBACK(loadPalette), paletteEntry); + g_signal_connect(clearButton, "clicked", G_CALLBACK(clearPalette), paletteEntry); + + // sync with config std::string fn; @@ -199,6 +221,8 @@ void openPaletteConfig() gtk_entry_set_text(GTK_ENTRY(paletteEntry), fn.c_str()); + + // color / tint / hue sliders slidersFrame = gtk_frame_new("Video controls"); slidersVbox = gtk_vbox_new(TRUE, 2); @@ -680,13 +704,9 @@ void quit () exit(0); } - -GtkWidget* aboutDialog; - -inline void quitAbout(void) { gtk_widget_hide_all(aboutDialog);} - void showAbout () { + GtkWidget* aboutDialog; aboutDialog = gtk_about_dialog_new (); gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(aboutDialog), "About fceuX"); @@ -696,9 +716,9 @@ void showAbout () gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(aboutDialog), "http://fceux.com"); - gtk_widget_show_all(GTK_WIDGET(aboutDialog)); + gtk_dialog_run(GTK_DIALOG(aboutDialog)); + gtk_widget_hide_all(aboutDialog); - g_signal_connect(G_OBJECT(aboutDialog), "delete-event", quitAbout, NULL); } void toggleSound(GtkWidget* check, gpointer data)