#include #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; }