1 #Region "Microsoft.VisualBasic::9bb9fd26f202c74337bdba4b89683c21, Microsoft.VisualBasic.Core\ApplicationServices\Tools\WinForm\Extensions.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     '     Module Extensions
35     
36     '         Function: AddFilesHistory
37     
38     '         Sub: AddFileHistory, AddRowData, Clear, WriteLine
39     
40     
41     ' /********************************************************************************/
42
43 #End Region
44
45 Imports System.Runtime.CompilerServices
46 Imports Microsoft.VisualBasic.Linq
47
48 Namespace Windows.Forms
49
50     Public Module Extensions
51
52         <Extension>
53         Public Sub AddRowData(view As DataGridView, name$, ParamArray values As Object())
54             Call view.Rows.Add(values)
55             Dim count = view.RowCount
56             view.Rows(count - 1).HeaderCell.Value = name
57         End Sub
58
59         <Extension>
60         Public Sub Clear(view As DataGridView)
61             Call view.Columns.Clear()
62             Call view.Rows.Clear()
63         End Sub
64
65         <Extension>
66         Public Function AddFilesHistory(ByRef menu As ToolStripMenuItem, files As IEnumerable(Of String), invoke As Action(Of String), Optional formats As Func(Of StringString) = NothingAs Boolean
67             If formats Is Nothing Then
68                 formats = Function(path$) path$.FileName & $" ({Mid(path, 1, 30)}...)"
69             End If
70
71             For Each path$ In files.SafeQuery
72                 Dim file As New ToolStripMenuItem With {
73                     .Text = formats(path),
74                     .AutoToolTip = True,
75                     .ToolTipText = path
76                 }
77
78                 AddHandler file.Click,
79                     Sub(sender, arg)
80                         Call invoke(path)
81                     End Sub
82
83                 Call menu.DropDownItems.Add(file)
84             Next
85
86             Return True
87         End Function
88
89         ''' <summary>
90         ''' 
91         ''' </summary>
92         ''' <param name="files"></param>
93         ''' <param name="path$"></param>
94         ''' <param name="latestFirst">最近使用的文件被放在列表的头部,否则直接放在列表的尾部</param>
95         ''' 
96         <Extension>
97         Public Sub AddFileHistory(ByRef files As List(Of String), path$, Optional latestFirst As Boolean = True)
98             If files Is Nothing Then
99                 files = New List(Of String)
100             End If
101
102             Dim n As Integer = files.IndexOf(path)
103
104             If n <> -1 Then
105                 Call files.RemoveAt(n)
106             End If
107
108             If latestFirst Then
109                 Call files.Insert(Scan0, path)
110             Else
111                 Call files.Add(path)
112             End If
113         End Sub
114
115         <Extension>
116         Public Sub WriteLine(tb As TextBox, s$)
117             Call tb.AppendText(s & vbCrLf)
118         End Sub
119     End Module
120 End Namespace