@@ -12,7 +12,6 @@ Public Class Form1
12
12
Dim PyEmbedded As Boolean
13
13
Dim ChainedModels As New List( Of Settings)
14
14
Dim HandOff As ExtSettings
15
- Dim vbQuote As Char = ControlChars.Quote
16
15
17
16
Dim CaffePath As String
18
17
Dim WaifuNcnnPath As String
@@ -177,28 +176,14 @@ Public Class Form1
177
176
Me .SetStyle(ControlStyles.OptimizedDoubleBuffer, True )
178
177
Application.CurrentCulture = New Globalization.CultureInfo( "EN-US" )
179
178
LoadBindingString()
180
- ChainThumbs.Images.Add(Shrink(My.Resources._0, 64 , 64 ))
181
- ChainThumbs.Images.Add(Shrink(My.Resources._1, 64 , 64 ))
182
- ChainThumbs.Images.Add(Shrink(My.Resources._2, 64 , 64 ))
183
- ChainThumbs.Images.Add(Shrink(My.Resources._3, 64 , 64 ))
184
- ChainThumbs.Images.Add(Shrink(My.Resources._4, 64 , 64 ))
185
- ChainThumbs.Images.Add(Shrink(My.Resources._5, 64 , 64 ))
186
- ChainThumbs.Images.Add(Shrink(My.Resources._6, 64 , 64 ))
179
+ PreloadImageList()
187
180
StartUpCheckEXE()
188
181
StartUpCheckPy()
189
- If PyPaths.Count > 0 Then
190
- ExeComboBox.Items.Add( "Python" )
191
- PyScript.SelectedIndex = 0
192
- If PyModels.Count > 0 Then
193
- PyModel.SelectedIndex = 0
194
- Else
195
- MsgBox( "No ESRGAN Models Found!" , MsgBoxStyle.Critical)
196
- End If
197
- End If
198
182
If ExeComboBox.Items.Count > 0 Then
199
183
ExeComboBox.SelectedIndex = 0
200
184
SetSettingsWindow()
201
185
End If
186
+ TabGroup.Refresh()
202
187
WatchDogButton.Select()
203
188
End Sub
204
189
@@ -258,6 +243,25 @@ Public Class Form1
258
243
Next
259
244
Next
260
245
Next
246
+ If PyPaths.Count > 0 Then
247
+ ExeComboBox.Items.Add( "Python" )
248
+ PyScript.SelectedIndex = 0
249
+ If PyModels.Count > 0 Then
250
+ PyModel.SelectedIndex = 0
251
+ Else
252
+ MsgBox( "No ESRGAN Models Found!" , MsgBoxStyle.Critical)
253
+ End If
254
+ End If
255
+ End Sub
256
+
257
+ Private Sub PreloadImageList()
258
+ ChainThumbs.Images.Add(Shrink(My.Resources._0, 64 , 64 ))
259
+ ChainThumbs.Images.Add(Shrink(My.Resources._1, 64 , 64 ))
260
+ ChainThumbs.Images.Add(Shrink(My.Resources._2, 64 , 64 ))
261
+ ChainThumbs.Images.Add(Shrink(My.Resources._3, 64 , 64 ))
262
+ ChainThumbs.Images.Add(Shrink(My.Resources._4, 64 , 64 ))
263
+ ChainThumbs.Images.Add(Shrink(My.Resources._5, 64 , 64 ))
264
+ ChainThumbs.Images.Add(Shrink(My.Resources._6, 64 , 64 ))
261
265
End Sub
262
266
263
267
Private Sub SaveBindingString()
@@ -320,7 +324,7 @@ Public Class Form1
320
324
Private Sub ChainSave_Click(sender As Object , e As EventArgs) Handles ChainSave.Click
321
325
Using SFD As New SaveFileDialog With {.Filter = "XML Files|*.xml|All Files|*.*" }
322
326
If SFD.ShowDialog = DialogResult.OK Then
323
- Serialize(ChainedModels, SFD.FileName)
327
+ File.WriteAllText( SFD.FileName, Serialize(ChainedModels) )
324
328
End If
325
329
End Using
326
330
End Sub
@@ -330,7 +334,7 @@ Public Class Form1
330
334
If OFD.ShowDialog = DialogResult.OK Then
331
335
ChainPreview.Clear()
332
336
ChainedModels.Clear()
333
- ChainedModels = Deserialize( Of List( Of Settings))(OFD.FileName)
337
+ ChainedModels = Deserialize( Of List( Of Settings))(File.ReadAllText( OFD.FileName) )
334
338
For Each Model As Settings In ChainedModels
335
339
AddModelToChain(Model.LoadedMode)
336
340
Next
@@ -356,10 +360,10 @@ Public Class Form1
356
360
Private Sub ChainContextEdit_Click(sender As Object , e As EventArgs) Handles ChainContextEdit.Click
357
361
If ChainPreview.SelectedItems.Count > 0 Then
358
362
Dim ItemIndex = (ChainPreview.SelectedItems( 0 ).Position.X - 21 ) / (ChainPreview.SelectedItems( 0 ).Bounds.Width + 1 )
359
- Using ECD As New EditChainDialog(SerializeString (ChainedModels(ItemIndex)))
363
+ Using ECD As New EditChainDialog(Serialize (ChainedModels(ItemIndex)))
360
364
If ECD.ShowDialog = DialogResult.OK Then
361
365
Try
362
- Dim NewSettings As Settings = DeserializeString (Of Settings)(ECD.ResultText)
366
+ Dim NewSettings As Settings = Deserialize (Of Settings)(ECD.ResultText)
363
367
ChainedModels(ItemIndex) = NewSettings
364
368
Catch ex As Exception
365
369
MsgBox( "Error: New settings could not be parsed." )
@@ -382,9 +386,11 @@ Public Class Form1
382
386
383
387
Private Sub ChainPreview_DragOver( ByVal sender As Object , ByVal e As DragEventArgs) Handles ChainPreview.DragOver
384
388
Dim lvi As ListViewItem = CType (e.Data.GetData( "System.Windows.Forms.ListViewItem" ), ListViewItem)
385
- Dim Offset As Size = Size.Subtract(Cursor.Size, New Size(Cursor.HotSpot.X, Cursor.HotSpot.Y))
386
- lvi.Position = Point.Subtract(ChainPreview.PointToClient( New Point(e.X, e.Y)), Offset)
387
- e.Effect = DragDropEffects.Move
389
+ If lvi IsNot Nothing Then
390
+ Dim Offset As Size = Size.Subtract(Cursor.Size, New Size(Cursor.HotSpot.X, Cursor.HotSpot.Y))
391
+ lvi.Position = Point.Subtract(ChainPreview.PointToClient( New Point(e.X, e.Y)), Offset)
392
+ e.Effect = DragDropEffects.Move
393
+ End If
388
394
End Sub
389
395
390
396
Private Sub ChainPreview_MouseUp(sender As Object , e As MouseEventArgs) Handles ChainPreview.MouseUp
@@ -501,8 +507,8 @@ Public Class Form1
501
507
# Region "Background"
502
508
503
509
Private Sub WatchDog_Tick(sender As Object , e As EventArgs) Handles WatchDog.Tick
504
- Dim Source As List( Of String ) = GetFileNameListNoExtension (InputTextBox.Text)
505
- Dim Dest As List( Of String ) = GetFileNameListNoExtension (OutputTextBox.Text)
510
+ Dim Source As List( Of String ) = GetFileNameList (InputTextBox.Text, False )
511
+ Dim Dest As List( Of String ) = GetFileNameList (OutputTextBox.Text, False )
506
512
Dim FileCheck As Boolean = Dest.SequenceEqual(Source)
507
513
If FileCheck = True Or Source.Count = 0 Then
508
514
WaitScale = Math.Min(WaitScale + 1 , 100 )
@@ -578,7 +584,7 @@ Public Class Form1
578
584
Next
579
585
For Each Model In ChainedModels
580
586
Dim NewImages As New List( Of String )
581
- Dim DiffImages = GetFileNameList(ChainPaths( 0 )).Except(GetFileNameList(HandOff.OutputPath))
587
+ Dim DiffImages = GetFileNameList(ChainPaths( 0 ), True ).Except(GetFileNameList(HandOff.OutputPath, True ))
582
588
For Each NewImage As String In DiffImages
583
589
Dim AcceptExt As Boolean = Model.LoadedExtensions.Contains(Path.GetExtension(NewImage).ToLower)
584
590
If File.Exists(ChainPaths( 0 ) & "\" & NewImage) AndAlso AcceptExt = True Then
@@ -600,7 +606,8 @@ Public Class Form1
600
606
Else
601
607
For j = 0 To NewImages.Count - 1
602
608
Dim NewImage As String = ChainPaths( 1 ) & "\" & Path.GetFileName(NewImages(j))
603
- Dim BuildProcess As ProcessStartInfo = New ProcessStartInfo(Model.LoadedPath, MakeCommand(NewImages(j), NewImage, Model))
609
+ Dim BuildProcess As ProcessStartInfo = New ProcessStartInfo(Path.GetFileName(Model.LoadedPath), MakeCommand(NewImages(j), NewImage, Model))
610
+ BuildProcess.WorkingDirectory = Directory.GetParent(Model.LoadedPath).FullName
604
611
BuildProcess.WindowStyle = ProcessWindowStyle.Hidden
605
612
Dim BatchProcess As Process = Process.Start(BuildProcess)
606
613
If (j + 1 ) Mod HandOff.Threads = 0 OrElse (j = NewImages.Count - 1 ) Then
@@ -624,7 +631,7 @@ Public Class Form1
624
631
WorkHorse.ReportProgress(Math.Round(((i * 100 ) + 1 ) / Source.Count, 0 ))
625
632
Next
626
633
If HandOff.Defringe = True Then
627
- For Each DestImage As String In Source
634
+ For Each DestImage As String In Directory.EnumerateFiles(HandOff.OutputPath, "*.png" )
628
635
Defringe(HandOff.OutputPath & "\" & Path.GetFileName(DestImage))
629
636
Next
630
637
End If
@@ -781,37 +788,11 @@ Public Class Form1
781
788
782
789
# Region "XML"
783
790
784
- Public Shared Sub Serialize( Of T)( ByVal obj As T, sConfigFilePath As String )
785
- Dim XmlBuddy As New Xml.Serialization.XmlSerializer( GetType (T))
786
- Dim MySettings As New Xml.XmlWriterSettings()
787
- MySettings.Indent = True
788
- MySettings.CloseOutput = True
789
- Dim MyWriter As Xml.XmlWriter = Xml.XmlWriter.Create(sConfigFilePath, MySettings)
790
- XmlBuddy.Serialize(MyWriter, obj)
791
- MyWriter.Flush()
792
- MyWriter.Close()
793
- End Sub
794
-
795
- Public Shared Function Deserialize( Of T)( ByVal xml As String ) As T
796
- Dim XmlBuddy As New Xml.Serialization.XmlSerializer( GetType (T))
797
- Dim fs As New FileStream(xml, FileMode.Open)
798
- Dim reader As New Xml.XmlTextReader(fs)
799
- If XmlBuddy.CanDeserialize(reader) Then
800
- Dim tempObject As Object = DirectCast (XmlBuddy.Deserialize(reader), T)
801
- reader.Close()
802
- Return tempObject
803
- Else
804
- Return Nothing
805
- End If
806
- End Function
807
-
808
- Public Shared Function SerializeString( Of T)( ByVal Source As T) As String
791
+ Public Shared Function Serialize( Of T)( ByVal Source As T) As String
809
792
Dim Result As String = ""
810
793
Using XmlStream As New MemoryStream
811
794
Dim XmlSerializer As New Xml.Serialization.XmlSerializer( GetType (T))
812
- Dim XmlSettings As New Xml.XmlWriterSettings()
813
- XmlSettings.Indent = True
814
- XmlSettings.CloseOutput = True
795
+ Dim XmlSettings As New Xml.XmlWriterSettings With {.Indent = True , .CloseOutput = True }
815
796
Dim XmlWriter As Xml.XmlWriter = Xml.XmlWriter.Create(XmlStream, XmlSettings)
816
797
XmlSerializer.Serialize(XmlWriter, Source)
817
798
Dim XmlReader As New StreamReader(XmlStream)
@@ -824,21 +805,22 @@ Public Class Form1
824
805
Return Result
825
806
End Function
826
807
827
- Public Shared Function DeserializeString( Of T)( ByVal Xml As String ) As T
828
- Dim XmlSerializer As New Xml.Serialization.XmlSerializer( GetType (T))
829
- Dim XmlStream As New MemoryStream
830
- Dim XmlWriter As New StreamWriter(XmlStream)
831
- XmlWriter.Write(Xml)
832
- XmlWriter.Flush()
833
- XmlStream.Position = 0
834
- Dim XmlReader As New Xml.XmlTextReader(XmlStream)
835
- If XmlSerializer.CanDeserialize(XmlReader) Then
836
- Dim tempObject As Object = DirectCast (XmlSerializer.Deserialize(XmlReader), T)
837
- XmlReader.Close()
838
- Return tempObject
839
- Else
840
- Return Nothing
841
- End If
808
+ Public Shared Function Deserialize( Of T)( ByVal Xml As String ) As T
809
+ Dim Result As New Object
810
+ Using XmlStream As New MemoryStream
811
+ Dim XmlSerializer As New Xml.Serialization.XmlSerializer( GetType (T))
812
+ Dim XmlWriter As New StreamWriter(XmlStream)
813
+ XmlWriter.Write(Xml)
814
+ XmlWriter.Flush()
815
+ XmlStream.Position = 0
816
+ Dim XmlReader As New Xml.XmlTextReader(XmlStream)
817
+ If XmlSerializer.CanDeserialize(XmlReader) Then
818
+ Result = DirectCast (XmlSerializer.Deserialize(XmlReader), T)
819
+ End If
820
+ XmlWriter.Close()
821
+ XmlReader.Dispose()
822
+ End Using
823
+ Return Result
842
824
End Function
843
825
844
826
# End Region
@@ -904,18 +886,14 @@ Public Class Form1
904
886
Return ""
905
887
End Function
906
888
907
- Private Function GetFileNameList(Source As String ) As List( Of String )
889
+ Private Function GetFileNameList(Source As String , Extension As Boolean ) As List( Of String )
908
890
Dim Result As New List( Of String )
909
- For Each File As String In Directory.GetFileSystemEntries(Source, "*.*" , SearchOption.TopDirectoryOnly).ToList
910
- Result.Add(Path.GetFileName(File))
911
- Next
912
- Return Result
913
- End Function
914
-
915
- Private Function GetFileNameListNoExtension(Source As String ) As List( Of String )
916
- Dim Result As New List( Of String )
917
- For Each File As String In Directory.GetFileSystemEntries(Source, "*.*" , SearchOption.TopDirectoryOnly).ToList
918
- Result.Add(Path.GetFileNameWithoutExtension(File))
891
+ For Each File As String In Directory.GetFiles(Source).ToList
892
+ If Extension = True Then
893
+ Result.Add(Path.GetFileName(File))
894
+ Else
895
+ Result.Add(Path.GetFileNameWithoutExtension(File))
896
+ End If
919
897
Next
920
898
Return Result
921
899
End Function
@@ -992,7 +970,7 @@ Public Class Form1
992
970
End Function
993
971
994
972
Private Function Quote(Source As String ) As String
995
- Return vbQuote & Source & vbQuote
973
+ Return ControlChars.Quote & Source & ControlChars.Quote
996
974
End Function
997
975
998
976
# End Region
0 commit comments