From 1da6889f4fb391deb51bffed423827c23be12aa2 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Thu, 7 May 2015 10:24:26 +0200 Subject: [PATCH] libman editor, btn to register an entry using the project parameters --- src/ce_libmaneditor.lfm | 15 ++++++- src/ce_libmaneditor.pas | 88 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 99 insertions(+), 4 deletions(-) diff --git a/src/ce_libmaneditor.lfm b/src/ce_libmaneditor.lfm index 7e7d3ccc..a484b9c6 100644 --- a/src/ce_libmaneditor.lfm +++ b/src/ce_libmaneditor.lfm @@ -113,6 +113,17 @@ inherited CELibManEditorWidget: TCELibManEditorWidget Spacing = 0 TabOrder = 7 end + object btnReg: TBitBtn + Left = 112 + Height = 24 + Hint = 'register from the current project' + Top = 0 + Width = 28 + Align = alLeft + OnClick = btnRegClick + Spacing = 0 + TabOrder = 8 + end end object List: TListView[1] Left = 4 @@ -130,12 +141,12 @@ inherited CELibManEditorWidget: TCELibManEditorWidget item AutoSize = True Caption = 'Library file' - Width = 67 + Width = 82 end item AutoSize = True Caption = 'Sources root' - Width = 78 + Width = 95 end> GridLines = True HideSelection = False diff --git a/src/ce_libmaneditor.pas b/src/ce_libmaneditor.pas index 8c68f23b..6329e8d9 100644 --- a/src/ce_libmaneditor.pas +++ b/src/ce_libmaneditor.pas @@ -6,13 +6,17 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - Menus, ComCtrls, Buttons, ce_widget; + Menus, ComCtrls, Buttons, ce_widget, ce_interfaces, ce_project, ce_dmdwrap, + ce_common; type - TCELibManEditorWidget = class(TCEWidget) + { TCELibManEditorWidget } + + TCELibManEditorWidget = class(TCEWidget, ICEProjectObserver) btnMoveDown: TBitBtn; btnMoveUp: TBitBtn; + btnReg: TBitBtn; btnSelFile: TBitBtn; btnAddLib: TBitBtn; btnRemLib: TBitBtn; @@ -23,6 +27,7 @@ type Panel1: TPanel; procedure btnAddLibClick(Sender: TObject); procedure btnEditAliasClick(Sender: TObject); + procedure btnRegClick(Sender: TObject); procedure btnRemLibClick(Sender: TObject); procedure btnSelFileClick(Sender: TObject); procedure btnSelfoldOfFilesClick(Sender: TObject); @@ -31,6 +36,14 @@ type procedure btnMoveDownClick(Sender: TObject); procedure ListEdited(Sender: TObject; Item: TListItem; var AValue: string); private + fProj: TCEProject; + procedure updateRegistrable; + procedure projNew(aProject: TCEProject); + procedure projChanged(aProject: TCEProject); + procedure projClosing(aProject: TCEProject); + procedure projFocused(aProject: TCEProject); + procedure projCompiling(aProject: TCEProject); + // procedure dataToGrid; procedure gridToData; protected @@ -72,11 +85,48 @@ begin btnSelfoldOfFiles.Glyph.Assign(png); png.LoadFromLazarusResource('folder_add'); btnSelRoot.Glyph.Assign(png); + png.LoadFromLazarusResource('book_link'); + btnReg.Glyph.Assign(png); finally png.Free; end; end; +procedure TCELibManEditorWidget.updateRegistrable; +begin + btnReg.Enabled := (fProj <> nil) and + (fProj.currentConfiguration.outputOptions.binaryKind = staticlib) and + (FileExists(fProj.Filename)) +end; + +procedure TCELibManEditorWidget.projNew(aProject: TCEProject); +begin + fProj := aProject; +end; + +procedure TCELibManEditorWidget.projChanged(aProject: TCEProject); +begin + updateRegistrable; +end; + +procedure TCELibManEditorWidget.projClosing(aProject: TCEProject); +begin + if aProject <> fProj then exit; + fProj := nil; + updateRegistrable; +end; + +procedure TCELibManEditorWidget.projFocused(aProject: TCEProject); +begin + fProj := aProject; + updateRegistrable; +end; + +procedure TCELibManEditorWidget.projCompiling(aProject: TCEProject); +begin +end; + + procedure TCELibManEditorWidget.ListEdited(Sender: TObject; Item: TListItem; var AValue: string); begin gridToData; @@ -106,6 +156,40 @@ begin gridToData; end; +procedure TCELibManEditorWidget.btnRegClick(Sender: TObject); +var + str: TStringList; + root: string; + i: integer; +begin + if fProj = nil then exit; + // + str := TStringList.Create; + try + for i := 0 to fProj.Sources.Count-1 do + str.Add(fProj.getAbsoluteSourceName(i)); + root := commonFolder(str); + root := ExtractFileDir(root); + if root = '' then + exit; + // + with List.Items.Add do + begin + Caption := ExtractFileNameOnly(fProj.Filename); + if ExtractFileExt(fProj.outputFilename) <> libExt then + SubItems.add(fProj.outputFilename + libExt) + else + SubItems.add(fProj.outputFilename); + SubItems.add(root); + Selected:= true; + end; + SetFocus; + gridToData; + finally + str.free; + end; +end; + procedure TCELibManEditorWidget.btnRemLibClick(Sender: TObject); begin if List.Selected = nil then