From c94cde0682ff10eb22adce4fc56deb7d14a3c43d Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Fri, 27 Jul 2007 22:36:19 +0000 Subject: [PATCH] Add a popupmenu to queryhelpers which contains 2 items with shortcuts: + Delete [Del] (Deletes a snippetfile) + Help [F1] (Calls SQL help for selected keyword or function) --- source/childwin.dfm | 19 +++++++++++++++++++ source/childwin.pas | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/source/childwin.dfm b/source/childwin.dfm index 4c9d9eef..7b11250c 100644 --- a/source/childwin.dfm +++ b/source/childwin.dfm @@ -1038,6 +1038,7 @@ object MDIChild: TMDIChild Align = alClient DragMode = dmAutomatic ItemHeight = 13 + PopupMenu = popupQueryHelpers TabOrder = 1 OnClick = lboxQueryHelpersClick OnDblClick = lboxQueryHelpersDblClick @@ -2238,4 +2239,22 @@ object MDIChild: TMDIChild Caption = '-' end end + object popupQueryHelpers: TPopupMenu + Images = MainForm.ImageList1 + Left = 168 + Top = 80 + object menuDeleteSnippet: TMenuItem + Caption = 'Delete ...' + Enabled = False + ImageIndex = 23 + ShortCut = 46 + OnClick = menuDeleteSnippetClick + end + object menuHelp: TMenuItem + Caption = 'Help' + ImageIndex = 96 + ShortCut = 112 + OnClick = CallSQLHelp + end + end end diff --git a/source/childwin.pas b/source/childwin.pas index 61738add..a8037212 100644 --- a/source/childwin.pas +++ b/source/childwin.pas @@ -294,6 +294,9 @@ type menuSaveSelectionToFile: TMenuItem; menuSaveAsSnippet: TMenuItem; menuSaveSelectionAsSnippet: TMenuItem; + popupQueryHelpers: TPopupMenu; + menuDeleteSnippet: TMenuItem; + menuHelp: TMenuItem; procedure menuRenameColumnClick(Sender: TObject); procedure ListColumnsEdited(Sender: TObject; Item: TListItem; var S: string); @@ -480,6 +483,7 @@ type procedure ExecuteNonQuery(SQLQuery: String); function ExecuteQuery(query: String): TDataSet; function CreateOrGetRemoteQueryTab(sender: THandle): THandle; + procedure menuDeleteSnippetClick(Sender: TObject); function GetCalculatedLimit( Table: String ): Int64; procedure menuInsertFileAtCursorClick(Sender: TObject); procedure RunAsyncPost(ds: TDeferDataSet); @@ -5638,6 +5642,9 @@ begin lboxQueryHelpers.Items.Clear; // By default sorted alpabetically lboxQueryHelpers.Sorted := True; + // By default disable all items in popupmenu, enable them when needed + menuDeleteSnippet.Enabled := False; + menuHelp.Enabled := False; case NewTab of 0: // Cols @@ -5652,6 +5659,8 @@ begin 1: // SQL functions begin + // State of items in popupmenu + menuHelp.Enabled := True; for i := 0 to Length(MySQLFunctions) - 1 do begin // Don't display unsupported functions here @@ -5663,11 +5672,15 @@ begin 2: // SQL keywords begin + // State of items in popupmenu + menuHelp.Enabled := True; lboxQueryHelpers.Items := MYSQL_KEYWORDS; end; 3: // SQL Snippets begin + // State of items in popupmenu + menuDeleteSnippet.Enabled := True; lboxQueryHelpers.Items := getFilesFromDir( DIRNAME_SNIPPETS, '*.sql', true ); end; @@ -5806,6 +5819,38 @@ begin end; +{** + Delete a snippet file +} +procedure TMDIChild.menuDeleteSnippetClick(Sender: TObject); +var + snippetfile : String; + mayChange : Boolean; +begin + // Don't do anything if no item was selected + if lboxQueryHelpers.ItemIndex = -1 then + abort; + + snippetfile := DIRNAME_SNIPPETS + lboxQueryHelpers.Items[ lboxQueryHelpers.ItemIndex ] + '.sql'; + if MessageDlg( 'Delete snippet file? ' + CRLF + snippetfile, mtConfirmation, [mbOk, mbCancel], 0) = mrOk then + begin + Screen.Cursor := crHourGlass; + if DeleteFile( snippetfile ) then + begin + // Refresh list with snippets + mayChange := True; // Unused; satisfies callee parameter collection which is probably dictated by tabset. + tabsetQueryHelpersChange( Sender, tabsetQueryHelpers.TabIndex, mayChange ); + end + else + begin + Screen.Cursor := crDefault; + MessageDlg( 'Failed deleting ' + snippetfile, mtError, [mbOK], 0 ); + end; + Screen.Cursor := crDefault; + end; +end; + + end.