diff options
Diffstat (limited to 'abs/core/mythinstall/xorgsettings.h')
-rwxr-xr-x | abs/core/mythinstall/xorgsettings.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/abs/core/mythinstall/xorgsettings.h b/abs/core/mythinstall/xorgsettings.h new file mode 100755 index 0000000..46c4952 --- /dev/null +++ b/abs/core/mythinstall/xorgsettings.h @@ -0,0 +1,178 @@ +#include <settings.h> +#include "mythdialogs.h" +#include "libmyth/mythdialogs.h" +#include "libmyth/mythwidgets.h" +#include "installsettings.h" + +class AdvancedXNvidiaConnections: public TriggeredConfigurationGroup { +Q_OBJECT +public: + AdvancedXNvidiaConnections(); + HostComboBox *HostXNvidiaConnection; + HostComboBox *HostXnVidiaTVformat; + HostComboBox *HostXnVidiaTVstandard; + +public slots: + void AdvancedXNvidiaConnectionsGatherSettings(); +signals: + void nVidia_sig(void); +}; + + +class AdvancedXNvidia_modelines: public TriggeredConfigurationGroup { + Q_OBJECT +public: + AdvancedXNvidia_modelines(); + HostComboBox *HostXNvidiaModelineCatagory; + HostComboBox *HostXNvidiaadvancedresVESA; + HostComboBox *HostXNvidiaadvancedresATSC; + HostComboBox *HostXNvidiaadvancedresDVD; + HostComboBox *HostXNvidiaadvancedresNTSC; + HostComboBox *HostXNvidiaadvancedresCustom; + HostCheckBox *HostXnVidia1080p; + HostCheckBox *HostXnVidia1080i; + HostCheckBox *HostXnVidia720p; + HostCheckBox *HostXnVidia480p; + void Nvidia_fillselection(QString); +public slots: + void AdvancedXNvidia_modelines_GatherSettings(void); +}; + + +//------------------------------------------------- + +class AdvancedXcardtype: public TriggeredConfigurationGroup { +Q_OBJECT +public: + AdvancedXcardtype(); + HostComboBox *HostXcardtype; + +public slots: + void AdvancedXcardgatherSettings(); +signals: + void go(void ); + void goATI(void); + void gonVidia(void); +}; + + +class AdvancedXSettings: public TriggeredConfigurationGroup { +Q_OBJECT +public: + AdvancedXSettings(); + HostCheckBox *HostXIgnoreConfig; +protected slots: + void ADJUSTEDID(void); +}; + + +class AdvancedXGeneric_modelines: public TriggeredConfigurationGroup { + Q_OBJECT +public: + AdvancedXGeneric_modelines(); + HostComboBox *HostXModelineCatagory; + HostComboBox *HostXadvancedresVESA; + HostComboBox *HostXadvancedresATSC; + HostComboBox *HostXadvancedresDVD; + HostComboBox *HostXadvancedresNTSC; + HostComboBox *HostXadvancedresCustom; + void generic_fillselection(QString); +public slots: + void AdvancedXGeneric_modelines_GatherSettings(void); +}; + + +class EDIDOptions : public ConfigurationWizard +{ +public: + EDIDOptions(); +}; + + + + + + + + +void testXconfiguration(); +void ReadDDCvalues(); +static HostComboBox *HostXres() +//Used in the simple config +{ + HostComboBox *gc = new HostComboBox("HostXres"); + gc->setLabel(QObject::tr("Initial resolution")); + const int num_defaults = 2; + char *defaults[num_defaults]={"800x600","1280x720"}; + int defaults_added[num_defaults]={0,0}; + int found_modes_in_xorg_log = FALSE; + + gc->addSelection("Auto"); + + { + FILE *modelines; + const char*mode_extract_command = + "sed -n 's/[[:space:]]\\+/ /g;" // compress whitespace + "s/[\\) ]: /#/g;" // Insert # as a field delimiter + "/Modes in ModePool/,/ModePool/p'" // get the Modelool lines + " /var/log/Xorg.0.log |" // from the Xorg log + "cut -d# -f2-3 | " // select the mode and description fields + "sed '/^\\\"/!d;" // Only selest modeline lines. + "/DoubleScan/d;" // Remove doublescan modelines. + "/nvidia-auto-select/d;" // Remove auto modeline. + "s/ x /x/g;" + "s/ @ /@/g;" + "s/From: //g;" + "s/ Format [0-9]*) (/, /g;" + "s/ Format [0-9]*//g;" + "s/ Server//g'"; //reformat. + cout << mode_extract_command << endl; + modelines = popen (mode_extract_command, "r"); + + char previous_mode[200]={0}; + + if (modelines) + { + char line_in[200]; + while (fgets (line_in, sizeof (line_in), modelines)) + { + char *separator; + + if (strchr (line_in, '\n')) + strchr (line_in, '\n')[0]=0; + + separator = strchr (line_in, '#'); + + if (separator) + { + separator[0]=0; + separator++; + + // Skip this mode if the description is identical to the previous. + if (strcmp (previous_mode, separator) == 0) + continue; + + strncpy (previous_mode, separator, sizeof(previous_mode)); + gc->addSelection(separator, line_in); + found_modes_in_xorg_log = TRUE; + + for (int def = 0; def < num_defaults; def++) + if (strncmp (&line_in[1], defaults[def], strlen (defaults[def]))==0) + defaults_added[def]=1; + } + } + pclose (modelines); + } + } + + for (int def = 0; def < num_defaults; def++) + if (!defaults_added[def]) + gc->addSelection(defaults[def], defaults[def]); + + if (found_modes_in_xorg_log) + gc->setHelpText(QObject::tr("Choose a resolution to match your display and a refresh rate to match the content you will be recording - 60 Hz for NTSC (e.g. US) 50 Hz for PAL (e.g. UK, Aust, NZ).")); + else + gc->setHelpText(QObject::tr("Choose the resolution to use when the system reboots.")); + + return gc; +} |