@@ -264,9 +264,9 @@ private void NewButton_Click(object sender, RoutedEventArgs e)
264264 SMDirectories = new List < string > ( )
265265 } ;
266266 Program . Configs . Add ( cfg ) ;
267- ConfigListBox . Items . Add ( new ListBoxItem
268- {
269- Content = Translate ( "NewConfig" )
267+ ConfigListBox . Items . Add ( new ListBoxItem
268+ {
269+ Content = Translate ( "NewConfig" )
270270 } ) ;
271271 }
272272
@@ -621,7 +621,7 @@ private async void RCONTestConnectionButton_Click(object sender, RoutedEventArgs
621621 errorMsg = ex . Message ;
622622 }
623623
624- End :
624+ End :
625625
626626 if ( ( bool ) dialog ? . IsCanceled )
627627 {
@@ -650,93 +650,96 @@ private void C_RConCmds_TextChanged(object sender, RoutedEventArgs e)
650650
651651 private async void MetroWindow_Closing ( object sender , CancelEventArgs e )
652652 {
653- if ( NeedsSMDefInvalidation )
653+ await Dispatcher . InvokeAsync ( async ( ) =>
654654 {
655- foreach ( var config in Program . Configs )
655+ if ( NeedsSMDefInvalidation )
656656 {
657- config . InvalidateSMDef ( ) ;
657+ foreach ( var config in Program . Configs )
658+ {
659+ config . InvalidateSMDef ( ) ;
660+ }
658661 }
659- }
660662
661- var configsList = new List < string > ( ) ;
662- foreach ( ListBoxItem item in ConfigListBox . Items )
663- {
664- configsList . Add ( item . Content . ToString ( ) ) ;
665- }
663+ var configsList = new List < string > ( ) ;
664+ foreach ( ListBoxItem item in ConfigListBox . Items )
665+ {
666+ configsList . Add ( item . Content . ToString ( ) ) ;
667+ }
666668
667- // Check for empty named configs
668- if ( configsList . Any ( x => string . IsNullOrEmpty ( x ) ) )
669- {
670- e . Cancel = true ;
671- await this . ShowMessageAsync ( Translate ( "ErrorSavingConfigs" ) ,
672- Translate ( "EmptyConfigNames" ) , MessageDialogStyle . Affirmative ,
673- Program . MainWindow . MetroDialogOptions ) ;
674- return ;
675- }
669+ // Check for empty named configs
670+ if ( configsList . Any ( x => string . IsNullOrEmpty ( x ) ) )
671+ {
672+ e . Cancel = true ;
673+ await this . ShowMessageAsync ( Translate ( "ErrorSavingConfigs" ) ,
674+ Translate ( "EmptyConfigNames" ) , MessageDialogStyle . Affirmative ,
675+ Program . MainWindow . MetroDialogOptions ) ;
676+ return ;
677+ }
676678
677- // Check for duplicate names in the config list
678- if ( configsList . Count != configsList . Distinct ( ) . Count ( ) )
679- {
680- e . Cancel = true ;
681- await this . ShowMessageAsync ( Translate ( "ErrorSavingConfigs" ) ,
682- Translate ( "DuplicateConfigNames" ) , MessageDialogStyle . Affirmative ,
683- Program . MainWindow . MetroDialogOptions ) ;
684- return ;
685- }
679+ // Check for duplicate names in the config list
680+ if ( configsList . Count != configsList . Distinct ( ) . Count ( ) )
681+ {
682+ e . Cancel = true ;
683+ await this . ShowMessageAsync ( Translate ( "ErrorSavingConfigs" ) ,
684+ Translate ( "DuplicateConfigNames" ) , MessageDialogStyle . Affirmative ,
685+ Program . MainWindow . MetroDialogOptions ) ;
686+ return ;
687+ }
686688
687- Program . MainWindow . FillConfigMenu ( ) ;
688- await Program . MainWindow . ChangeConfig ( Program . SelectedConfig ) ;
689- var outString = new StringBuilder ( ) ;
690- var settings = new XmlWriterSettings
691- {
692- Indent = true ,
693- IndentChars = "\t " ,
694- NewLineOnAttributes = false ,
695- OmitXmlDeclaration = true
696- } ;
697- using ( var writer = XmlWriter . Create ( outString , settings ) )
698- {
699- writer . WriteStartElement ( "Configurations" ) ;
700- foreach ( var c in Program . Configs )
689+ Program . MainWindow . FillConfigMenu ( ) ;
690+ await Program . MainWindow . ChangeConfig ( Program . SelectedConfig ) ;
691+ var outString = new StringBuilder ( ) ;
692+ var settings = new XmlWriterSettings
693+ {
694+ Indent = true ,
695+ IndentChars = "\t " ,
696+ NewLineOnAttributes = false ,
697+ OmitXmlDeclaration = true
698+ } ;
699+ using ( var writer = XmlWriter . Create ( outString , settings ) )
701700 {
702- writer . WriteStartElement ( "Config" ) ;
703- writer . WriteAttributeString ( "Name" , c . Name ) ;
704- var SMDirOut = new StringBuilder ( ) ;
705- foreach ( var dir in c . SMDirectories )
701+ writer . WriteStartElement ( "Configurations" ) ;
702+ foreach ( var c in Program . Configs )
706703 {
707- SMDirOut . Append ( dir . Trim ( ) + ";" ) ;
704+ writer . WriteStartElement ( "Config" ) ;
705+ writer . WriteAttributeString ( "Name" , c . Name ) ;
706+ var SMDirOut = new StringBuilder ( ) ;
707+ foreach ( var dir in c . SMDirectories )
708+ {
709+ SMDirOut . Append ( dir . Trim ( ) + ";" ) ;
710+ }
711+
712+ writer . WriteAttributeString ( "SMDirectory" , SMDirOut . ToString ( ) ) ;
713+ writer . WriteAttributeString ( "Standard" , c . Standard ? "1" : "0" ) ;
714+ writer . WriteAttributeString ( "CopyDirectory" , c . CopyDirectory ) ;
715+ writer . WriteAttributeString ( "AutoCopy" , c . AutoCopy ? "1" : "0" ) ;
716+ writer . WriteAttributeString ( "AutoUpload" , c . AutoUpload ? "1" : "0" ) ;
717+ writer . WriteAttributeString ( "AutoRCON" , c . AutoRCON ? "1" : "0" ) ;
718+ writer . WriteAttributeString ( "ServerFile" , c . ServerFile ) ;
719+ writer . WriteAttributeString ( "ServerArgs" , c . ServerArgs ) ;
720+ writer . WriteAttributeString ( "PostCmd" , c . PostCmd ) ;
721+ writer . WriteAttributeString ( "PreCmd" , c . PreCmd ) ;
722+ writer . WriteAttributeString ( "OptimizationLevel" , c . OptimizeLevel . ToString ( ) ) ;
723+ writer . WriteAttributeString ( "VerboseLevel" , c . VerboseLevel . ToString ( ) ) ;
724+ writer . WriteAttributeString ( "DeleteAfterCopy" , c . DeleteAfterCopy ? "1" : "0" ) ;
725+ writer . WriteAttributeString ( "FTPHost" , c . FTPHost ) ;
726+ writer . WriteAttributeString ( "FTPUser" , c . FTPUser ) ;
727+ writer . WriteAttributeString ( "FTPPassword" , ManagedAES . Encrypt ( c . FTPPassword ) ) ;
728+ writer . WriteAttributeString ( "FTPDir" , c . FTPDir ) ;
729+ writer . WriteAttributeString ( "RConIP" , c . RConIP ) ;
730+ writer . WriteAttributeString ( "RConPort" , c . RConPort . ToString ( ) ) ;
731+ writer . WriteAttributeString ( "RConPassword" , ManagedAES . Encrypt ( c . RConPassword ) ) ;
732+ writer . WriteAttributeString ( "RConCommands" , c . RConCommands ) ;
733+ writer . WriteEndElement ( ) ;
708734 }
709735
710- writer . WriteAttributeString ( "SMDirectory" , SMDirOut . ToString ( ) ) ;
711- writer . WriteAttributeString ( "Standard" , c . Standard ? "1" : "0" ) ;
712- writer . WriteAttributeString ( "CopyDirectory" , c . CopyDirectory ) ;
713- writer . WriteAttributeString ( "AutoCopy" , c . AutoCopy ? "1" : "0" ) ;
714- writer . WriteAttributeString ( "AutoUpload" , c . AutoUpload ? "1" : "0" ) ;
715- writer . WriteAttributeString ( "AutoRCON" , c . AutoRCON ? "1" : "0" ) ;
716- writer . WriteAttributeString ( "ServerFile" , c . ServerFile ) ;
717- writer . WriteAttributeString ( "ServerArgs" , c . ServerArgs ) ;
718- writer . WriteAttributeString ( "PostCmd" , c . PostCmd ) ;
719- writer . WriteAttributeString ( "PreCmd" , c . PreCmd ) ;
720- writer . WriteAttributeString ( "OptimizationLevel" , c . OptimizeLevel . ToString ( ) ) ;
721- writer . WriteAttributeString ( "VerboseLevel" , c . VerboseLevel . ToString ( ) ) ;
722- writer . WriteAttributeString ( "DeleteAfterCopy" , c . DeleteAfterCopy ? "1" : "0" ) ;
723- writer . WriteAttributeString ( "FTPHost" , c . FTPHost ) ;
724- writer . WriteAttributeString ( "FTPUser" , c . FTPUser ) ;
725- writer . WriteAttributeString ( "FTPPassword" , ManagedAES . Encrypt ( c . FTPPassword ) ) ;
726- writer . WriteAttributeString ( "FTPDir" , c . FTPDir ) ;
727- writer . WriteAttributeString ( "RConIP" , c . RConIP ) ;
728- writer . WriteAttributeString ( "RConPort" , c . RConPort . ToString ( ) ) ;
729- writer . WriteAttributeString ( "RConPassword" , ManagedAES . Encrypt ( c . RConPassword ) ) ;
730- writer . WriteAttributeString ( "RConCommands" , c . RConCommands ) ;
731736 writer . WriteEndElement ( ) ;
737+ writer . Flush ( ) ;
732738 }
733739
734- writer . WriteEndElement ( ) ;
735- writer . Flush ( ) ;
736- }
737-
738- File . WriteAllText ( PathsHelper . ConfigFilePath , outString . ToString ( ) ) ;
739- LoggingControl . LogAction ( $ "Configs saved.", 2 ) ;
740+ File . WriteAllText ( PathsHelper . ConfigFilePath , outString . ToString ( ) ) ;
741+ LoggingControl . LogAction ( $ "Configs saved.", 2 ) ;
742+ } ) ;
740743 }
741744
742745 private void Language_Translate ( )
0 commit comments