GTK: added clear palette button

GTK: added exception for bad palette file
This commit is contained in:
punkrockguy318 2010-02-24 06:51:30 +00:00
parent 39787369f3
commit eae3042e42
3 changed files with 32 additions and 11 deletions

View File

@ -29,7 +29,7 @@
/** /**
* Read a custom pallete from a file and load it into the core. * Read a custom pallete from a file and load it into the core.
*/ */
void int
LoadCPalette(const std::string &file) LoadCPalette(const std::string &file)
{ {
printf("Loading custom palette from file...\n"); printf("Loading custom palette from file...\n");
@ -38,11 +38,12 @@ LoadCPalette(const std::string &file)
if(!(fp = FCEUD_UTF8fopen(file.c_str(), "rb"))) { if(!(fp = FCEUD_UTF8fopen(file.c_str(), "rb"))) {
printf(" Error loading custom palette from file: %s\n", file.c_str()); printf(" Error loading custom palette from file: %s\n", file.c_str());
return; return -1;
} }
fread(tmpp, 1, 192, fp); fread(tmpp, 1, 192, fp);
FCEUI_SetPaletteArray(tmpp); FCEUI_SetPaletteArray(tmpp);
fclose(fp); fclose(fp);
return 0;
} }
/** /**

View File

@ -5,6 +5,6 @@
Config *InitConfig(void); Config *InitConfig(void);
void UpdateEMUCore(Config *); void UpdateEMUCore(Config *);
void LoadCPalette(const std::string &file); int LoadCPalette(const std::string &file);
#endif #endif

View File

@ -151,7 +151,15 @@ void loadPalette (GtkWidget* w, gpointer p)
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fileChooser)); filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (fileChooser));
g_config->setOption("SDL.Palette", filename); 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); gtk_entry_set_text(GTK_ENTRY(p), filename);
g_free(filename); g_free(filename);
@ -159,6 +167,13 @@ void loadPalette (GtkWidget* w, gpointer p)
} }
gtk_widget_destroy (fileChooser); 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() void openPaletteConfig()
{ {
GtkWidget* win; GtkWidget* win;
@ -166,6 +181,7 @@ void openPaletteConfig()
GtkWidget* paletteHbox; GtkWidget* paletteHbox;
GtkWidget* paletteButton; GtkWidget* paletteButton;
GtkWidget* paletteEntry; GtkWidget* paletteEntry;
GtkWidget* clearButton;
GtkWidget* slidersFrame; GtkWidget* slidersFrame;
GtkWidget* slidersVbox; GtkWidget* slidersVbox;
GtkWidget* colorFrame; GtkWidget* colorFrame;
@ -188,10 +204,16 @@ void openPaletteConfig()
paletteEntry = gtk_entry_new(); paletteEntry = gtk_entry_new();
gtk_entry_set_editable(GTK_ENTRY(paletteEntry), FALSE); 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), paletteButton, FALSE, FALSE, 2);
gtk_box_pack_start(GTK_BOX(paletteHbox), paletteEntry, TRUE, TRUE, 5); 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(paletteButton, "clicked", G_CALLBACK(loadPalette), paletteEntry);
g_signal_connect(clearButton, "clicked", G_CALLBACK(clearPalette), paletteEntry);
// sync with config // sync with config
std::string fn; std::string fn;
@ -199,6 +221,8 @@ void openPaletteConfig()
gtk_entry_set_text(GTK_ENTRY(paletteEntry), fn.c_str()); gtk_entry_set_text(GTK_ENTRY(paletteEntry), fn.c_str());
// color / tint / hue sliders // color / tint / hue sliders
slidersFrame = gtk_frame_new("Video controls"); slidersFrame = gtk_frame_new("Video controls");
slidersVbox = gtk_vbox_new(TRUE, 2); slidersVbox = gtk_vbox_new(TRUE, 2);
@ -680,13 +704,9 @@ void quit ()
exit(0); exit(0);
} }
GtkWidget* aboutDialog;
inline void quitAbout(void) { gtk_widget_hide_all(aboutDialog);}
void showAbout () void showAbout ()
{ {
GtkWidget* aboutDialog;
aboutDialog = gtk_about_dialog_new (); aboutDialog = gtk_about_dialog_new ();
gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(aboutDialog), "About fceuX"); 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_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) void toggleSound(GtkWidget* check, gpointer data)