mirror of
https://github.com/SistemaRayoXP/Virtual-Mac.git
synced 2025-02-01 13:32:01 +00:00
bff2e655c3
NET Code!
580 lines
20 KiB
VB.net
580 lines
20 KiB
VB.net
Option Strict Off
|
|
Option Explicit On
|
|
Friend Class frmNewMac
|
|
Inherits System.Windows.Forms.Form
|
|
'Honestly, the most complicated assistant (Here is where my hard work is :D)
|
|
|
|
Private Structure MEMORYSTATUS 'Api for checking how much RAM is avaible in the machine
|
|
Dim dwLength As Integer
|
|
Dim dwMemoryLoad As Integer
|
|
Dim dwTotalPhys As Integer
|
|
Dim dwAvailPhys As Integer
|
|
Dim dwTotalPageFile As Integer
|
|
Dim dwAvailPageFile As Integer
|
|
Dim dwTotalVirtual As Integer
|
|
Dim dwAvailVirtual As Integer
|
|
End Structure
|
|
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (ByRef lpBuffer As MEMORYSTATUS)
|
|
|
|
Private Sub BrowseA_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles BrowseA.Click
|
|
|
|
'A for Add, that means 'Add an existing machine'.
|
|
'Opens a 'Open dialog' to search VirtualMac config file
|
|
|
|
BrowseOpen.Filter = "Virtual Mac Configuration File (*.mcc)|*.mcc|All files (*.*)|*.*"
|
|
BrowseOpen.ShowDialog()
|
|
FileNameA.Text = BrowseOpen.FileName
|
|
End Sub
|
|
|
|
Private Sub BrowseC_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles BrowseC.Click
|
|
'C for Create, that means 'Create a new machine'
|
|
'Opens the save dialog that let's you choose where
|
|
'will the config file be saved
|
|
|
|
BrowseOpen.Filter = "Virtual Mac Configuration File (*.mcc)|*.mcc|All files (*.*)|*.*"
|
|
BrowseSave.Filter = "Virtual Mac Configuration File (*.mcc)|*.mcc|All files (*.*)|*.*"
|
|
BrowseSave.ShowDialog()
|
|
BrowseOpen.FileName = BrowseSave.FileName
|
|
FileNameC.Text = BrowseOpen.FileName
|
|
|
|
End Sub
|
|
|
|
Private Sub cmdBack_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdBack.Click
|
|
|
|
'This is the first part of the hard code, this makes
|
|
'that the right Frame will be shown, this is in base
|
|
'to which is the currently visible frame. This makes
|
|
'visible the earlier Frame. The instruction
|
|
'<GoTo EndNext> makes that you won't automatically jump
|
|
'until the Start screen
|
|
|
|
If NewMac2.Visible = True Then 'Go back to Start screen
|
|
cmdBack.Enabled = False
|
|
NewMac2.Visible = False
|
|
NewMacWizard.Visible = False
|
|
NewMac1.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
'Both fo these go back to Page 2. But every one is different
|
|
'since one creates a new Mac, the other adds a new one
|
|
|
|
If NewMac3.Visible = True Then 'Back from the page 'Create a new one'
|
|
NewMac3.Visible = False
|
|
Action.Text = "Options"
|
|
ActionDescription.Text = "You can create a new Virtual Mac or add an existing one to the Virtual Mac Console"
|
|
NewMac2.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMacFromExist.Visible = True Then 'Back from page 'Add a new one'
|
|
NewMacFromExist.Visible = False
|
|
Action.Text = "Options"
|
|
ActionDescription.Text = "You can create a new Virtual Mac or add an existing one to the Virtual Mac Console"
|
|
NewMac2.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac4.Visible = True Then 'Back from the page 'Name and Location'
|
|
NewMac4.Visible = False
|
|
Action.Text = "Virtual Macintosh Name and Location"
|
|
ActionDescription.Text = "The name you specify will appear in the list of Virtual Macintoshes in the Virtual Mac Console"
|
|
NewMac3.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac5.Visible = True Then 'Back from the page 'Select OS'
|
|
NewMac5.Visible = False
|
|
Action.Text = "Operating System"
|
|
ActionDescription.Text = "Select the operating system you plan to install on this machine"
|
|
NewMac4.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac6.Visible = True Then 'Back from the page 'RAM for this Mac'
|
|
NewMac6.Visible = False
|
|
Action.Text = "Memory"
|
|
ActionDescription.Text = "You can configure the RAM on this Mac"
|
|
NewMac5.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
|
|
'Back from the page 'Finishing the New Mac Wizard'. Note: This changes as which option was choosen
|
|
If NewMacEnd.Visible = True Then
|
|
|
|
'If choosen the option 'Create a new Mac', this will return
|
|
'to the 'RAM' page
|
|
If CreateNew.Checked = True Then
|
|
NewMacEnd.Visible = False
|
|
cmdNext.Text = "Next >"
|
|
NewMacWizard.Visible = True
|
|
NewMac6.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
'If choosen the option 'Use default settings to create a Virtual Mac'
|
|
'this will return to the page 2
|
|
If UseDefaults.Checked = True Then
|
|
NewMacEnd.Visible = False
|
|
AdviceNoHD.Visible = False
|
|
cmdNext.Text = "Next >"
|
|
NewMacWizard.Visible = True
|
|
NewMac3.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
End If
|
|
|
|
EndNext:
|
|
End Sub
|
|
|
|
Private Sub cmdCancel_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdCancel.Click
|
|
'If you cahnge of opinion and you think you don't need
|
|
'a New Mac, this will Unload the current Window
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub cmdNext_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdNext.Click
|
|
'Here is the REALLY HARD work. This code will make you advance
|
|
'throught the assistant. This will check which page (Frame) is
|
|
'shown and in base to your choices, it will show diferrent things
|
|
|
|
'Let's install a error handler!
|
|
On Error GoTo ErrorHandler
|
|
|
|
'Declarations
|
|
Dim MemStat As MEMORYSTATUS
|
|
Dim RAM As Integer
|
|
Dim MacName As String
|
|
Dim VMemory As Integer
|
|
Dim VDisk As Integer
|
|
Dim VArch As String
|
|
|
|
'Assigning values to the declarations
|
|
MacName = Replace(FileNameC.Text, ".mcc", "")
|
|
|
|
GlobalMemoryStatus(MemStat)
|
|
RAM = CInt(Str(MemStat.dwTotalPhys / 1024 / 1024))
|
|
|
|
If NewMac1.Visible = True Then 'Shows the assistant
|
|
NewMacWizard.Visible = True
|
|
NewMac1.Visible = False
|
|
NewMac2.Visible = True
|
|
cmdBack.Enabled = True
|
|
CreateNew.Focus()
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac2.Visible = True Then 'This will differ as the option you choose
|
|
|
|
If AddExist.Checked = True Then 'If you want to add from EXISTING file
|
|
NewMac2.Visible = False
|
|
Action.Text = "Existing Virtual Macintosh Name and Location"
|
|
ActionDescription.Text = "You can add a .mcc file from this computer or another computer to the Virtual Mac Console"
|
|
NewMacFromExist.Visible = True
|
|
FileNameA.Focus()
|
|
GoTo EndNext
|
|
End If
|
|
|
|
NewMac2.Visible = False 'If you want to create a NEW Mac
|
|
Action.Text = "Virtual Macintosh Name and Location"
|
|
ActionDescription.Text = "The name you specify will appear in the list of Virtual Macintoshes in the Virtual Mac Console"
|
|
NewMac3.Visible = True
|
|
CheckIfNameExist()
|
|
FileNameC.Focus()
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac3.Visible = True Then 'This will differ too with the choice that you've made before
|
|
|
|
If Not BrowseOpen.FileName = "" Then
|
|
MacName = Replace(BrowseOpen.FileName, ".mcc", "")
|
|
End If
|
|
|
|
If BrowseOpen.FileName = "" Then
|
|
MacName = FileNameC.Text
|
|
End If
|
|
|
|
If CreateNew.Checked = True Then 'If you choosed to Create a new thing and follow instruction step by step
|
|
HardwareEngineer(True)
|
|
Action.Text = "Operating System"
|
|
ActionDescription.Text = "Select the operating system you plan to install on this machine"
|
|
NewMac3.Visible = False
|
|
VB6.SetDefault(cmdBack, False)
|
|
VB6.SetDefault(cmdNext, True)
|
|
cmdNext.Focus()
|
|
NewMac4.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If UseDefaults.Checked = True Then 'If you don't wanna waste time and just want a new machine NOW
|
|
HardwareEngineer(True)
|
|
'AutoConfigure 'This will be uncommented when implemmented
|
|
VMName.Text = MacName
|
|
NewMacWizard.Visible = False
|
|
cmdNext.Text = "Finish"
|
|
VB6.SetDefault(cmdNext, True)
|
|
AdviceNoHD.Visible = True
|
|
NewMacEnd.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
End If
|
|
|
|
|
|
'Move away from the OS page and choose the RAM for you new Mac!
|
|
'(Only avaible when creating new one, not when you choosed use defaults)
|
|
If NewMac4.Visible = True Then
|
|
NewMac4.Visible = False
|
|
Action.Text = "Memory"
|
|
ActionDescription.Text = "You can configure the RAM on this Mac"
|
|
RAMAdjust.Maximum = 2048
|
|
RAMAdjust.Value = VMemory
|
|
RAMAdjust.TickFrequency = 2048 / 20
|
|
RAMMegabyteNumber.Text = CStr(VMemory)
|
|
RecRAM.Text = "Recommended RAM: [" & MemoryMB.Text & "]"
|
|
NewMac5.Visible = True
|
|
Recommend.Focus()
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac5.Visible = True Then 'Configure you new hard disk!
|
|
NewMac5.Visible = False
|
|
Action.Text = "Virtual Hard Disk Location"
|
|
ActionDescription.Text = "This wizard creates a fixed size virtual disk with the specified size"
|
|
DiskSizeMB.Text = VDisk
|
|
|
|
If Not BrowseOpen.FileName = "" Then
|
|
NewMac7VDName.Text = Replace(BrowseOpen.FileName, ".mcc", ".dsk")
|
|
End If
|
|
|
|
If BrowseOpen.FileName = "" Then
|
|
NewMac7VDName.Text = frmOptions.DefaultMacFolder.Text & "\" & MacName & ".dsk"
|
|
End If
|
|
|
|
NewMac6.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
If NewMac6.Visible = True Then 'You'll see the Finish page
|
|
NewMac6.Visible = False
|
|
OpenSettingsAfterFinish.Visible = False
|
|
NewMacWizard.Visible = False
|
|
cmdNext.Text = "Finish"
|
|
NewMacEnd.Visible = True
|
|
GoTo EndNext
|
|
End If
|
|
|
|
|
|
If NewMacEnd.Visible = True Then
|
|
|
|
frmMain.VMList.Items.Add(MacName) 'Adds the just created machine to the VM List
|
|
frmMain.RedrawList() 'Redraw the list so you'll see the new elements
|
|
|
|
Me.Close()
|
|
If OpenSettingsAfterFinish.Visible = True Then
|
|
If OpenSettingsAfterFinish.CheckState = 1 Then
|
|
|
|
frmVMSettings.Show(MacName)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
GoTo EndNext
|
|
|
|
ErrorHandler:
|
|
If Not Err.Number = 0 Then
|
|
MsgBox(Err.Number & ". " & Err.Description, MsgBoxStyle.Critical)
|
|
End If
|
|
|
|
EndNext:
|
|
End Sub
|
|
|
|
Public Function HardwareEngineer(ByVal AutoDetect As Boolean) As String
|
|
|
|
Dim VMemory As Integer
|
|
Dim VDisk As Integer
|
|
Dim VArch As String = ""
|
|
Dim FoundPosition As Long
|
|
Dim OSType As String = "Other"
|
|
|
|
If AutoDetect = False Then GoTo Catalog
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 6")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac6"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 7")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac7"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 7.")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac75"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 8")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac8"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 9")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac9"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 9.")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac9"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " Classic")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac9"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " X")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac10"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 10")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac10"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
FoundPosition = InStr(FileNameC.Text, " 10.")
|
|
If FoundPosition <> 0 Then
|
|
OSType = "Mac10"
|
|
GoTo Catalog
|
|
End If
|
|
|
|
|
|
Catalog:
|
|
If AutoDetect = False Then
|
|
'XDR
|
|
End If
|
|
|
|
Select Case OSType
|
|
Case "Mac6"
|
|
VMemory = 8
|
|
VDisk = 100
|
|
VArch = "m680"
|
|
Case "Mac7"
|
|
VMemory = 16
|
|
VDisk = 200
|
|
VArch = "m684"
|
|
Case "Mac8"
|
|
VMemory = 32
|
|
VDisk = 500
|
|
VArch = "PPC"
|
|
Case "Mac9"
|
|
|
|
Case "Mac10"
|
|
|
|
Case "Other"
|
|
|
|
End Select
|
|
|
|
|
|
MsgBox(VMemory & "," & VDisk & "," & VArch)
|
|
|
|
Return VMemory & "," & VDisk & "," & VArch
|
|
|
|
End Function
|
|
|
|
Public Sub Labeler(ByVal Memory As Long, ByVal Disk As Long, ByVal Arch As String)
|
|
MemoryMB.Text = Memory & " MB"
|
|
DiskMB.Text = Disk & " MB"
|
|
CPUArch.Text = Arch
|
|
End Sub
|
|
|
|
Private Sub DiskSizeMB_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles DiskSizeMB.TextChanged
|
|
'This is the tiny code that makes the slider and the textbox to synchronize
|
|
|
|
On Error Resume Next
|
|
|
|
If DiskSizeMB.Text = "" Then
|
|
cmdNext.Enabled = False
|
|
WarningLowerSize.Visible = True
|
|
DiskSizeMB.Focus()
|
|
Else
|
|
cmdNext.Enabled = True
|
|
WarningLowerSize.Visible = False
|
|
DiskSizeMB.Focus()
|
|
End If
|
|
|
|
If CDbl(DiskSizeMB.Text) > 130557 Then
|
|
cmdNext.Enabled = False
|
|
WarningLowerSize.Visible = True
|
|
DiskSizeMB.Focus()
|
|
Else
|
|
cmdNext.Enabled = True
|
|
WarningLowerSize.Visible = False
|
|
DiskSizeMB.Focus()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub DiskSizeMB_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles DiskSizeMB.Click
|
|
DiskSizeMB.Focus()
|
|
End Sub
|
|
|
|
Private Sub DiskSizeMB_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles DiskSizeMB.KeyPress
|
|
Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
|
|
'Goes to a function that makes that you can only press numbers,
|
|
'no letters, no dots, no special characters
|
|
KeyAscii = VerifyKey(KeyAscii)
|
|
|
|
eventArgs.KeyChar = Chr(KeyAscii)
|
|
If KeyAscii = 0 Then
|
|
eventArgs.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub NewVDBrowse_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles NewVDBrowse.Click
|
|
'Opens the dialog to let you choice the location of the new hard disk
|
|
|
|
BrowseOpen.Filter = "Virtual Mac Disk (*.dsk)|*.dsk|All files (*.*)|*.*"
|
|
BrowseSave.Filter = "Virtual Mac Disk (*.dsk)|*.dsk|All files (*.*)|*.*"
|
|
BrowseSave.ShowDialog()
|
|
BrowseOpen.FileName = BrowseSave.FileName
|
|
NewMac7VDName.Text = BrowseOpen.FileName
|
|
End Sub
|
|
|
|
Private Sub FileNameC_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles FileNameC.Enter
|
|
'Selects all the text when you click in the machine FileName TextBox
|
|
|
|
FileNameC.SelectionStart = 0
|
|
FileNameC.SelectionLength = Len(FileNameC.Text)
|
|
End Sub
|
|
|
|
Private Sub OSList_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles OSList.SelectedIndexChanged
|
|
|
|
|
|
End Sub
|
|
|
|
Function VerifyKey(ByRef PressedKey As Object) As Object
|
|
'Lets only to send the keys assigned to numbers in the keyboard
|
|
|
|
'Declarations
|
|
Dim AllowedKeys As String
|
|
|
|
'Here are listed the 'allowed' keys
|
|
AllowedKeys = "1234567890" & Chr(System.Windows.Forms.Keys.Back)
|
|
|
|
'Here is made the check with a 'If' instruction
|
|
If InStr(1, AllowedKeys, Chr(PressedKey)) Then
|
|
|
|
VerifyKey = PressedKey 'If the pressed key is one of the allowed
|
|
Else
|
|
VerifyKey = 0
|
|
End If
|
|
|
|
|
|
End Function
|
|
|
|
Public Sub AddVM()
|
|
'This procedure will, make place where at the end
|
|
'of the assistant the machine is made and the config file
|
|
'is written to disk. But for now it's incomplete
|
|
|
|
frmMain.RedrawList() 'Verifies for new items and redraws the list
|
|
|
|
End Sub
|
|
|
|
Public Sub CheckIfNameExist()
|
|
'===Check that we haven't a machine with the same name===
|
|
'Declarations
|
|
Dim i As Integer
|
|
Dim x As Integer
|
|
|
|
'Procedure
|
|
For x = 1 To frmMain.VM.Count - 1
|
|
i = InStr(frmMain.VMName(x).Text, FileNameC.Text)
|
|
If i <> 0 Then
|
|
FileNameC.Text = "New Mac (" & x & ")"
|
|
End If
|
|
Next
|
|
|
|
End Sub
|
|
|
|
Private Sub RAMAdjust_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles RAMAdjust.Scroll
|
|
|
|
RAMMegabyteNumber.Text = CStr(RAMAdjust.Value)
|
|
|
|
End Sub
|
|
|
|
Private Sub RAMMegabyteNumber_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles RAMMegabyteNumber.GotFocus
|
|
RAMMegabyteNumber.SelectionStart = 0
|
|
RAMMegabyteNumber.SelectionLength = Len(RAMMegabyteNumber.Text)
|
|
End Sub
|
|
|
|
Private Sub RAMMegabyteNumber_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RAMMegabyteNumber.KeyPress
|
|
Dim KeyAscii As Short = Asc(e.KeyChar)
|
|
|
|
KeyAscii = VerifyKey(KeyAscii)
|
|
|
|
e.KeyChar = Chr(KeyAscii)
|
|
If KeyAscii = 0 Then
|
|
e.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub RAMMegabyteNumber_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RAMMegabyteNumber.TextChanged
|
|
'Makes that the value of the TextBox will be represented in the slider
|
|
|
|
On Error GoTo ErrorHandler
|
|
|
|
RAMAdjust.Value = CInt(RAMMegabyteNumber.Text)
|
|
|
|
|
|
|
|
ErrorHandler:
|
|
If Not Err.Number = 0 Then
|
|
If Err.Number = 13 Then
|
|
RAMAdjust.Value = 0
|
|
End If
|
|
|
|
If Err.Number <> 13 Then
|
|
MsgBox(Err.Description, MsgBoxStyle.Critical)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Adjust_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Adjust.CheckedChanged
|
|
If sender.Checked Then
|
|
|
|
'This makes visible the Frame that shows the RAM slider to adjust the RAM
|
|
|
|
If Adjust.Checked = True Then
|
|
RAMAdjuster.Visible = True
|
|
RAMAdjust.TabStop = True
|
|
RAMMegabyteNumber.TabStop = True
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Recommend_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Recommend.CheckedChanged
|
|
If sender.Checked Then
|
|
'Makes Invisible the Frame with the RAM Slider so you will use the default RAM for the machine
|
|
|
|
If Recommend.Checked = True Then
|
|
RAMAdjuster.Visible = False
|
|
RAMAdjust.TabStop = False
|
|
RAMMegabyteNumber.TabStop = False
|
|
End If
|
|
End If
|
|
End Sub
|
|
End Class |