237 lines
4 KiB
Text
237 lines
4 KiB
Text
VERSION DVX 1.00
|
|
Begin Form NotepadForm
|
|
Caption = "Untitled - Notepad"
|
|
Layout = VBox
|
|
AutoSize = False
|
|
Resizable = True
|
|
Centered = True
|
|
Width = 480
|
|
Height = 320
|
|
Begin Menu mnuFile
|
|
Caption = "&File"
|
|
Begin Menu mnuNew
|
|
Caption = "&New"
|
|
End
|
|
Begin Menu mnuOpen
|
|
Caption = "&Open..."
|
|
End
|
|
Begin Menu mnuSep1
|
|
Caption = "-"
|
|
End
|
|
Begin Menu mnuSave
|
|
Caption = "&Save"
|
|
End
|
|
Begin Menu mnuSaveAs
|
|
Caption = "Save &As..."
|
|
End
|
|
Begin Menu mnuSep2
|
|
Caption = "-"
|
|
End
|
|
Begin Menu mnuExit
|
|
Caption = "E&xit"
|
|
End
|
|
End
|
|
Begin Menu mnuEdit
|
|
Caption = "&Edit"
|
|
Begin Menu mnuCut
|
|
Caption = "Cu&t"
|
|
End
|
|
Begin Menu mnuCopy
|
|
Caption = "&Copy"
|
|
End
|
|
Begin Menu mnuPaste
|
|
Caption = "&Paste"
|
|
End
|
|
Begin Menu mnuSep3
|
|
Caption = "-"
|
|
End
|
|
Begin Menu mnuSelAll
|
|
Caption = "Select &All"
|
|
End
|
|
End
|
|
Begin TextArea Editor
|
|
Weight = 1
|
|
End
|
|
End
|
|
|
|
'$INCLUDE: 'commdlg.bas'
|
|
|
|
DIM currentFile AS STRING
|
|
DIM savedHash AS LONG
|
|
DIM dirty AS INTEGER
|
|
currentFile = ""
|
|
savedHash = 0
|
|
dirty = 0
|
|
|
|
|
|
SUB NotepadForm_Load
|
|
Editor.SetCaptureTabs True
|
|
Editor.SetTabWidth 4
|
|
END SUB
|
|
|
|
|
|
FUNCTION TextHash() AS LONG
|
|
DIM h AS LONG
|
|
DIM t AS STRING
|
|
t = Editor.Text
|
|
h = 0
|
|
DIM i AS INTEGER
|
|
FOR i = 1 TO LEN(t)
|
|
h = h * 31 + ASC(MID$(t, i, 1))
|
|
NEXT i
|
|
TextHash = h
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION IsDirty() AS INTEGER
|
|
IsDirty = (TextHash() <> savedHash)
|
|
END FUNCTION
|
|
|
|
|
|
SUB UpdateTitle
|
|
DIM title AS STRING
|
|
IF currentFile <> "" THEN
|
|
title = currentFile + " - Notepad"
|
|
ELSE
|
|
title = "Untitled - Notepad"
|
|
END IF
|
|
IF dirty THEN
|
|
title = "* " + title
|
|
END IF
|
|
NotepadForm.Caption = title
|
|
END SUB
|
|
|
|
|
|
SUB MarkClean
|
|
dirty = 0
|
|
MarkClean
|
|
END SUB
|
|
|
|
|
|
SUB Editor_Change
|
|
IF NOT dirty THEN
|
|
dirty = -1
|
|
UpdateTitle
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
FUNCTION AskSave() AS INTEGER
|
|
IF NOT IsDirty() THEN
|
|
AskSave = 0
|
|
EXIT FUNCTION
|
|
END IF
|
|
DIM result AS INTEGER
|
|
result = basPromptSave("Notepad")
|
|
IF result = DVX_SAVE_YES THEN
|
|
FileSave
|
|
AskSave = 0
|
|
ELSEIF result = DVX_SAVE_NO THEN
|
|
AskSave = 0
|
|
ELSE
|
|
AskSave = 1
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
SUB FileSave
|
|
IF currentFile = "" THEN
|
|
FileSaveAs
|
|
EXIT SUB
|
|
END IF
|
|
OPEN currentFile FOR OUTPUT AS #1
|
|
PRINT #1, Editor.Text
|
|
CLOSE #1
|
|
MarkClean
|
|
END SUB
|
|
|
|
|
|
SUB FileSaveAs
|
|
DIM path AS STRING
|
|
path = basFileSave("Save As", "Text Files (*.txt)|All Files (*.*)")
|
|
IF path = "" THEN
|
|
EXIT SUB
|
|
END IF
|
|
currentFile = path
|
|
FileSave
|
|
UpdateTitle
|
|
END SUB
|
|
|
|
|
|
SUB mnuNew_Click
|
|
IF AskSave() THEN
|
|
EXIT SUB
|
|
END IF
|
|
Editor.Text = ""
|
|
currentFile = ""
|
|
MarkClean
|
|
UpdateTitle
|
|
END SUB
|
|
|
|
|
|
SUB mnuOpen_Click
|
|
IF AskSave() THEN
|
|
EXIT SUB
|
|
END IF
|
|
DIM path AS STRING
|
|
path = basFileOpen("Open", "Text Files (*.txt)|All Files (*.*)")
|
|
IF path = "" THEN
|
|
EXIT SUB
|
|
END IF
|
|
DIM text AS STRING
|
|
DIM ln AS STRING
|
|
text = ""
|
|
OPEN path FOR INPUT AS #1
|
|
DO WHILE NOT EOF(1)
|
|
LINE INPUT #1, ln
|
|
IF text <> "" THEN
|
|
text = text + CHR$(10)
|
|
END IF
|
|
text = text + ln
|
|
LOOP
|
|
CLOSE #1
|
|
Editor.Text = text
|
|
currentFile = path
|
|
MarkClean
|
|
UpdateTitle
|
|
END SUB
|
|
|
|
|
|
SUB mnuSave_Click
|
|
FileSave
|
|
END SUB
|
|
|
|
|
|
SUB mnuSaveAs_Click
|
|
FileSaveAs
|
|
END SUB
|
|
|
|
|
|
SUB mnuExit_Click
|
|
Unload NotepadForm
|
|
END SUB
|
|
|
|
|
|
SUB mnuCut_Click
|
|
Editor.Cut
|
|
END SUB
|
|
|
|
|
|
SUB mnuCopy_Click
|
|
Editor.Copy
|
|
END SUB
|
|
|
|
|
|
SUB mnuPaste_Click
|
|
Editor.Paste
|
|
END SUB
|
|
|
|
|
|
SUB mnuSelAll_Click
|
|
Editor.SelectAll
|
|
END SUB
|
|
|
|
|
|
SUB NotepadForm_QueryUnload(Cancel AS Integer)
|
|
Cancel = AskSave()
|
|
END SUB
|