VERSION 2.00
Begin MDIForm MDIForm1
Caption = "DiskPie"
ClientHeight = 4125
ClientLeft = 510
ClientTop = 1335
ClientWidth = 5625
Height = 5055
Icon = DISKPIE.FRX:0000
Left = 450
LinkTopic = "DiskPie Beta 0.4"
Top = 465
Width = 5745
Begin PictureBox Picture1
Align = 2 'Align Bottom
BackColor = &H00C0C0C0&
Height = 405
Left = 0
ScaleHeight = 375
ScaleWidth = 5595
TabIndex = 0
Top = 3720
Width = 5625
Begin Line Line4
BorderColor = &H00808080&
X1 = 5580
X2 = 5580
Y1 = 15
Y2 = 360
End
Begin Line Line3
BorderColor = &H00FFFFFF&
X1 = 15
X2 = 15
Y1 = 0
Y2 = 360
End
Begin Line Line2
BorderColor = &H00808080&
X1 = 15
X2 = 5595
Y1 = 360
Y2 = 360
End
Begin Line Line1
BorderColor = &H00FFFFFF&
X1 = 0
X2 = 5595
Y1 = 0
Y2 = 0
End
Begin Shape Shape1
BackColor = &H00FFFFFF&
BackStyle = 1 'Opaque
BorderColor = &H00808080&
BorderWidth = 2
FillColor = &H00FFFFFF&
FillStyle = 0 'Solid
Height = 255
Left = 75
Shape = 3 'Circle
Top = 75
Width = 255
End
Begin Label Label1
BackColor = &H00C0C0C0&
Height = 135
Left = 480
TabIndex = 1
Top = 120
Width = 4770
End
End
Begin Menu mnu_Main
Caption = "&File"
HelpContextID = 2
Index = 0
Begin Menu mnu_File
Caption = "&Get Colors"
HelpContextID = 3
Index = 0
End
Begin Menu mnu_File
Caption = "-"
Index = 4
End
Begin Menu mnu_File
Caption = "E&xit"
HelpContextID = 21
Index = 5
End
End
Begin Menu mnu_Main
Caption = "&Options"
HelpContextID = 6
Index = 1
Begin Menu mnu_Options
Caption = "&Save Layout on Exit"
Checked = -1 'True
HelpContextID = 7
Index = 0
End
Begin Menu mnu_Options
Caption = "&Maximum Slices"
HelpContextID = 8
Index = 102
Begin Menu mnu_Slice
Caption = "&5"
HelpContextID = 8
Index = 5
End
Begin Menu mnu_Slice
Caption = "&6"
HelpContextID = 8
Index = 6
End
Begin Menu mnu_Slice
Caption = "&7"
HelpContextID = 8
Index = 7
End
Begin Menu mnu_Slice
Caption = "&8"
HelpContextID = 8
Index = 8
End
Begin Menu mnu_Slice
Caption = "&9"
HelpContextID = 8
Index = 9
End
Begin Menu mnu_Slice
Caption = "1&0"
HelpContextID = 8
Index = 10
End
Begin Menu mnu_Slice
Caption = "1&1"
HelpContextID = 8
Index = 11
End
Begin Menu mnu_Slice
Caption = "1&2"
HelpContextID = 8
Index = 12
End
Begin Menu mnu_Slice
Caption = "1&3"
HelpContextID = 8
Index = 13
End
Begin Menu mnu_Slice
Caption = "1&4"
HelpContextID = 8
Index = 14
End
End
End
Begin Menu mnu_Main
Caption = "&Window"
HelpContextID = 9
Index = 2
WindowList = -1 'True
Begin Menu mnu_Window
Caption = "New &Dir Window"
HelpContextID = 13
Index = 4
End
Begin Menu mnu_Window
Caption = "New &Ext Window"
HelpContextID = 14
Index = 5
End
End
Begin Menu mnu_Main
Caption = "&Help"
HelpContextID = 16
Index = 3
Begin Menu mnu_Help
Caption = "&Contents"
HelpContextID = 16
Index = 0
End
Begin Menu mnu_Help
Caption = "&Search for Help On..."
HelpContextID = 16
Index = 1
End
Begin Menu mnu_Help
Caption = "&How to Use Help"
HelpContextID = 16
Index = 2
End
Begin Menu mnu_Help
Caption = "-"
Index = 3
End
Begin Menu mnu_Help
Caption = "&About Disk Pie..."
HelpContextID = 16
Index = 4
End
End
End
Option Explicit
Function ColorsFromIni% ()
' Read the 14 pie slice colors from the INI file. Return TRUE if
' all 14 were read correctly; FALSE otherwise.
ColorsFromIni = True
Dim ColStr$, ColKey$, N%, Success%
For N = 1 To 14
ColKey = "Color" + Str$(N)
Success = GPPS("Settings", ColKey, "7FFFFFFF", ColStr, 12)
SliceColors(N) = Val("&H" + ColStr + "&")
' If any of the slices can't be read, return FALSE
If SliceColors(N) = &H7FFFFFFF Then
ColorsFromIni = False
Exit Function
End If
Next N
End Function
Sub MDIForm_Load ()
Dim Success%, N%, Sec$
NumOpenWindows = 0
' Get the value of NumSlices and SaveSettings from DISKPIE.INI
Sec = "Settings"
NumSlices = GPPI(Sec, "Slices", 14)
If NumSlices < 5 Then NumSlices = 5
If NumSlices > 14 Then NumSlices = 14
mnu_Slice(NumSlices).Checked = True
SaveSettings = GPPI(Sec, "Save Layout", True)
mnu_Options(0).Checked = SaveSettings
' Position the main window at its saved location
Dim vLeft%, vTop%, vWidth%, vHeight%
vWidth = GPPI(Sec, "Width", 6000)
vHeight = GPPI(Sec, "Height", 5000)
vLeft = GPPI(Sec, "Left", (Screen.Width - vWidth) \ 2)
vTop = GPPI(Sec, "Top", (Screen.Height - vHeight) \ 2)
Move vLeft, vTop, vWidth, vHeight
WindowState = GPPI(Sec, "State", NORMAL)
Show
' If the display driver changed, get the colors of the slices from
' an actual pie. Otherwise, get them from the INI file. If any
' of the colors can't be read from the INI file, get them from
' an actual pie
Dim DispDrvWas$, DispDrvIs$
Success = GPPS(Sec, "display.drv", "", DispDrvWas, 144)
DispDrvIs = String$(145, 0)
Success = GetPrivateProfileString("boot.description", "display.drv", "", DispDrvIs, 144, "SYSTEM.INI")
DispDrvIs = Left$(DispDrvIs, InStr(DispDrvIs, Chr$(0)) - 1)
Success = WPPS(Sec, "display.drv", DispDrvIs)
If DispDrvWas <> DispDrvIs Then
Dir2Use = "GETCOLORS"
NewPie
Else
' Get the colors of the pie slices
If Not ColorsFromIni() Then
Dir2Use = "GETCOLORS"
NewPie
End If
End If
' Get the saved settings for each child window
Dim NumWindows%
NumWindows = GPPI(Sec, "NumWindows", 0)
For N = 0 To NumWindows - 1
Sec = "Window" + Str$(N)
Dir2Use = Format$(N)
NewPieFromINI (N)
Next N
End Sub
Sub MDIForm_QueryUnload (Cancel As Integer, UnloadMode As Integer)
If SaveSettings Then
Dim Success%
' Clear out the old child window records. New values will be
' written by the individual child windows when *their*
' QueryUnload methods get called after this.
Dim N%
For N = 0 To 9
Success = WritePrivateProfileStringByNum("Window" + Str$(N), 0, 0, "DISKPIE.INI")
Next N
NextWindow = 0
' Record the program's window state, then restore it to normal.
Success = WPPS("Settings", "State", WindowState)
If WindowState <> 0 Then WindowState = NORMAL
End If
End Sub
Sub MDIForm_Unload (Cancel As Integer)
' This method gets called after all the child windows have gotten
' a QueryUnload call. Each child window increments NumWindows,
' so at this point NumWindows contains the actual number of child
' windows. Now it's time to write out settings data for the
' main program window, including NumWindows.
Dim Success%
Success = WPPS("Settings", "Save Layout", Format$(SaveSettings))
If SaveSettings Then
' Save information general program information
Success = WPPS("Settings", "Slices", Format$(NumSlices))
Success = WPPS("Settings", "NumWindows", Format$(NextWindow))
' Record the current coordinates. The WindowState was set to
' normal by the QueryUnload method.
Success = WPPS("Settings", "Left", Format$(Left))
Success = WPPS("Settings", "Top", Format$(Top))
Success = WPPS("Settings", "Width", Format$(Width))
Success = WPPS("Settings", "Height", Format$(Height))
End If
' Don't leave the help system hanging around...
Success = WinHelpByNum(MdiForm1.hWnd, App.HelpFile, HELP_QUIT, 0)
End Sub
Sub mnu_File_Click (Index As Integer)
' Note that when a pie window is open, the File menu expands to
' include Print and Print Setup.
Select Case Index
Case 0
Dir2Use = "GETCOLORS"
NewPie
Case 5
Unload MdiForm1
End Select
End Sub
Sub mnu_Help_Click (Index As Integer)
' The Mdi form and the child form have nearly identical menus. Both
' rely on functions in DISKPIE.BAS to process many of them.
Share_Help_Click (Index)
End Sub
Sub mnu_Options_Click (Index As Integer)
Select Case Index
Case 0
mnu_Options(0).Checked = Not mnu_Options(0).Checked
SaveSettings = mnu_Options(0).Checked
End Select
End Sub
Sub mnu_Slice_Click (Index As Integer)
If Index <> NumSlices Then
mnu_Slice(NumSlices).Checked = False
NumSlices = Index
mnu_Slice(NumSlices).Checked = True
End If
End Sub
Sub mnu_Window_Click (Index As Integer)
' The Mdi form and the child form have nearly identical menus. Both
' rely on functions in DISKPIE.BAS to process many of them.
Share_Window_Click (Index)
End Sub
Sub NewPieFromINI (ByVal N%)
' The main form's Load method calls this routine for each pie window
' stored in the INI file.
Dir2Use = Format$(N)
Dim NewPieWin As New Child
If Right(NewPieWin.Caption, 5) = "ERROR" Then
Unload NewPieWin
Else
NewPieWin.Show
End If
End Sub
Sub Picture1_Resize ()
' Picture1 serves as a status bar. The four lines around its edges
' give a 3D effect, and its label scales to fill the space.
Line1.X2 = Picture1.ScaleWidth - 15
Line2.X2 = Line1.X2
Line4.X1 = Line1.X2
Line4.X2 = Line1.X2
Dim W%, H%
W = Picture1.ScaleWidth - 465
H = Picture1.ScaleHeight - 150
Label1.Move 405, 75, W, H
End Sub