' Gambas class file 'Private $hSettings As Settings Private $cAction As Collection Private $aAction As CAction[] Private $hEditor As FShortcutEditor Public Sub Run(cAction As Collection) As Boolean $cAction = cAction Return Not Me.ShowModal() End Public Sub Form_Open() Dim iInd As Integer Dim hAction As CAction '$hSettings = New Settings("gb.form.mdi") Settings.ReadWindow(Me, "gb.form.mdi/FShortcut") $aAction = New CAction[] For Each hAction In $cAction If hAction.HasShortcut Then $aAction.Add(hAction) Next $aAction.Sort tvwShortcut.Rows.Count = $aAction.Count tvwShortcut.Columns.Count = 2 tvwShortcut.Columns[0].Text = ("Action") tvwShortcut.Columns[1].Text = ("Shortcut") For iInd = 0 To $aAction.Max hAction = $aAction[iInd] tvwShortcut[iInd, 0].Text = hAction.Display tvwShortcut[iInd, 0].Padding = 4 tvwShortcut[iInd, 0].Picture = hAction.Icon tvwShortcut[iInd, 1].Text = hAction.Shortcut tvwShortcut[iInd, 1].Padding = 4 Next tvwShortcut.Columns[0].Width = -1 tvwShortcut.Columns[1].Width = -1 tvwShortcut.Rows.Height = -1 $hEditor = New FShortcutEditor(Me) $hEditor.Hide $hEditor.Ignore = True End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() tvwShortcut.Save SaveShortcut Me.Close(True) End Public Sub tvwShortcut_Select() Dim hAction As CAction If btnFind.Value Then Return If tvwShortcut.Row < 0 Then Return hAction = $aAction[tvwShortcut.Row] If tvwShortcut.Column = 0 Then tvwShortcut.Column = 1 $hEditor.Define($cAction, hAction) tvwShortcut.EditWith($hEditor) End Public Sub tvwShortcut_MouseUp() tvwShortcut_Select End Private Sub SaveShortcut() Dim hAction As CAction Dim sKey As String For Each hAction In $cAction hAction.Save Next Settings.Save End Public Sub Form_Close() Settings.WriteWindow(Me, "gb.form.mdi/FShortcut") End Public Sub tvwShortcut_Save(Row As Integer, Column As Integer, Value As String) If $hEditor.BadShortcut Then Return tvwShortcut[Row, 1].Text = Value $aAction[Row].Shortcut = Value End Public Sub btnFind_Click() If btnFind.Value Then tvwShortcut.Cancel btnFind.SetFocus Endif End Public Sub btnFind_KeyPress() Dim sShortcut As String Dim iRow As Integer If btnFind.Value Then sShortcut = MShortcut.FindShortcut() If sShortcut Then For iRow = 0 To tvwShortcut.Rows.Count - 1 If tvwShortcut[iRow, 1].Text = sShortcut Then tvwShortcut.Row = iRow Break Endif Next Endif Stop Event Endif End Public Sub btnFind_LostFocus() btnFind.Value = False End Public Sub btnDefault_Click() Dim hAction As CAction Dim iRow As Integer If Message.Warning(("You are going back to the default shortcuts."), ("Go back"), ("Cancel")) = 2 Then Return tvwShortcut.Cancel For iRow = 0 To tvwShortcut.Rows.Count - 1 hAction = $aAction[iRow] hAction.Shortcut = hAction.DefaultShortcut tvwShortcut[iRow, 1].Text = hAction.Shortcut Next SaveShortcut End