420 lines
17 KiB
VB.net
420 lines
17 KiB
VB.net
Public Class frmMain
|
|
Public Sub LoadSettings()
|
|
Dim VMNames() As String = Split(My.Settings.VMNames, ",")
|
|
Dim VMRoutes() As String = Split(My.Settings.VMRoutes, ",")
|
|
Dim VMIcons() As String = Split(My.Settings.VMIcons, ",")
|
|
Dim VMTypes() As String = Split(My.Settings.VMType, ",")
|
|
|
|
If Microsoft.VisualBasic.Command = "/debug" Then
|
|
Me.mnuFileDebug.Visible = True
|
|
Else
|
|
Me.mnuFileDebug.Visible = False
|
|
End If
|
|
|
|
If VMNames.Length > 1 Then
|
|
For x As Integer = 0 To VMNames.Length - 2
|
|
If VMIcons(x) = -1 Or VMIcons(x) = "" Then
|
|
VMIcons(x) = 0
|
|
End If
|
|
With VMList.Items.Add(VMNames(x))
|
|
.StateImageIndex = 0
|
|
.SubItems.Add(VMRoutes(x))
|
|
.SubItems.Add(VMTypes(x))
|
|
End With
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub SaveSettings()
|
|
Dim VMNames As String = ""
|
|
Dim VMIcons As String = ""
|
|
Dim VMRoutes As String = ""
|
|
Dim VMTypes As String = ""
|
|
Dim CustomIcons As String = ""
|
|
|
|
For x As Integer = 0 To VMList.Items.Count - 1
|
|
If VMList.Items(x).StateImageIndex = -1 Then
|
|
VMList.Items(x).StateImageIndex = 0
|
|
End If
|
|
Next
|
|
|
|
For x As Integer = 0 To VMList.Items.Count - 1
|
|
VMNames = VMNames & VMList.Items(x).Text & ","
|
|
VMIcons = VMIcons & VMList.Items(x).StateImageIndex & ","
|
|
VMRoutes = VMRoutes & VMList.Items(x).SubItems(1).Text & ","
|
|
VMTypes = VMTypes & VMList.Items(x).SubItems(2).Text & ","
|
|
Next
|
|
|
|
My.Settings.VMNames = VMNames
|
|
My.Settings.VMIcons = VMIcons
|
|
My.Settings.VMRoutes = VMRoutes
|
|
My.Settings.VMType = VMTypes
|
|
My.Settings.Save()
|
|
|
|
End Sub
|
|
|
|
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
|
Me.Visible = False
|
|
End Sub
|
|
|
|
Private Sub frmMain_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
|
|
GetSysInfo()
|
|
VirtualMacTray.Visible = True
|
|
LoadSettings()
|
|
End Sub
|
|
|
|
Private Sub frmMain_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
|
|
|
|
SaveSettings()
|
|
|
|
If Me.WindowState <> System.Windows.Forms.FormWindowState.Minimized Then
|
|
SaveSetting(My.Application.Info.Title, "Settings", "MainLeft", CStr(VB6.PixelsToTwipsX(Me.Left)))
|
|
SaveSetting(My.Application.Info.Title, "Settings", "MainTop", CStr(VB6.PixelsToTwipsY(Me.Top)))
|
|
SaveSetting(My.Application.Info.Title, "Settings", "MainWidth", CStr(VB6.PixelsToTwipsX(Me.Width)))
|
|
SaveSetting(My.Application.Info.Title, "Settings", "MainHeight", CStr(VB6.PixelsToTwipsY(Me.Height)))
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Sub StartEmulation(ByVal ConfigPath As String)
|
|
Dim Reader As New System.IO.StreamReader(ConfigPath, True)
|
|
Dim Line As String
|
|
Dim Lines As New ArrayList
|
|
|
|
Do
|
|
Line = Reader.ReadLine()
|
|
If Not Line Is Nothing Then
|
|
Lines.Add(Line)
|
|
End If
|
|
Loop Until Line Is Nothing
|
|
Reader.Close()
|
|
|
|
If My.Settings.TestWindow = True Then
|
|
frmVirtualMacintosh.Show()
|
|
Exit Sub
|
|
End If
|
|
|
|
Select Case VMList.FocusedItem.SubItems(2).Text
|
|
Case "vMac"
|
|
If My.Computer.FileSystem.FileExists(My.Settings.vMacPath) = True Then
|
|
frmVirtualMacintosh.Text = VMList.Items(VMList.FocusedItem.Index).Text & " - Virtual Mac"
|
|
Shell(My.Settings.vMacPath & " " & Chr(34) & Lines(0) & Chr(34), AppWinStyle.NormalFocus)
|
|
End If
|
|
Case "BII"
|
|
If My.Computer.FileSystem.FileExists(My.Settings.BasiliskPath) = True Then
|
|
Shell(My.Settings.BasiliskPath & " " & Chr(34) & VMList.FocusedItem.SubItems(1).Text & Chr(34), AppWinStyle.NormalFocus)
|
|
End If
|
|
Case "SheepShaver"
|
|
If My.Computer.FileSystem.FileExists(My.Settings.SheepShaverPath) = True Then
|
|
Shell(My.Settings.SheepShaverPath & " " & Chr(34) & VMList.FocusedItem.SubItems(1).Text & Chr(34), AppWinStyle.NormalFocus)
|
|
End If
|
|
Case "PearPC"
|
|
If My.Computer.FileSystem.FileExists(My.Settings.PearPCPath) = True Then
|
|
MsgBox("cmd.exe /k " & My.Settings.PearPCPath & " " & Chr(34) & VMList.FocusedItem.SubItems(1).Text & Chr(34))
|
|
Shell("cmd.exe /k " & My.Settings.PearPCPath & " " & Chr(34) & VMList.FocusedItem.SubItems(1).Text & Chr(34), AppWinStyle.NormalFocus)
|
|
End If
|
|
Case "QEMU"
|
|
If My.Computer.FileSystem.FileExists(My.Settings.QEMUPath) = True Then
|
|
Shell(My.Settings.QEMUPath & " " & Lines(0), AppWinStyle.NormalFocus)
|
|
End If
|
|
End Select
|
|
|
|
End Sub
|
|
|
|
Public Sub EnableButtons()
|
|
|
|
mnuActionStart.Enabled = True
|
|
'mnuActionPause.Enabled = True
|
|
'mnuActionRestart.Enabled = True
|
|
|
|
mnuActionRemove.Enabled = True
|
|
mnuActionSettings.Enabled = True
|
|
|
|
'mnuActionProperties.Enabled = True
|
|
|
|
ButtonSettings.Enabled = True
|
|
ButtonRemove.Enabled = True
|
|
ButtonStart.Enabled = True
|
|
|
|
End Sub
|
|
|
|
Public Sub RemoveSelectedMac()
|
|
|
|
'Declarations
|
|
Dim Selection As Boolean
|
|
Dim Answer As Short
|
|
|
|
'Checks that you have a machine selected
|
|
If VMList.FocusedItem.Index <> -1 Then
|
|
Selection = True
|
|
End If
|
|
|
|
'Asks you if you really want to delete the machine
|
|
If Selection = True Then
|
|
Answer = MsgBox("Are you sure you want to remove ''" & VMList.Items(VMList.FocusedItem.Index).Text & "'' Mac from the Virtual Mac Console?", MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, "Virtual Mac")
|
|
|
|
'If you don't want that old Mac Plus, this
|
|
'is where it's deleted and recycled (Maybe)
|
|
If Answer = 6 Then
|
|
'Let's ask if user wants to keep files
|
|
If MsgBox("Do you want to delete the associated files? This will delete ALL the files in the folder ''" & VMList.FocusedItem.Text & "''", MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, "Delete files") = MsgBoxResult.Yes Then
|
|
'If user needs disk space...
|
|
My.Computer.FileSystem.DeleteDirectory(System.IO.Path.GetDirectoryName(VMList.FocusedItem.SubItems(1).Text), FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin, FileIO.UICancelOption.DoNothing)
|
|
VMList.Items.RemoveAt(VMList.FocusedItem.Index)
|
|
DisableButtons() 'Disable the buttons
|
|
Else
|
|
'If user just gets annoyed with the item but wants the files...
|
|
VMList.Items.RemoveAt(VMList.FocusedItem.Index)
|
|
DisableButtons() 'Disable the buttons
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub NewMac_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ButtonNewM.Click
|
|
frmNewMac.Show()
|
|
End Sub
|
|
|
|
Private Sub Remove_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ButtonRemove.Click
|
|
RemoveSelectedMac()
|
|
End Sub
|
|
|
|
Private Sub Settings_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ButtonSettings.Click
|
|
OpenSettings()
|
|
End Sub
|
|
|
|
Private Sub Start_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ButtonStart.Click
|
|
StartEmulation(VMList.FocusedItem.SubItems(1).Text)
|
|
End Sub
|
|
|
|
Public Sub DisableButtons()
|
|
|
|
mnuActionStart.Enabled = False
|
|
mnuActionPause.Enabled = False
|
|
mnuActionRestart.Enabled = False
|
|
mnuActionRemove.Enabled = False
|
|
mnuActionSettings.Enabled = False
|
|
mnuActionProperties.Enabled = False
|
|
ButtonSettings.Enabled = False
|
|
ButtonRemove.Enabled = False
|
|
ButtonStart.Enabled = False
|
|
|
|
End Sub
|
|
|
|
Public Sub UnloadAll()
|
|
|
|
If frmVirtualMacintosh.Visible = True Then
|
|
frmVirtualMacintosh.Close()
|
|
End If
|
|
|
|
If frmOptions.Visible = True Then
|
|
frmOptions.Close()
|
|
End If
|
|
|
|
If frmSettingsSheepVM.Visible = True Then
|
|
frmSettingsSheepVM.Close()
|
|
End If
|
|
|
|
If frmNewMac.Visible = True Then
|
|
frmNewMac.Close()
|
|
End If
|
|
|
|
'If frmNewDisk.Visible = True Then
|
|
'frmNewDisk.Close()
|
|
'End If
|
|
|
|
Me.Close()
|
|
|
|
End
|
|
|
|
End Sub
|
|
|
|
Private Sub IconNewMac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrayNewMac.Click
|
|
frmNewMac.Show()
|
|
frmNewMac.Focus()
|
|
End Sub
|
|
|
|
Private Sub IconNewDisk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrayNewDisk.Click
|
|
'frmNewDisk.Show()
|
|
End Sub
|
|
|
|
Private Sub IconOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrayOptions.Click
|
|
frmOptions.Show()
|
|
End Sub
|
|
|
|
Private Sub IconExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrayExit.Click
|
|
frmVirtualMacintosh.Close()
|
|
frmNewMac.Close()
|
|
'frmNewDisk.Close()
|
|
frmSplash.Close()
|
|
frmSettingsSheepVM.Close()
|
|
frmOptions.Close()
|
|
frmAbout.Close()
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub TrayShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrayShow.Click
|
|
Me.Visible = True
|
|
Me.ShowInTaskbar = True
|
|
Me.WindowState = FormWindowState.Normal
|
|
Me.Show()
|
|
Me.BringToFront()
|
|
End Sub
|
|
|
|
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
|
|
If Me.WindowState = FormWindowState.Minimized Then
|
|
Me.ShowInTaskbar = False
|
|
Me.Visible = False
|
|
End If
|
|
Me.Width = 371
|
|
End Sub
|
|
|
|
Private Sub VirtualMacTray_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles VirtualMacTray.MouseDoubleClick
|
|
Me.Visible = True
|
|
Me.ShowInTaskbar = True
|
|
Me.WindowState = FormWindowState.Normal
|
|
Me.Show()
|
|
Me.BringToFront()
|
|
End Sub
|
|
|
|
Private Sub VMList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles VMList.Click
|
|
EnableButtons()
|
|
End Sub
|
|
|
|
Private Sub ChangeIcon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNewIcon.Click
|
|
Dim User As Integer = MacIcons.Images.Count
|
|
Dim Picture As System.Drawing.Image
|
|
|
|
Browser.Filter = "Picture files(*.jpg;*.png;*.bmp;*.ico)|*.jpg;*.png;*.bmp;*.ico|All files (*.*)|*.*"
|
|
Browser.ShowDialog()
|
|
|
|
If Not Browser.FileName = "" Then
|
|
Picture = Image.FromFile(Browser.FileName)
|
|
MacIcons.Images.Add(User, Picture)
|
|
VMList.FocusedItem.StateImageIndex = User
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub mnuFileOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFileOptions.Click
|
|
frmOptions.Show()
|
|
End Sub
|
|
|
|
Private Sub mnuHelpAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuHelpAbout.Click
|
|
frmAbout.Show()
|
|
End Sub
|
|
|
|
Private Sub mnuFileDebug_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFileDebug.Click
|
|
frmDebug.Show()
|
|
End Sub
|
|
|
|
Private Sub mnuFileNewMac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFileNewMac.Click
|
|
frmNewMac.Show()
|
|
End Sub
|
|
|
|
Private Sub mnuFileNewDisk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFileNewDisk.Click
|
|
frmNewDisk.Show()
|
|
End Sub
|
|
|
|
Private Sub VMList_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles VMList.DragDrop
|
|
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
|
|
e.Effect = DragDropEffects.Copy
|
|
Dim x As String = CType(e.Data.GetData(DataFormats.FileDrop, True), String())(0)
|
|
ConfigFileHandler.CreateFromFile(DetectEmulator, x, InputBox("Write the name for the new Mac", "Creating new Mac from a file"))
|
|
Cursor = Cursors.Default
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuHelpCrash.Click
|
|
'This instruction is WRONG purposedly, it's for crashing the program. This will be used for handling crashes
|
|
Dim x() As String = Split("crashing,instruction", ",")
|
|
MsgBox(x(3))
|
|
End Sub
|
|
|
|
Private Sub VMList_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles VMList.DragEnter
|
|
e.Effect = e.AllowedEffect And DragDropEffects.Copy
|
|
End Sub
|
|
|
|
Public Function DetectEmulator() As String
|
|
Dim Emulator As String = "Unknown"
|
|
Dim EmulatorDialog As New Form
|
|
Dim OKButton As New Button
|
|
Dim CancelButton As New Button
|
|
Dim EmulatorTypes As New ComboBox
|
|
|
|
EmulatorTypes.Items.Add("Basilisk II preferences file")
|
|
EmulatorTypes.Items.Add("SheepShaver preferences file")
|
|
EmulatorTypes.Items.Add("PearPC config file")
|
|
EmulatorTypes.Items.Add("QEMU Batch")
|
|
EmulatorTypes.SelectedIndex = 0
|
|
EmulatorTypes.DropDownStyle = ComboBoxStyle.DropDownList
|
|
|
|
EmulatorDialog.Width = 400
|
|
EmulatorDialog.Height = 160
|
|
EmulatorDialog.FormBorderStyle = Forms.FormBorderStyle.FixedDialog
|
|
EmulatorDialog.Controls.Add(OKButton)
|
|
EmulatorDialog.Controls.Add(CancelButton)
|
|
EmulatorDialog.Controls.Add(EmulatorTypes)
|
|
|
|
EmulatorTypes.Left = (EmulatorDialog.Width / 2) - (EmulatorTypes.Width / 2)
|
|
EmulatorTypes.Top = 40
|
|
OKButton.Top = EmulatorDialog.Height - OKButton.Height - 30
|
|
OKButton.Left = EmulatorDialog.Width - OKButton.Width - CancelButton.Width - 20
|
|
CancelButton.Top = EmulatorDialog.Height - CancelButton.Height - 30
|
|
CancelButton.Left = EmulatorDialog.Width - CancelButton.Width - 20
|
|
|
|
EmulatorDialog.ShowDialog()
|
|
|
|
Select Case EmulatorTypes.SelectedIndex
|
|
Case 0
|
|
Emulator = "vMac"
|
|
Case 1
|
|
Emulator = "BII"
|
|
Case 2
|
|
Emulator = "ShhepShaver"
|
|
Case 3
|
|
Emulator = "PearPC"
|
|
Case 4
|
|
Emulator = "QEMU"
|
|
End Select
|
|
|
|
Return Emulator
|
|
End Function
|
|
|
|
Public Sub OpenSettings()
|
|
Select Case VMList.FocusedItem.SubItems(2).Text
|
|
Case "vMac"
|
|
' frmSettingsPearPCVM.Text = Replace(frmSettingsPearPCVM.Text, "%s", VMList.FocusedItem.Text)
|
|
' frmSettingsPearPCVM.LoadSettingsFrom(VMList.FocusedItem.SubItems(1).Text)
|
|
' frmSettingsPearPCVM.Show()
|
|
Case "BII"
|
|
frmSettingsBasiliskVM.Text = Replace(frmSettingsBasiliskVM.Text, "%s", VMList.FocusedItem.Text)
|
|
frmSettingsBasiliskVM.LoadSettingsFrom(VMList.FocusedItem.Index)
|
|
frmSettingsBasiliskVM.Show()
|
|
Case "SheepShaver"
|
|
frmSettingsSheepVM.Text = Replace(frmSettingsSheepVM.Text, "%s", VMList.FocusedItem.Text)
|
|
frmSettingsSheepVM.LoadSettingsFrom(VMList.FocusedItem.Index)
|
|
frmSettingsSheepVM.Show()
|
|
Case "QEMU"
|
|
frmSettingsQemuVM.Text = Replace(frmSettingsSheepVM.Text, "%s", VMList.FocusedItem.Text)
|
|
'frmSettingsQemuVM.LoadSettingsFrom(VMList.FocusedItem.Index)
|
|
frmSettingsQemuVM.Show()
|
|
Case "PearPC"
|
|
frmSettingsPearPCVM.Text = Replace(frmSettingsSheepVM.Text, "%s", VMList.FocusedItem.Text)
|
|
frmSettingsPearPCVM.LoadSettingsFrom(VMList.FocusedItem.Index)
|
|
frmSettingsPearPCVM.Show()
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub mnuActionSettings_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuActionSettings.Click
|
|
OpenSettings()
|
|
End Sub
|
|
|
|
Private Sub mnuHelpContents_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuHelpContents.Click
|
|
frmHelp.Show()
|
|
End Sub
|
|
|
|
Private Sub mnuHelpOnline_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuHelpOnline.Click
|
|
Process.Start("https://edsonarmando.000webhostapp.com/personal/virtualmac/")
|
|
End Sub
|
|
End Class |