GTK: Replace GtkTable with GtkGrid, in a UI string
This commit is contained in:
parent
d680c4be51
commit
96bc8977bd
|
@ -512,6 +512,113 @@ static const GtkRadioActionEntry rotation_entries[] = {
|
||||||
{ "rotate_270", "gtk-orientation-reverse-landscape", "_270",NULL, NULL, 270 },
|
{ "rotate_270", "gtk-orientation-reverse-landscape", "_270",NULL, NULL, 270 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *graphics_settings =
|
||||||
|
"<?xml version='1.0' encoding='UTF-8'?>"
|
||||||
|
"<interface>"
|
||||||
|
" <requires lib='gtk+' version='3.24'/>"
|
||||||
|
" <object class='GtkGrid' id='graphics_grid'>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkLabel'>"
|
||||||
|
" <property name='label' translatable='yes'>3D Core:</property>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>0</property>"
|
||||||
|
" <property name='top_attach'>0</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkComboBoxText' id='core_combo'>"
|
||||||
|
" <items>"
|
||||||
|
" <item translatable='yes'>Null</item>"
|
||||||
|
" <item translatable='yes'>SoftRasterizer</item>"
|
||||||
|
" <item translatable='yes'>OpenGL</item>"
|
||||||
|
" </items>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>1</property>"
|
||||||
|
" <property name='top_attach'>0</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkLabel'>"
|
||||||
|
" <property name='label' translatable='yes'>3D Texture Upscaling:</property>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>0</property>"
|
||||||
|
" <property name='top_attach'>1</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkComboBoxText' id='scale'>"
|
||||||
|
" <items>"
|
||||||
|
" <item translatable='yes'>×1</item>"
|
||||||
|
" <item translatable='yes'>×2</item>"
|
||||||
|
" <item translatable='yes'>×4</item>"
|
||||||
|
" </items>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>1</property>"
|
||||||
|
" <property name='top_attach'>1</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkCheckButton' id='posterize'>"
|
||||||
|
" <property name='label' translatable='yes'>3D Texture Deposterization</property>"
|
||||||
|
" <property name='draw_indicator'>True</property>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>0</property>"
|
||||||
|
" <property name='top_attach'>2</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkCheckButton' id='smoothing'>"
|
||||||
|
" <property name='label' translatable='yes'>3D Texture Smoothing</property>"
|
||||||
|
" <property name='draw_indicator'>True</property>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>0</property>"
|
||||||
|
" <property name='top_attach'>3</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkCheckButton' id='hc_interpolate'>"
|
||||||
|
" <property name='label' translatable='yes'>High Resolution Color Interpolation (SoftRasterizer)</property>"
|
||||||
|
" <property name='draw_indicator'>True</property>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>1</property>"
|
||||||
|
" <property name='top_attach'>3</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkLabel'>"
|
||||||
|
" <property name='label' translatable='yes'>Multisample Antialiasing (OpenGL):</property>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>0</property>"
|
||||||
|
" <property name='top_attach'>4</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" <child>"
|
||||||
|
" <object class='GtkComboBoxText' id='multisample'>"
|
||||||
|
" <items>"
|
||||||
|
" <item translatable='yes'>None</item>"
|
||||||
|
" <item translatable='yes'>2</item>"
|
||||||
|
" <item translatable='yes'>4</item>"
|
||||||
|
" <item translatable='yes'>8</item>"
|
||||||
|
" <item translatable='yes'>16</item>"
|
||||||
|
" <item translatable='yes'>32</item>"
|
||||||
|
" </items>"
|
||||||
|
" </object>"
|
||||||
|
" <packing>"
|
||||||
|
" <property name='left_attach'>1</property>"
|
||||||
|
" <property name='top_attach'>4</property>"
|
||||||
|
" </packing>"
|
||||||
|
" </child>"
|
||||||
|
" </object>"
|
||||||
|
"</interface>";
|
||||||
|
|
||||||
enum winsize_enum {
|
enum winsize_enum {
|
||||||
WINSIZE_SCALE = 0,
|
WINSIZE_SCALE = 0,
|
||||||
WINSIZE_HALF = 1,
|
WINSIZE_HALF = 1,
|
||||||
|
@ -2178,7 +2285,10 @@ static void Edit_Joystick_Controls()
|
||||||
|
|
||||||
static void GraphicsSettingsDialog() {
|
static void GraphicsSettingsDialog() {
|
||||||
GtkWidget *gsDialog;
|
GtkWidget *gsDialog;
|
||||||
GtkWidget *gsKey, *coreCombo, *wTable, *wPosterize, *wScale, *wSmoothing, *wMultisample, *wHCInterpolate;
|
GtkBox *wBox;
|
||||||
|
GtkGrid *wGrid;
|
||||||
|
GtkComboBox *coreCombo, *wScale, *wMultisample;
|
||||||
|
GtkToggleButton *wPosterize, *wSmoothing, *wHCInterpolate;
|
||||||
|
|
||||||
gsDialog = gtk_dialog_new_with_buttons("Graphics Settings",
|
gsDialog = gtk_dialog_new_with_buttons("Graphics Settings",
|
||||||
GTK_WINDOW(pWindow),
|
GTK_WINDOW(pWindow),
|
||||||
|
@ -2189,97 +2299,44 @@ static void GraphicsSettingsDialog() {
|
||||||
GTK_RESPONSE_CANCEL,
|
GTK_RESPONSE_CANCEL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
GtkBuilder *builder = gtk_builder_new_from_string(graphics_settings, -1);
|
||||||
|
wBox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gsDialog)));
|
||||||
|
wGrid = GTK_GRID(gtk_builder_get_object(builder, "graphics_grid"));
|
||||||
|
gtk_box_pack_start(wBox, GTK_WIDGET(wGrid), TRUE, FALSE, 0);
|
||||||
|
coreCombo = GTK_COMBO_BOX(gtk_builder_get_object(builder, "core_combo"));
|
||||||
|
wScale = GTK_COMBO_BOX(gtk_builder_get_object(builder, "scale"));
|
||||||
|
wMultisample = GTK_COMBO_BOX(gtk_builder_get_object(builder, "multisample"));
|
||||||
|
wPosterize = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "posterize"));
|
||||||
|
wSmoothing = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "smoothing"));
|
||||||
|
wHCInterpolate = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "hc_interpolate"));
|
||||||
|
g_object_unref(builder);
|
||||||
|
|
||||||
wTable = gtk_table_new(2 ,2, TRUE);
|
#ifndef HAVE_OPENGL
|
||||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gsDialog))), wTable, TRUE, FALSE, 0);
|
gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(coreCombo), 2);
|
||||||
|
gtk_grid_remove_row(wGrid, 4);
|
||||||
// 3D Core
|
|
||||||
gsKey = gtk_label_new("3D Core:");
|
|
||||||
gtk_label_set_yalign(GTK_LABEL(gsKey), 0.5);
|
|
||||||
gtk_table_attach(GTK_TABLE(wTable), gsKey, 0, 1, 0, 1,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 5, 0);
|
|
||||||
|
|
||||||
coreCombo = gtk_combo_box_text_new();
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 0, "Null");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 1, "SoftRasterizer");
|
|
||||||
#ifdef HAVE_OPENGL
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(coreCombo), 2, "OpenGL");
|
|
||||||
#endif
|
#endif
|
||||||
gtk_combo_box_set_active(GTK_COMBO_BOX(coreCombo), cur3DCore);
|
gtk_combo_box_set_active(coreCombo, cur3DCore);
|
||||||
gtk_table_attach(GTK_TABLE(wTable), coreCombo, 1, 2, 0, 1,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 5, 0);
|
|
||||||
|
|
||||||
|
|
||||||
// 3D Texture Upscaling
|
|
||||||
gsKey = gtk_label_new("3D Texture Upscaling:");
|
|
||||||
gtk_label_set_yalign(GTK_LABEL(gsKey), 0.5);
|
|
||||||
gtk_table_attach(GTK_TABLE(wTable), gsKey, 0, 1, 1, 2,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 5, 0);
|
|
||||||
|
|
||||||
wScale = gtk_combo_box_text_new();
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wScale), 0, "x1");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wScale), 1, "x2");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wScale), 2, "x4");
|
|
||||||
|
|
||||||
// The shift it work for scale up to 4. For scaling more than 4, a mapping function is required
|
// The shift it work for scale up to 4. For scaling more than 4, a mapping function is required
|
||||||
gtk_combo_box_set_active(GTK_COMBO_BOX(wScale), CommonSettings.GFX3D_Renderer_TextureScalingFactor >> 1);
|
gtk_combo_box_set_active(wScale, CommonSettings.GFX3D_Renderer_TextureScalingFactor >> 1);
|
||||||
gtk_table_attach(GTK_TABLE(wTable), wScale, 1, 2, 1, 2,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 5, 0);
|
|
||||||
|
|
||||||
|
|
||||||
// 3D Texture Deposterization
|
// 3D Texture Deposterization
|
||||||
wPosterize = gtk_check_button_new_with_label("3D Texture Deposterization");
|
gtk_toggle_button_set_active(wPosterize, CommonSettings.GFX3D_Renderer_TextureDeposterize);
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wPosterize), CommonSettings.GFX3D_Renderer_TextureDeposterize);
|
|
||||||
gtk_table_attach(GTK_TABLE(wTable), wPosterize, 0, 1, 2, 3,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 0, 0);
|
|
||||||
|
|
||||||
|
|
||||||
// 3D Texture Smoothing
|
// 3D Texture Smoothing
|
||||||
wSmoothing = gtk_check_button_new_with_label("3D Texture Smoothing");
|
gtk_toggle_button_set_active(wSmoothing, CommonSettings.GFX3D_Renderer_TextureSmoothing);
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wSmoothing), CommonSettings.GFX3D_Renderer_TextureSmoothing);
|
|
||||||
gtk_table_attach(GTK_TABLE(wTable), wSmoothing, 0, 1, 3, 4,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 0, 0);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
// OpenGL Multisample
|
// OpenGL Multisample
|
||||||
gsKey = gtk_label_new("Multisample Antialiasing (OpenGL):");
|
|
||||||
gtk_label_set_yalign(GTK_LABEL(gsKey), 0.5);
|
|
||||||
gtk_table_attach(GTK_TABLE(wTable), gsKey, 0, 1, 4, 5,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 5, 0);
|
|
||||||
|
|
||||||
wMultisample = gtk_combo_box_text_new();
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wMultisample), 0, "None");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wMultisample), 1, "2");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wMultisample), 2, "4");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wMultisample), 3, "8");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wMultisample), 4, "16");
|
|
||||||
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(wMultisample), 5, "32");
|
|
||||||
|
|
||||||
int currentMultisample = CommonSettings.GFX3D_Renderer_MultisampleSize;
|
int currentMultisample = CommonSettings.GFX3D_Renderer_MultisampleSize;
|
||||||
int currentActive = 0;
|
int currentActive = 0;
|
||||||
// find smallest option that is larger than current value, i.e. round up to power of 2
|
// find smallest option that is larger than current value, i.e. round up to power of 2
|
||||||
while (multisampleSizes[currentActive] < currentMultisample && currentActive < 5) { currentActive++; }
|
while (multisampleSizes[currentActive] < currentMultisample && currentActive < 5) { currentActive++; }
|
||||||
gtk_combo_box_set_active(GTK_COMBO_BOX(wMultisample), currentActive);
|
gtk_combo_box_set_active(wMultisample, currentActive);
|
||||||
gtk_table_attach(GTK_TABLE(wTable), wMultisample, 1, 2, 4, 5,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 5, 0);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// SoftRasterizer High Color Interpolation
|
// SoftRasterizer High Color Interpolation
|
||||||
wHCInterpolate = gtk_check_button_new_with_label("High Resolution Color Interpolation (SoftRasterizer)");
|
gtk_toggle_button_set_active(wHCInterpolate, CommonSettings.GFX3D_HighResolutionInterpolateColor);
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wHCInterpolate), CommonSettings.GFX3D_HighResolutionInterpolateColor);
|
|
||||||
gtk_table_attach(GTK_TABLE(wTable), wHCInterpolate, 1, 2, 3, 4,
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL),
|
|
||||||
static_cast<GtkAttachOptions>(GTK_EXPAND | GTK_FILL), 10, 0);
|
|
||||||
|
|
||||||
|
|
||||||
gtk_widget_show_all(gtk_dialog_get_content_area(GTK_DIALOG(gsDialog)));
|
gtk_widget_show_all(gtk_dialog_get_content_area(GTK_DIALOG(gsDialog)));
|
||||||
|
|
||||||
|
@ -2287,7 +2344,7 @@ static void GraphicsSettingsDialog() {
|
||||||
case GTK_RESPONSE_OK:
|
case GTK_RESPONSE_OK:
|
||||||
// Start: OK Response block
|
// Start: OK Response block
|
||||||
{
|
{
|
||||||
int sel3DCore = gtk_combo_box_get_active(GTK_COMBO_BOX(coreCombo));
|
int sel3DCore = gtk_combo_box_get_active(coreCombo);
|
||||||
|
|
||||||
// Change only if needed
|
// Change only if needed
|
||||||
if (sel3DCore != cur3DCore)
|
if (sel3DCore != cur3DCore)
|
||||||
|
@ -2323,7 +2380,7 @@ static void GraphicsSettingsDialog() {
|
||||||
|
|
||||||
size_t scale = 1;
|
size_t scale = 1;
|
||||||
|
|
||||||
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(wScale))){
|
switch (gtk_combo_box_get_active(wScale)){
|
||||||
case 1:
|
case 1:
|
||||||
scale = 2;
|
scale = 2;
|
||||||
break;
|
break;
|
||||||
|
@ -2333,12 +2390,12 @@ static void GraphicsSettingsDialog() {
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
CommonSettings.GFX3D_Renderer_TextureDeposterize = config.textureDeposterize = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wPosterize));
|
CommonSettings.GFX3D_Renderer_TextureDeposterize = config.textureDeposterize = gtk_toggle_button_get_active(wPosterize);
|
||||||
CommonSettings.GFX3D_Renderer_TextureSmoothing = config.textureSmoothing = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wSmoothing));
|
CommonSettings.GFX3D_Renderer_TextureSmoothing = config.textureSmoothing = gtk_toggle_button_get_active(wSmoothing);
|
||||||
CommonSettings.GFX3D_Renderer_TextureScalingFactor = config.textureUpscale = scale;
|
CommonSettings.GFX3D_Renderer_TextureScalingFactor = config.textureUpscale = scale;
|
||||||
CommonSettings.GFX3D_HighResolutionInterpolateColor = config.highColorInterpolation = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wHCInterpolate));
|
CommonSettings.GFX3D_HighResolutionInterpolateColor = config.highColorInterpolation = gtk_toggle_button_get_active(wHCInterpolate);
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
int selectedMultisample = gtk_combo_box_get_active(GTK_COMBO_BOX(wMultisample));
|
int selectedMultisample = gtk_combo_box_get_active(wMultisample);
|
||||||
config.multisamplingSize = multisampleSizes[selectedMultisample];
|
config.multisamplingSize = multisampleSizes[selectedMultisample];
|
||||||
config.multisampling = selectedMultisample != 0;
|
config.multisampling = selectedMultisample != 0;
|
||||||
CommonSettings.GFX3D_Renderer_MultisampleSize = multisampleSizes[selectedMultisample];
|
CommonSettings.GFX3D_Renderer_MultisampleSize = multisampleSizes[selectedMultisample];
|
||||||
|
|
Loading…
Reference in New Issue