'
' Erstellt mit SharpDevelop.
' Benutzer: Tobi
' Datum: 01.01.2018
' Zeit: 17:12
' 
' Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
'
Public Partial Class MainForm
	
	Dim mInstalVerzeichnis As String
	Dim mAppPath As String
	Dim mSuchpfad As String
	Dim mDateiname As String
	Dim mAlterProjektname As String
	Dim mNeuerProjektname As String
	Dim mAlterDateiname As String
	Dim mNeuerDateiname As String
	
	Public Sub New()
		' The Me.InitializeComponent call is required for Windows Forms designer support.
		Me.InitializeComponent()
		
		'
		' TODO : Add constructor code after InitializeComponents
		'
	End Sub
	
	Public Function Rechts(ByVal sText As String, _
		ByVal nLen As Integer) As String
		
		If nLen > sText.Length Then nLen = sText.Length
		Return (sText.Substring(sText.Length - nLen))
	End Function
	
	Public Function Links(ByVal sText As String, _
		ByVal nLen As Integer) As String
		
		If nLen > sText.Length Then nLen = sText.Length
		Return (sText.Substring(0, nLen))
	End Function
	
	Sub BtQuellAuswahlClick(sender As Object, e As EventArgs)
		mAppPath = Application.StartupPath
		If Rechts(mAppPath, 1) = "\" Then
			mInstalVerzeichnis = mAppPath
		Else
			mInstalVerzeichnis = mAppPath & "\"
		End If
		mInstalVerzeichnis = "D:\S18\Programme\Sharp"
		mSuchpfad = Links(mInstalVerzeichnis, Len(mInstalVerzeichnis) - Len("\Programme\Sharp")) & "EigeneDateien\myVB\"
		meinopenFileDialog.InitialDirectory = mSuchpfad
		'				MessageBox.Show(mSuchpfad , _
		'								"Projekterstellung erfolgreich", _
		'								MessageBoxButtons.OK, _
		'								MessageBoxIcon.Information, _
		'								MessageBoxDefaultButton.Button1)
		
		meinopenFileDialog.Filter = "Projektdatei | *.sln"
		If meinopenFileDialog.ShowDialog=DialogResult.OK Then
			lblQuellprojekt.Text = meinopenFileDialog.FileName
			While Rechts(lblQuellprojekt.Text , 1)<> "\" 
				lblQuellprojekt.Text = Links(lblQuellprojekt.Text,Len(lblQuellprojekt.Text ) -1)
			End While
			tfZielprojekt.Text = Links(lblQuellprojekt.Text,Len(lblQuellprojekt.Text) -1)
			While Rechts(tfZielprojekt.Text , 1)<> "\" 
				tfZielprojekt.Text = Links(tfZielprojekt.Text,Len(tfZielprojekt.Text) -1)
			End While	
			mAlterProjektname = Links(lblQuellprojekt.Text,Len(lblQuellprojekt.Text)-1)
			mAlterProjektname = Rechts(mAlterProjektname, Len(mAlterProjektname) - Len(tfZielprojekt.Text) )
		End If
		If tfZielprojekt.Text.Length > 0 then
		lblNamedesQuellprojekts.Visible = True
		lblNamedesZielprojekts.Visible = True
		lblErgaenzen.Visible = True
		lblQuellprojekt.Visible = True
		tfZielprojekt.Visible = True
		btKopieren.Visible = True	
		Else
			MessageBox.Show("Sie müssen ein Quellprojekt auswählen ", _
					"Fehlende Auswahl", _
					MessageBoxButtons.OK, _
					MessageBoxIcon.Error, _
					MessageBoxDefaultButton.Button1)
			End If
	End Sub
	
	Sub BtKopierenClick(sender As Object, e As EventArgs)
		mNeuerProjektname  = tfZielprojekt.Text
		While Rechts(mNeuerProjektname , 1)<> "\" 
			mNeuerProjektname = Links(mNeuerProjektname,Len(mNeuerProjektname) -1)
		End While
		mNeuerProjektname = Rechts(tfZielprojekt.Text, Len(tfZielprojekt.Text) - len(mNeuerProjektname))
		If System.IO.Directory.Exists(tfZielprojekt.Text) = True Then
			MessageBox.Show("Dieses Projekt existiert schon" & CHR(10)  & CHR(10) & "Bitte wählen Sie einen anderen Projektnamen" , _
				"Unzulässiger Projektname", _
				MessageBoxButtons.OK, _
				MessageBoxIcon.Exclamation, _
				MessageBoxDefaultButton.Button1)
		Else
			Dim ProjektKopieren As New System.Diagnostics.Process()
			ProjektKopieren.StartInfo.FileName = "xcopy.exe"
			ProjektKopieren.StartInfo.Arguments = "/I /s /e " & Links(lblQuellprojekt.Text,Len(lblQuellprojekt.Text ) -1) & " " &  tfZielprojekt.Text
			ProjektKopieren.StartInfo.WindowStyle = ProcessWindowStyle.Minimized					
			ProjektKopieren.Start()
			ProjektKopieren.WaitForExit()
			If ProjektKopieren.HasExited Then
				mAlterDateiname = mAlterProjektname & ".sln"
				mNeuerDateiname = mNeuerProjektname & ".sln" 
				While Not System.IO.File.Exists(tfZielprojekt.Text & "\" & mAlterDateiname) 
					System.Threading.Thread.Sleep(200)
				End While 
				FileIO.FileSystem.RenameDirectory(tfZielprojekt.Text & "\" & mAlterProjektname, mNeuerProjektname)
				FileIO.FileSystem.RenameFile(tfZielprojekt.Text & "\" & mAlterDateiname, mNeuerDateiname)
				mDateiname  = tfZielprojekt.Text & "\" & mNeuerDateiname
				If System.IO.File.Exists(mDateiname) = True Then
					Dim txt = IO.File.ReadAllText(mDateiname)
					txt = txt.Replace(mAlterProjektname,mNeuerProjektname )
					IO.File.WriteAllText(mDateiname,txt)
				End If
				mAlterDateiname = mAlterProjektname & ".vbproj"
				mNeuerDateiname = mNeuerProjektname & ".vbproj" 
				While Not System.IO.File.Exists(tfZielprojekt.Text & "\" & mNeuerProjektname & "\" & mAlterDateiname) 
					System.Threading.Thread.Sleep(200)
				End While 
				FileIO.FileSystem.RenameFile(tfZielprojekt.Text & "\" & mNeuerProjektname & "\" & mAlterDateiname, mNeuerDateiname)
				mDateiname  = tfZielprojekt.Text & "\" & mNeuerProjektname & "\" & mNeuerDateiname
				If System.IO.File.Exists(mDateiname) = True Then
					Dim txt = IO.File.ReadAllText(mDateiname)
					txt = txt.Replace(mAlterProjektname,mNeuerProjektname )
					IO.File.WriteAllText(mDateiname,txt)
				End If
				mDateiname  = tfZielprojekt.Text & "\" & mNeuerProjektname & "\Properties\AssemblyInfo.vb"
				If System.IO.File.Exists(mDateiname) = True Then
					Dim txt = IO.File.ReadAllText(mDateiname)
					txt = txt.Replace(mAlterProjektname,mNeuerProjektname )
					IO.File.WriteAllText(mDateiname,txt)
				End If
				Kill(tfZielprojekt.Text & "\" & mNeuerProjektname & "\bin\Debug\*.*")
				Kill(tfZielprojekt.Text & "\" & mNeuerProjektname & "\obj\Debug\*.*")
				MessageBox.Show("Ihre Projektkopie wurde erstellt", _
					"Kopieren erfolgreich", _
					MessageBoxButtons.OK, _
					MessageBoxIcon.Information, _
					MessageBoxDefaultButton.Button1)
			End If
		End If
	End Sub
	
	
	Sub BtEndeClick(sender As Object, e As EventArgs)
		End		
	End Sub
	
	Sub MainFormLoad(sender As Object, e As EventArgs)
		With Screen.PrimaryScreen.WorkingArea
			Me.Location = New Point(.Left + (.Right - .Left - Me.Width) / 2, .Top + ( _
				.Bottom - .Top - Me.Height) / 2)
		End With		
	End Sub
End Class
