public static void Main(string[] sargs) { Thread.CurrentThread.CurrentUICulture = Culture; CommandArgs args = new CommandArgs (sargs); if (args.styles) Application.EnableVisualStyles (); // Damn .NET text rendering Application.SetCompatibleTextRenderingDefault(false); Directory.SetCurrentDirectory (System.IO.Path.GetDirectoryName (Application.ExecutablePath)); Localizations = new LocalizationInterface (); try { string [] langfiles = Directory.GetFiles ("MGE3", "*.lng"); foreach (string langfile in langfiles) { Localizations.Add (langfile); } } catch { }; Localizations.Add(new LocalizationInterface.Localization((Form)null)); // Adds truncated variant of default localization. String language = DefaultLocalization.Language; bool autoLanguage = true; try { INIFile MGEini = new INIFile (iniFileName, new INIFile.INIVariableDef [] { INIFile.iniDefEmpty, MainForm.iniLanguage, MainForm.iniAutoLang }); language = MGEini.getKeyString ("Language"); autoLanguage = (MGEini.getKeyValue ("AutoLang") == 1); } catch { } Localizations.Current = language; Localizations.ApplyStrings("", strings); if (args.mutex && !MutexCheck.PerformCheck ()) { MessageBox.Show (strings ["MGEguiRunning"], strings ["Error"]); return; } Process [] morrowind = Process.GetProcessesByName ("Morrowind"); foreach (Process p in morrowind) { MessageBox.Show (strings ["MWRunning"], strings ["Error"]); return; } if (!File.Exists ("./morrowind.exe") || !File.Exists ("./morrowind.ini") || !Directory.Exists ("data files")) { MessageBox.Show (strings ["NotMWDir"], strings ["Error"]); return; } if (!Directory.Exists ("MGE3") || !File.Exists ("./MGE3/MGEfuncs.dll") || !File.Exists ("./d3d8.dll") || !File.Exists ("./dinput8.dll")) { MessageBox.Show (strings ["MGEMissing"], strings ["Error"]); return; } //Morrowind version info try { FileVersionInfo MorrowVersion = FileVersionInfo.GetVersionInfo ("Morrowind.exe"); if (MorrowVersion.ProductPrivatePart != 722 && MorrowVersion.ProductPrivatePart != 1029 && MorrowVersion.ProductPrivatePart != 1875 && MorrowVersion.ProductPrivatePart != 1820) { MessageBox.Show (strings ["MWIncompat"], strings ["Error"]); return; } } catch { MessageBox.Show (strings ["MWCorrupt"], strings ["Error"]); return; } //Check for dsound.dll if (File.Exists ("dsound.dll") && new System.IO.FileInfo ("dsound.dll").Length == 16384) { try { File.Delete ("dsound.dll"); } catch { MessageBox.Show (strings ["DSound"], strings ["Error"]); return; } } runDir = System.Windows.Forms.Application.StartupPath; //check if MW registry keys exist RegistryKey key = Statics.reg_key_bethesda.OpenSubKey(Statics.reg_morrowind); if (key != null) { key.Close(); key = null; } else { MessageBox.Show (strings ["MWRegistry"], strings ["Error"]); return; } //mendres: Check if MGE needs administrator privileges. try { key = Statics.reg_key_bethesda.OpenSubKey(Statics.reg_morrowind, true); } catch (System.Security.SecurityException) { MessageBox.Show(strings["MgeAccess"], strings["Error"]); return; } if (key != null) { key.Close(); key = null; } //Create the data files directories MGE uses if (!Directory.Exists (@"data files\shaders")) { Directory.CreateDirectory (@"data files\shaders"); } if (!Directory.Exists (@"data files\MGE meshes")) { Directory.CreateDirectory (@"data files\MGE meshes"); } if (!Directory.Exists (@"data files\Textures\MGE")) { Directory.CreateDirectory (@"data files\Textures\MGE"); } if (!Directory.Exists (@"data files\MGE videos")) { Directory.CreateDirectory (@"data files\MGE videos"); } if (!Directory.Exists (@"data files\shaders\default")) { Directory.CreateDirectory (@"data files\shaders\default"); } if (!Directory.Exists (@"data files\shaders\water")) { Directory.CreateDirectory (@"data files\shaders\water"); } //Create some structures for (int i = 0; i < MACROS; i++) { Macros [i] = new Macro (); } for (int i = 0; i < TRIGGERS; i++) { Triggers [i] = new Trigger (); } DXMain.GetDeviceCaps (); bool GUIchecker = !lightversion; while (GUIchecker != lightversion) { GUIchecker = lightversion; if (lightversion) { mfl = new MainFormLight(autoLanguage); Application.Run(mfl); } else { mf = new MainForm (autoLanguage); Application.Run (mf); } } }
public static void Main(string[] sargs) { Thread.CurrentThread.CurrentUICulture = Culture; CommandArgs args = new CommandArgs (sargs); if (args.styles) Application.EnableVisualStyles (); // Damn .NET text rendering Application.SetCompatibleTextRenderingDefault(false); Directory.SetCurrentDirectory (System.IO.Path.GetDirectoryName (Application.ExecutablePath)); Localizations = new LocalizationInterface (); try { string [] langfiles = Directory.GetFiles ("MGE3", "*.lng"); foreach (string langfile in langfiles) { Localizations.Add (langfile); } } catch { }; string language = "English (default)"; bool autoLanguage = true; try { INIFile MGEini = new INIFile (iniFileName, new INIFile.INIVariableDef [] { INIFile.iniDefEmpty, MainForm.iniLanguage, MainForm.iniAutoLang }); language = MGEini.getKeyString ("Language"); autoLanguage = (MGEini.getKeyValue ("AutoLang") == 1); } catch { } Localizations.Current = language; Localizations.ApplyStrings("", strings); if (args.mutex && !MutexCheck.PerformCheck ()) { MessageBox.Show (strings ["MGEguiRunning"], strings ["Error"]); return; } Process [] morrowind = Process.GetProcessesByName ("Morrowind"); foreach (Process p in morrowind) { MessageBox.Show (strings ["MWRunning"], strings ["Error"]); return; } if (!File.Exists ("./morrowind.exe") || !File.Exists ("./morrowind.ini") || !Directory.Exists ("data files")) { MessageBox.Show (strings ["NotMWDir"], strings ["Error"]); return; } if (!Directory.Exists ("MGE3") || !File.Exists ("./MGE3/MGEfuncs.dll") || !File.Exists ("./d3d8.dll") || !File.Exists ("./dinput8.dll")) { MessageBox.Show (strings ["MGEMissing"], strings ["Error"]); return; } //Morrowind version info try { FileVersionInfo MorrowVersion = FileVersionInfo.GetVersionInfo ("Morrowind.exe"); if (MorrowVersion.FileMajorPart != 1 || MorrowVersion.FileMinorPart < 6) { MessageBox.Show (strings ["MWIncompat"], strings ["Error"]); return; } } catch { MessageBox.Show (strings ["MWCorrupt"], strings ["Error"]); return; } runDir = System.Windows.Forms.Application.StartupPath; //check if MW registry keys exist if (Registry.LocalMachine.OpenSubKey (reg_mw) == null) { MessageBox.Show (strings ["MWRegistry"], strings ["Error"]); return; } //Create some structures for (int i = 0; i < MACROS; i++) { Macros [i] = new Macro (); } for (int i = 0; i < TRIGGERS; i++) { Triggers [i] = new Trigger (); } DXMain.GetDeviceCaps (); mf = new MainForm (autoLanguage); Application.Run (mf); }
public MainForm(LocalizationInterface.Localization Language, bool AutoLang) { InitializeComponent (); //Attach dud context menus to combo boxes cmbAntiAlias.ContextMenu = DudMenu; cmbAnisoLevel.ContextMenu = DudMenu; cmbFogMode.ContextMenu = DudMenu; cmbMipFilter.ContextMenu = DudMenu; cmbScaleFilter.ContextMenu = DudMenu; cmbVWait.ContextMenu = DudMenu; cmbZBuffer.ContextMenu = DudMenu; cmbSShotFormat.ContextMenu = DudMenu; cmbTipReadSpd.ContextMenu = DudMenu; cmbMsgsLocale.ContextMenu = DudMenu; cmbUILanguage.ContextMenu = DudMenu; // Save default tabpage tooltips foreach (TabPage page in tabControl.TabPages) tabpage_tooltips.Add (page, page.ToolTipText); //Set initial directories this.OpenFileDialog.InitialDirectory = this.SaveFileDialog.InitialDirectory = Statics.runDir + "\\MGE3"; this.OpenTangentMesh.InitialDirectory = Statics.runDir + "\\Data files\\MGE meshes"; //Title Text = "Morrowind Graphics Extender (" + Statics.versionString + ")"; // Set default tooltip text reading speed try { Statics.tipReadSpeed = (int)(1000 / double.Parse (cmbTipReadSpd.Text)); } catch { Statics.tipReadSpeed = (int)(1000 / double.Parse (cmbTipReadSpd.Text.Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator))); } // set a handler for each control which sets tooltip popup timeout dependent on tooltip text length Control [] controls = Statics.GetChildControls (this); foreach (Control control in controls) { if (!(control is ComboBox || control is TextBox || control is NumericUpDown) || control.Name == "tbSShotDir") default_text.Add (control, control.Text); control.MouseHover += new EventHandler (TooltipTimeoutHandler); } //Save control text clearedSSDir = tbSShotDir.Text; //Get available UI localizations and set UI language cmbUILanguage.Items.AddRange (Statics.Localizations.Languages); if (AutoLang) cbUILangAuto.Checked = true; else if (Language != null) cmbUILanguage.SelectedIndex = cmbUILanguage.FindStringExact (Language.Language); SetTooltips (); //Store default locations gbMainSettingsLocation = gbMainSettings.Location; gbMainUILocation = gbMainUI.Location; gbMainUILocation.Y -= this.Size.Height; //Load settings LoadSettings (); RegistryKey key = null; try { key = Statics.reg_key_bethesda.OpenSubKey(Statics.reg_morrowind); uint width, height; try { width = (uint)(int)key.GetValue ("Screen Width"); height = (uint)(int)key.GetValue ("Screen Height"); } catch { MessageBox.Show (strings ["RegScrRes"].text, Statics.strings ["Error"].text); width = 640; height = 480; } tbResolution.Text = width.ToString () + " x " + height.ToString (); CalcAspectRatio ((int)width, (int)height); try { cbWindowed.Checked = !Convert.ToBoolean (((byte [])key.GetValue ("Fullscreen")) [0]); } catch { MessageBox.Show (strings ["RegWinMode"].text, Statics.strings ["Error"].text); cbWindowed.Checked = false; } key.Close (); } catch { if (key != null) { key.Close(); key = null; } } }