GTK: added clear palette button
GTK: added exception for bad palette file
This commit is contained in:
parent
39787369f3
commit
eae3042e42
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue