GTK: Break display settings into tabs.

This commit is contained in:
Brandon Wright 2019-02-17 20:55:59 -06:00
parent 33db8a355b
commit 191b82f14d
4 changed files with 429 additions and 472 deletions

View File

@ -115,6 +115,7 @@ int Snes9xConfig::load_defaults ()
preferences_height = -1; preferences_height = -1;
shader_parameters_width = -1; shader_parameters_width = -1;
shader_parameters_height = -1; shader_parameters_height = -1;
current_display_tab = 0;
sram_directory.clear (); sram_directory.clear ();
export_directory.clear (); export_directory.clear ();
savestate_directory.clear (); savestate_directory.clear ();
@ -306,6 +307,7 @@ int Snes9xConfig::save_config_file ()
cf.SetInt (z"PreferencesHeight", preferences_height); cf.SetInt (z"PreferencesHeight", preferences_height);
cf.SetInt (z"ShaderParametersWidth", shader_parameters_width); cf.SetInt (z"ShaderParametersWidth", shader_parameters_width);
cf.SetInt (z"ShaderParametersHeight", shader_parameters_height); cf.SetInt (z"ShaderParametersHeight", shader_parameters_height);
cf.SetInt (z"CurrentDisplayTab", current_display_tab);
outbool (cf, z"UIVisible", ui_visible); outbool (cf, z"UIVisible", ui_visible);
outbool (cf, z"StatusBarVisible", statusbar_visible); outbool (cf, z"StatusBarVisible", statusbar_visible);
if (default_esc_behavior != ESC_TOGGLE_MENUBAR) if (default_esc_behavior != ESC_TOGGLE_MENUBAR)
@ -535,6 +537,7 @@ int Snes9xConfig::load_config_file ()
inint (z"PreferencesHeight", preferences_height); inint (z"PreferencesHeight", preferences_height);
inint (z"ShaderParametersWidth", shader_parameters_width); inint (z"ShaderParametersWidth", shader_parameters_width);
inint (z"ShaderParametersHeight", shader_parameters_height); inint (z"ShaderParametersHeight", shader_parameters_height);
inint (z"CurrentDisplayTab", current_display_tab);
inbool (z"UIVisible", ui_visible); inbool (z"UIVisible", ui_visible);
inbool (z"StatusBarVisible", statusbar_visible); inbool (z"StatusBarVisible", statusbar_visible);
inbool (z"Fullscreen", fullscreen); inbool (z"Fullscreen", fullscreen);

View File

@ -127,6 +127,7 @@ class Snes9xConfig
int window_width, window_height; int window_width, window_height;
int preferences_width, preferences_height; int preferences_width, preferences_height;
int shader_parameters_width, shader_parameters_height; int shader_parameters_width, shader_parameters_height;
int current_display_tab;
bool pause_emulation_on_switch; bool pause_emulation_on_switch;
int num_threads; int num_threads;
bool screensaver_needs_reset; bool screensaver_needs_reset;

View File

@ -336,20 +336,20 @@ event_scale_method_changed (GtkComboBox *widget, gpointer user_data)
if (gtk_combo_box_get_active (combo) == FILTER_NTSC) if (gtk_combo_box_get_active (combo) == FILTER_NTSC)
{ {
gtk_widget_show (window->get_widget ("ntsc_frame")); gtk_widget_show (window->get_widget ("ntsc_alignment"));
} }
else else
{ {
gtk_widget_hide (window->get_widget ("ntsc_frame")); gtk_widget_hide (window->get_widget ("ntsc_alignment"));
} }
if (gtk_combo_box_get_active (combo) == FILTER_SCANLINES) if (gtk_combo_box_get_active (combo) == FILTER_SCANLINES)
{ {
gtk_widget_show (window->get_widget ("scanline_filter_frame")); gtk_widget_show (window->get_widget ("scanline_alignment"));
} }
else else
{ {
gtk_widget_hide (window->get_widget ("scanline_filter_frame")); gtk_widget_hide (window->get_widget ("scanline_alignment"));
} }
} }
@ -660,20 +660,20 @@ Snes9xPreferences::move_settings_to_dialog ()
if (config->scale_method == FILTER_NTSC) if (config->scale_method == FILTER_NTSC)
{ {
gtk_widget_show (get_widget ("ntsc_frame")); gtk_widget_show (get_widget ("ntsc_alignment"));
} }
else else
{ {
gtk_widget_hide (get_widget ("ntsc_frame")); gtk_widget_hide (get_widget ("ntsc_alignment"));
} }
if (config->scale_method == FILTER_SCANLINES) if (config->scale_method == FILTER_SCANLINES)
{ {
gtk_widget_show (get_widget ("scanline_filter_frame")); gtk_widget_show (get_widget ("scanline_alignment"));
} }
else else
{ {
gtk_widget_hide (get_widget ("scanline_filter_frame")); gtk_widget_hide (get_widget ("scanline_alignment"));
} }
load_ntsc_settings (); load_ntsc_settings ();
@ -1087,6 +1087,8 @@ Snes9xPreferences::show ()
if (config->preferences_width > 0 && config->preferences_height > 0) if (config->preferences_width > 0 && config->preferences_height > 0)
resize (config->preferences_width, config->preferences_height); resize (config->preferences_width, config->preferences_height);
gtk_notebook_set_current_page(GTK_NOTEBOOK(get_widget("display_notebook")), config->current_display_tab);
for (close_dialog = false; !close_dialog; ) for (close_dialog = false; !close_dialog; )
{ {
gtk_widget_show (window); gtk_widget_show (window);
@ -1094,6 +1096,7 @@ Snes9xPreferences::show ()
config->preferences_width = get_width (); config->preferences_width = get_width ();
config->preferences_height = get_height (); config->preferences_height = get_height ();
config->current_display_tab = gtk_notebook_get_current_page(GTK_NOTEBOOK(get_widget("display_notebook")));
switch (result) switch (result)
{ {

View File

@ -2701,162 +2701,31 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<signal name="switch-page" handler="change_current_page" swapped="no"/> <signal name="switch-page" handler="change_current_page" swapped="no"/>
<child> <child>
<object class="GtkScrolledWindow" id="scrolledwindow1"> <object class="GtkNotebook" id="display_notebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<child> <child>
<object class="GtkViewport" id="display_viewport"> <object class="GtkAlignment" id="alignment15">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="top_padding">12</property>
<property name="resize_mode">queue</property> <property name="bottom_padding">5</property>
<property name="shadow_type">none</property> <property name="left_padding">12</property>
<property name="right_padding">12</property>
<child> <child>
<object class="GtkVBox" id="vbox2"> <object class="GtkVBox" id="vbox3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkFrame" id="frame11"> <object class="GtkCheckButton" id="full_screen_on_open">
<property name="label" translatable="yes">Use fullscreen on ROM open</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">True</property>
<property name="label_xalign">0</property> <property name="receives_default">False</property>
<property name="shadow_type">none</property> <property name="tooltip_text" translatable="yes">Go to fullscreen mode immediately after opening a ROM</property>
<child> <property name="use_underline">True</property>
<object class="GtkAlignment" id="alignment15"> <property name="draw_indicator">True</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="top_padding">5</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<child>
<object class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="full_screen_on_open">
<property name="label" translatable="yes">Use fullscreen on ROM open</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Go to fullscreen mode immediately after opening a ROM</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="show_frame_rate">
<property name="label" translatable="yes">Show frame rate</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="show_pressed_keys">
<property name="label" translatable="yes">Show pressed keys</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="overscan">
<property name="label" translatable="yes">Use overscanned height</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Use SNES extended height. Will probably cause letterboxing</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="resolution_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkCheckButton" id="change_display_resolution">
<property name="label" translatable="yes">Change fullscreen resolution:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Changes the screen resolution when running Snes9x in fullscreen mode</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="resolution_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststore14</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext14"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;Basic Settings&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -2865,18 +2734,139 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkFrame" id="frame12"> <object class="GtkCheckButton" id="show_frame_rate">
<property name="label" translatable="yes">Show frame rate</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="show_pressed_keys">
<property name="label" translatable="yes">Show pressed keys</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="overscan">
<property name="label" translatable="yes">Use overscanned height</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Use SNES extended height. Will probably cause letterboxing</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="resolution_box">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label_xalign">0</property> <property name="spacing">12</property>
<property name="shadow_type">none</property> <child>
<object class="GtkCheckButton" id="change_display_resolution">
<property name="label" translatable="yes">Change fullscreen resolution:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Changes the screen resolution when running Snes9x in fullscreen mode</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="resolution_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststore14</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext14"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel" id="basiclabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Basic Settings</property>
</object>
<packing>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scalingscrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkViewport" id="scalingscrolledwindowviewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkVBox" id="scalingvbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">0</property>
<child> <child>
<object class="GtkAlignment" id="alignment3"> <object class="GtkAlignment" id="alignment3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="top_padding">5</property> <property name="top_padding">12</property>
<property name="bottom_padding">5</property> <property name="bottom_padding">5</property>
<property name="left_padding">12</property> <property name="left_padding">12</property>
<property name="right_padding">12</property>
<child> <child>
<object class="GtkVBox" id="vbox5"> <object class="GtkVBox" id="vbox5">
<property name="visible">True</property> <property name="visible">True</property>
@ -2936,7 +2926,7 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -3104,33 +3094,17 @@
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child type="label">
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;Image Adjustments&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="ntsc_frame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child> <child>
<object class="GtkAlignment" id="alignment8"> <object class="GtkAlignment" id="ntsc_alignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="top_padding">5</property> <property name="top_padding">0</property>
<property name="bottom_padding">5</property> <property name="bottom_padding">5</property>
<property name="left_padding">12</property> <property name="left_padding">12</property>
<child> <child>
@ -3657,33 +3631,17 @@
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child type="label">
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;NTSC Filter&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="scanline_filter_frame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child> <child>
<object class="GtkAlignment" id="alignment19"> <object class="GtkAlignment" id="scanline_alignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="top_padding">5</property> <property name="top_padding">0</property>
<property name="bottom_padding">5</property> <property name="bottom_padding">5</property>
<property name="left_padding">12</property> <property name="left_padding">12</property>
<child> <child>
@ -3725,54 +3683,179 @@
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
<child type="label"> </object>
<object class="GtkLabel" id="label146"> </child>
<property name="visible">True</property> </object>
<property name="can_focus">False</property> </child>
<property name="label" translatable="yes">&lt;b&gt;Scanline Filter&lt;/b&gt;</property> </object>
<property name="use_markup">True</property> </child>
</object> <child type="tab">
<object class="GtkLabel" id="scalinglabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Scaling</property>
</object>
<packing>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="top_padding">12</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">12</property>
<child>
<object class="GtkVBox" id="vbox7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">5</property>
<child>
<object class="GtkComboBox" id="hw_accel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="model">liststore9</property>
<signal name="changed" handler="hw_accel_changed" swapped="no"/>
<child>
<object class="GtkCellRendererText" id="cellrenderertext9"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkFrame" id="hwaccel_frame"> <object class="GtkCheckButton" id="bilinear_filter">
<property name="label" translatable="yes">Bilinear-filter output</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="opengl_frame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label_xalign">0</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="shadow_type">none</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkAlignment" id="alignment2"> <object class="GtkCheckButton" id="sync_to_vblank">
<property name="label" translatable="yes">Sync to vertical blank</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Sync the image to the vertical retrace to stop tearing</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="sync_every_frame">
<property name="label" translatable="yes">Reduce input lag with glFinish</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Sync the program with the video output after every displayed frame to reduce input latency</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="use_fences">
<property name="label" translatable="yes">Reduce input lag with glFenceSync</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Sync the program with the video output after every displayed frame to reduce input latency, but allow GUI events to occur in the meantime</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="npot_textures">
<property name="label" translatable="yes">Allow non-power-of-two textures</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Prevents edge artifacts, but can slow performance</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="use_pbos">
<property name="label" translatable="yes">Use pixel-buffer objects</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="tooltip_text" translatable="yes">Can be faster or slower depending on drivers</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="top_padding">5</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="bottom_padding">5</property> <property name="left_padding">10</property>
<property name="left_padding">12</property>
<child> <child>
<object class="GtkVBox" id="vbox7"> <object class="GtkHBox" id="hbox1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">5</property> <property name="tooltip_text" translatable="yes">Different formats can yield highly different performance</property>
<property name="spacing">10</property>
<child> <child>
<object class="GtkComboBox" id="hw_accel"> <object class="GtkLabel" id="label116">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="model">liststore9</property> <property name="label" translatable="yes">Pixel-buffer format:</property>
<signal name="changed" handler="hw_accel_changed" swapped="no"/>
<child>
<object class="GtkCellRendererText" id="cellrenderertext9"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -3781,13 +3864,17 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="bilinear_filter"> <object class="GtkComboBox" id="pixel_format">
<property name="label" translatable="yes">Bilinear-filter output</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<property name="receives_default">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="use_underline">True</property> <property name="model">liststore8</property>
<property name="draw_indicator">True</property> <child>
<object class="GtkCellRendererText" id="cellrenderertext8"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -3795,257 +3882,120 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkVBox" id="opengl_frame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="sync_to_vblank">
<property name="label" translatable="yes">Sync to vertical blank</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Sync the image to the vertical retrace to stop tearing</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="sync_every_frame">
<property name="label" translatable="yes">Reduce input lag with glFinish</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Sync the program with the video output after every displayed frame to reduce input latency</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="use_fences">
<property name="label" translatable="yes">Reduce input lag with glFenceSync</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Sync the program with the video output after every displayed frame to reduce input latency, but allow GUI events to occur in the meantime</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="npot_textures">
<property name="label" translatable="yes">Allow non-power-of-two textures</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Prevents edge artifacts, but can slow performance</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="use_pbos">
<property name="label" translatable="yes">Use pixel-buffer objects</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="tooltip_text" translatable="yes">Can be faster or slower depending on drivers</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="left_padding">10</property>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="tooltip_text" translatable="yes">Different formats can yield highly different performance</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="label116">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Pixel-buffer format:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="pixel_format">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="model">liststore8</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext8"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="use_shaders">
<property name="label" translatable="yes">Shader:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="fragment_shader">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">•</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
<property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="fragment_shader_button">
<property name="label" translatable="yes">Browse...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="shader_select" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="xv_frame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="force_inverted_byte_order">
<property name="label" translatable="yes">Force an inverted byte-ordering</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Forces a swapped byte-ordering for cases where the system's endian is used instead of the video card</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child> </child>
<child type="label"> <child>
<object class="GtkLabel" id="label114"> <object class="GtkHBox" id="hbox4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;Hardware Acceleration&lt;/b&gt;</property> <property name="spacing">5</property>
<property name="use_markup">True</property> <child>
<object class="GtkCheckButton" id="use_shaders">
<property name="label" translatable="yes">Shader:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="fragment_shader">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">•</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
<property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="fragment_shader_button">
<property name="label" translatable="yes">Browse...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="shader_select" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="xv_frame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="force_inverted_byte_order">
<property name="label" translatable="yes">Force an inverted byte-ordering</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Forces a swapped byte-ordering for cases where the system's endian is used instead of the video card</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
<child type="tab">
<object class="GtkLabel" id="hwaccelerationlabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Hardware Acceleration</property>
</object>
<packing>
<property name="tab_fill">False</property>
</packing>
</child>
</object> </object>
</child> </child>
<child type="tab"> <child type="tab">