diff --git a/src/Main.bas b/src/Main.bas index 1479ac21..04088ad2 100644 --- a/src/Main.bas +++ b/src/Main.bas @@ -7371,6 +7371,34 @@ Sub frmMain_ActivateApp(ByRef Sender As Form) #endif End Sub +Sub SaveMRU + Dim i As Integer + For i = 0 To MRUFiles.Count - 1 + iniSettings.WriteString("MRUFiles", "MRUFile_0" & WStr(i), MRUFiles.Item(i)) + Next + For i = i To miRecentMax + iniSettings.KeyRemove("MRUFiles", "MRUFile_0" & WStr(i)) + Next + For i = 0 To MRUFolders.Count - 1 + iniSettings.WriteString("MRUFolders", "MRUFolder_0" & WStr(i), MRUFolders.Item(i)) + Next + For i = i To miRecentMax + iniSettings.KeyRemove("MRUFolders", "MRUFolder_0" & WStr(i)) + Next + For i = 0 To MRUProjects.Count - 1 + iniSettings.WriteString("MRUProjects", "MRUProject_0" & WStr(i), MRUProjects.Item(i)) + Next + For i = i To miRecentMax + iniSettings.KeyRemove("MRUProjects", "MRUProject_0" & WStr(i)) + Next + For i = 0 To MRUSessions.Count - 1 + iniSettings.WriteString("MRUSessions", "MRUSession_0" & WStr(i), MRUSessions.Item(i)) + Next + For i = i To miRecentMax + iniSettings.KeyRemove("MRUSessions", "MRUSession_0" & WStr(i)) + Next +End Sub + Sub frmMain_Close(ByRef Sender As Form, ByRef Action As Integer) On Error Goto ErrorHandler FormClosing = True @@ -7457,31 +7485,7 @@ Sub frmMain_Close(ByRef Sender As Form, ByRef Action As Integer) iniSettings.WriteInteger("MainWindow", "ShowTipoftheDayIndex", ShowTipoftheDayIndex) iniSettings.WriteBool("MainWindow", "ShowTipoftheDay", ShowTipoftheDay) - Dim i As Integer - For i = 0 To MRUFiles.Count - 1 - iniSettings.WriteString("MRUFiles", "MRUFile_0" & WStr(i), MRUFiles.Item(i)) - Next - For i = i To miRecentMax - iniSettings.KeyRemove("MRUFiles", "MRUFile_0" & WStr(i)) - Next - For i = 0 To MRUFolders.Count - 1 - iniSettings.WriteString("MRUFolders", "MRUFolder_0" & WStr(i), MRUFolders.Item(i)) - Next - For i = i To miRecentMax - iniSettings.KeyRemove("MRUFolders", "MRUFolder_0" & WStr(i)) - Next - For i = 0 To MRUProjects.Count - 1 - iniSettings.WriteString("MRUProjects", "MRUProject_0" & WStr(i), MRUProjects.Item(i)) - Next - For i = i To miRecentMax - iniSettings.KeyRemove("MRUProjects", "MRUProject_0" & WStr(i)) - Next - For i = 0 To MRUSessions.Count - 1 - iniSettings.WriteString("MRUSessions", "MRUSession_0" & WStr(i), MRUSessions.Item(i)) - Next - For i = i To miRecentMax - iniSettings.KeyRemove("MRUSessions", "MRUSession_0" & WStr(i)) - Next + SaveMRU iniSettings.WriteString("MainWindow", "RecentFiles", *RecentFiles) iniSettings.WriteString("MainWindow", "RecentFile", *RecentFile) diff --git a/src/Main.bi b/src/Main.bi index 40909275..cb609ce5 100644 --- a/src/Main.bi +++ b/src/Main.bi @@ -179,6 +179,7 @@ Declare Sub AddMRUSession(ByRef FileName As WString) ' Declare Sub AddFromTemplates Declare Sub AddFilesToProject Declare Sub RemoveFileFromProject +Declare Sub SaveMRU Declare Sub RestoreStatusText Declare Sub OpenUrl(ByVal url As String) Declare Function AddProject(ByRef FileName As WString = "", pFilesList As WStringList Ptr = 0, tn As TreeNode Ptr = 0, bNew As Boolean = False) As TreeNode Ptr diff --git a/src/frmPath.bi b/src/frmPath.bi index 363dad97..360a5345 100644 --- a/src/frmPath.bi +++ b/src/frmPath.bi @@ -32,7 +32,7 @@ Using My.Sys.Forms Dim As Label lblVersion, lblPath, lblCommandLine, lblExtensions Dim As OpenFileDialog OpenD Dim As FolderBrowserDialog BrowseD - Dim As Boolean ChooseFolder, SetFileNameToVersion, WithoutCommandLine, WithExtensions, WithType, WithKey + Dim As Boolean ChooseFolder, SetFileNameToVersion, WithoutVersion, WithoutCommandLine, WithExtensions, WithType, WithKey Dim As UString ExeFileName Dim As ComboBoxEdit cboType End Type diff --git a/src/frmPath.frm b/src/frmPath.frm index 70fd21bf..e85c1e51 100644 --- a/src/frmPath.frm +++ b/src/frmPath.frm @@ -217,8 +217,8 @@ Private Sub frmPath.Form_Show_(ByRef Sender As Form) *Cast(frmPath Ptr, Sender.Designer).Form_Show(Sender) End Sub Private Sub frmPath.Form_Show(ByRef Sender As Form) - lblVersion.Visible = Not ChooseFolder - txtVersion.Visible = Not ChooseFolder + lblVersion.Visible = (Not WithoutVersion) AndAlso Not ChooseFolder + txtVersion.Visible = (Not WithoutVersion) AndAlso Not ChooseFolder lblCommandLine.Visible = Not (WithoutCommandLine OrElse ChooseFolder) txtCommandLine.Visible = Not (WithoutCommandLine OrElse ChooseFolder OrElse WithType) lblExtensions.Visible = WithExtensions @@ -234,6 +234,7 @@ Private Sub frmPath.Form_Close_(ByRef Sender As Form, ByRef Action As Integer) End Sub Private Sub frmPath.Form_Close(ByRef Sender As Form, ByRef Action As Integer) ChooseFolder = False + WithoutVersion = False WithoutCommandLine = False WithExtensions = False WithType = False diff --git a/src/frmTemplates.bi b/src/frmTemplates.bi index 7c8e87b3..e605f638 100644 --- a/src/frmTemplates.bi +++ b/src/frmTemplates.bi @@ -38,18 +38,26 @@ Declare Sub cmdSaveLocation_Click(ByRef Sender As Control) Declare Static Sub lvTemplates_SelectedItemChanged_(ByRef Sender As ListView, ByVal ItemIndex As Integer) Declare Sub lvTemplates_SelectedItemChanged(ByRef Sender As ListView, ByVal ItemIndex As Integer) + Declare Static Sub cmdClear_Click_(ByRef Sender As Control) + Declare Sub cmdClear_Click(ByRef Sender As Control) + Declare Static Sub cmdRemove_Click_(ByRef Sender As Control) + Declare Sub cmdRemove_Click(ByRef Sender As Control) + Declare Static Sub cmdChange_Click_(ByRef Sender As Control) + Declare Sub cmdChange_Click(ByRef Sender As Control) + Declare Static Sub cmdAdd_Click_(ByRef Sender As Control) + Declare Sub cmdAdd_Click(ByRef Sender As Control) Declare Constructor Dim As TabControl TabControl1 Dim As TabPage tpNew, tpExisting, tpRecent Dim As TreeView tvTemplates, tvRecent Dim As ListView lvTemplates, lvRecent - Dim As CommandButton cmdOK, cmdCancel, cmdSaveLocation + Dim As CommandButton cmdOK, cmdCancel, cmdSaveLocation, cmdClear, cmdRemove, cmdChange, cmdAdd Dim As WStringList Templates - Dim As Boolean OnlyFiles + Dim As Boolean OnlyFiles, RecentChanged Dim As UString SelectedTemplate, SelectedFile, SelectedFolder Dim As OpenFileControl OpenFileControl1 - Dim As Panel pnlBottom, pnlSaveLocation + Dim As Panel pnlBottom, pnlSaveLocation, pnlRecent Dim As Label lblSaveLocation Dim As TextBox txtSaveLocation End Type diff --git a/src/frmTemplates.frm b/src/frmTemplates.frm index 3a24486b..d948b23a 100644 --- a/src/frmTemplates.frm +++ b/src/frmTemplates.frm @@ -186,7 +186,7 @@ .Name = "pnlSaveLocation" .Text = "Panel1" .TabIndex = 12 - .SetBounds 0, -1, 390, 30 + .SetBounds 10, -1, 410, 30 .Visible = False .Parent = @pnlBottom End With @@ -218,8 +218,89 @@ .OnClick = @cmdSaveLocation_Click_ .Parent = @pnlSaveLocation End With + ' pnlRecent + With pnlRecent + .Name = "pnlRecent" + .Text = "Panel1" + .TabIndex = 16 + .SetBounds 10, 0, 420, 30 + .Designer = @This + .Parent = @pnlBottom + End With + ' cmdAdd + With cmdAdd + .Name = "cmdAdd" + .Text = ML("Add") + .TabIndex = 20 + .Align = DockStyle.alLeft + .ExtraMargins.Right = 10 + .ExtraMargins.Bottom = 10 + .Caption = ML("Add") + .SetBounds 0, 0, 88, 20 + .Designer = @This + .OnClick = @cmdAdd_Click_ + .Parent = @pnlRecent + End With + ' cmdChange + With cmdChange + .Name = "cmdChange" + .Text = ML("Change") + .TabIndex = 19 + .Align = DockStyle.alLeft + .ExtraMargins.Right = 10 + .ExtraMargins.Bottom = 10 + .Caption = ML("Change") + .SetBounds 98, 0, 88, 20 + .Designer = @This + .OnClick = @cmdChange_Click_ + .Parent = @pnlRecent + End With + ' cmdRemove + With cmdRemove + .Name = "cmdRemove" + .Text = ML("Remove") + .TabIndex = 18 + .Align = DockStyle.alLeft + .ExtraMargins.Right = 10 + .ExtraMargins.Bottom = 10 + .Caption = ML("Remove") + .SetBounds 196, 0, 88, 20 + .Designer = @This + .OnClick = @cmdRemove_Click_ + .Parent = @pnlRecent + End With + ' cmdClear + With cmdClear + .Name = "cmdClear" + .Text = ML("Clear") + .TabIndex = 17 + .Align = DockStyle.alLeft + .ExtraMargins.Right = 10 + .ExtraMargins.Bottom = 10 + .Caption = ML("Clear") + .SetBounds 0, 0, 88, 20 + .Designer = @This + .OnClick = @cmdClear_Click_ + .Parent = @pnlRecent + End With End Constructor + Private Sub frmTemplates.cmdAdd_Click_(ByRef Sender As Control) + *Cast(frmTemplates Ptr, Sender.Designer).cmdAdd_Click(Sender) + End Sub + + Private Sub frmTemplates.cmdChange_Click_(ByRef Sender As Control) + *Cast(frmTemplates Ptr, Sender.Designer).cmdChange_Click(Sender) + End Sub + + Private Sub frmTemplates.cmdRemove_Click_(ByRef Sender As Control) + *Cast(frmTemplates Ptr, Sender.Designer).cmdRemove_Click(Sender) + End Sub + + Private Sub frmTemplates.cmdClear_Click_(ByRef Sender As Control) + *Cast(frmTemplates Ptr, Sender.Designer).cmdClear_Click(Sender) + End Sub + Private Sub frmTemplates.TabControl1_SelChange_(ByRef Sender As TabControl, NewIndex As Integer) *Cast(frmTemplates Ptr, Sender.Designer).TabControl1_SelChange(Sender, NewIndex) End Sub @@ -302,6 +383,9 @@ Private Sub frmTemplates.cmdOK_Click(ByRef Sender As Control) Me.BringToFront End If End Select + If RecentChanged Then + SaveMRU + End If End Sub Private Sub frmTemplates.tvTemplates_SelChanged_(ByRef Sender As TreeView, ByRef Item As TreeNode) @@ -366,6 +450,7 @@ Private Sub frmTemplates.Form_Show(ByRef Sender As Form) tvTemplates.Nodes.Add ML("Files"), "Files" tvTemplates_SelChanged tvTemplates, *tvTemplates.Nodes.Item(0) tvRecent_SelChanged tvRecent, *tvRecent.Nodes.Item(0) + RecentChanged = False TabControl1.SelectedTabIndex = 0 'This.Width = This.Width + 1 Var n = 0 @@ -426,6 +511,8 @@ Private Sub frmTemplates.TabControl1_SelChange(ByRef Sender As TabControl, NewIn 'OpenFileControl1.SetBounds TabControl1.Left, TabControl1.Top, TabControl1.Width, TabControl1.Height 'TabControl1.RequestAlign 'End If + pnlSaveLocation.Visible = lvTemplates.SelectedItemIndex >= 0 AndAlso Templates.Object(lvTemplates.SelectedItemIndex) > 0 AndAlso TabControl1.SelectedTabIndex = 0 + pnlRecent.Visible = TabControl1.SelectedTabIndex = 2 End Sub Private Sub frmTemplates.cmdSaveLocation_Click_(ByRef Sender As Control) @@ -447,3 +534,122 @@ Private Sub frmTemplates.lvTemplates_SelectedItemChanged(ByRef Sender As ListVie pnlSaveLocation.Visible = Templates.Object(lvTemplates.SelectedItemIndex) > 0 End If End Sub + +Private Sub frmTemplates.cmdClear_Click(ByRef Sender As Control) + Dim NodeIdx As Integer = -1 + If tvRecent.SelectedNode <> 0 Then NodeIdx = tvRecent.SelectedNode->Index + If NodeIdx = 0 Then + miRecentSessions->Clear + miRecentSessions->Enabled = False + MRUSessions.Clear + ElseIf NodeIdx = 1 Then + miRecentFolders->Clear + miRecentFolders->Enabled = False + MRUFolders.Clear + ElseIf NodeIdx = 2 Then + miRecentProjects->Clear + miRecentProjects->Enabled = False + MRUProjects.Clear + ElseIf NodeIdx = 3 Then + miRecentFiles->Clear + miRecentFiles->Enabled = False + MRUFiles.Clear + End If + lvRecent.ListItems.Clear + RecentChanged = True +End Sub + +Private Sub frmTemplates.cmdRemove_Click(ByRef Sender As Control) + Var Idx = lvRecent.SelectedItemIndex + Dim NodeIdx As Integer = -1 + If tvRecent.SelectedNode <> 0 Then NodeIdx = tvRecent.SelectedNode->Index + If Idx <> -1 Then + If NodeIdx <= 0 Then + miRecentSessions->Remove miRecentSessions->Item(Idx) + MRUSessions.Remove Idx + ElseIf NodeIdx = 1 Then + miRecentFolders->Remove miRecentFolders->Item(Idx) + MRUFolders.Remove Idx + ElseIf NodeIdx = 2 Then + miRecentProjects->Remove miRecentProjects->Item(Idx) + MRUProjects.Remove Idx + ElseIf NodeIdx = 3 Then + miRecentFiles->Remove miRecentFiles->Item(Idx) + MRUFiles.Remove Idx + End If + lvRecent.ListItems.Remove Idx + RecentChanged = True + End If +End Sub + +Private Sub frmTemplates.cmdChange_Click(ByRef Sender As Control) + Var Idx = lvRecent.SelectedItemIndex + Dim NodeIdx As Integer = -1 + If tvRecent.SelectedNode <> 0 Then NodeIdx = tvRecent.SelectedNode->Index + If Idx <> -1 Then + pfPath->WithoutVersion = True + pfPath->WithoutCommandLine = True + If NodeIdx = 1 Then + pfPath->ChooseFolder = True + End If + pfPath->txtPath.Text = lvRecent.SelectedItem->Text(1) + Dim As UString Path + If pfPath->ShowModal() = ModalResults.OK Then + Path = pfPath->txtPath.Text + Else + Exit Sub + End If + If StartsWith(Path, "." & Slash) Then Path = Mid(Path, 3) + If NodeIdx <= 0 Then + miRecentSessions->Item(Idx)->Caption = Path + MRUSessions.Item(Idx) = Path + ElseIf NodeIdx = 1 Then + miRecentFolders->Item(Idx)->Caption = Path + MRUFolders.Item(Idx) = Path + ElseIf NodeIdx = 2 Then + miRecentProjects->Item(Idx)->Caption = Path + MRUProjects.Item(Idx) = Path + ElseIf NodeIdx = 3 Then + miRecentFiles->Item(Idx)->Caption = Path + MRUFiles.Item(Idx) = Path + End If + lvRecent.ListItems.Item(Idx)->Text(0) = GetFileName(Path) + lvRecent.ListItems.Item(Idx)->Text(1) = Path + lvRecent.ListItems.Item(Idx)->ImageKey = GetIconName(Path) + RecentChanged = True + End If +End Sub + +Private Sub frmTemplates.cmdAdd_Click(ByRef Sender As Control) + Dim NodeIdx As Integer = -1 + If tvRecent.SelectedNode <> 0 Then NodeIdx = tvRecent.SelectedNode->Index + pfPath->WithoutVersion = True + pfPath->WithoutCommandLine = True + If NodeIdx = 1 Then + pfPath->ChooseFolder = True + End If + pfPath->txtPath.Text = "" + Dim As UString Path + If pfPath->ShowModal() = ModalResults.OK Then + Path = pfPath->txtPath.Text + Else + Exit Sub + End If + If StartsWith(Path, "." & Slash) Then Path = Mid(Path, 3) + If NodeIdx <= 0 Then + miRecentSessions->Add Path, "", , @mClickMRU, , 0 + MRUSessions.Insert 0, Path + ElseIf NodeIdx = 1 Then + miRecentFolders->Add Path, "", , @mClickMRU, , 0 + MRUFolders.Insert 0, Path + ElseIf NodeIdx = 2 Then + miRecentProjects->Add Path, "", , @mClickMRU, , 0 + MRUProjects.Insert 0, Path + ElseIf NodeIdx = 3 Then + miRecentFiles->Add Path, "", , @mClickMRU, , 0 + MRUFiles.Insert 0, Path + End If + Var Item = lvRecent.ListItems.Add(GetFileName(Path), GetIconName(Path), , , 0) + Item->Text(1) = Path + RecentChanged = True +End Sub