mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 11:19:26 +02:00
IDE: many improvements for todolist from Gerard
git-svn-id: trunk@13010 -
This commit is contained in:
parent
65ae8c2e56
commit
42edb792e6
@ -2295,11 +2295,15 @@ resourcestring
|
||||
lisTodoListGotoLine='Goto selected source line';
|
||||
lisTodoListPrintList='Print todo items';
|
||||
lisToDoListOptions='ToDo options...';
|
||||
lisToDoLDescription = 'Description';
|
||||
lisCTInsertMacro = 'Insert Macro';
|
||||
lisToDoLFile = 'File';
|
||||
lisToDoLLine = 'Line';
|
||||
|
||||
lisToDoLDone = 'Done';
|
||||
lisToDoLDescription = 'Description';
|
||||
lisToDoLPriority = 'Priority';
|
||||
lisToDoLFile = 'Module';
|
||||
lisToDoLLine = 'Line';
|
||||
lisToDoLOwner = 'Owner';
|
||||
listToDoLCategory = 'Category';
|
||||
|
||||
// packages
|
||||
lisPkgFileTypeUnit = 'Unit';
|
||||
lisPkgFileTypeVirtualUnit = 'Virtual Unit';
|
||||
|
@ -1,47 +1,94 @@
|
||||
object TodoDialog: TTodoDialog
|
||||
Left = 354
|
||||
Height = 257
|
||||
Top = 215
|
||||
Width = 400
|
||||
HorzScrollBar.Page = 399
|
||||
VertScrollBar.Page = 256
|
||||
Left = 342
|
||||
Height = 248
|
||||
Top = 202
|
||||
Width = 483
|
||||
HorzScrollBar.Page = 482
|
||||
VertScrollBar.Page = 247
|
||||
ActiveControl = OkButton
|
||||
Caption = 'Insert Todo'
|
||||
ClientHeight = 257
|
||||
ClientWidth = 400
|
||||
ClientHeight = 248
|
||||
ClientWidth = 483
|
||||
OnShow = FormShow
|
||||
object TodoLabel: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Left = 8
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 30
|
||||
Width = 27
|
||||
Caption = 'Text:'
|
||||
FocusControl = TodoMemo
|
||||
ParentColor = False
|
||||
end
|
||||
object PriorityLabel: TLabel
|
||||
Left = 10
|
||||
Height = 14
|
||||
Top = 167
|
||||
Width = 35
|
||||
Caption = 'Priority'
|
||||
ParentColor = False
|
||||
end
|
||||
object OwnerLabel: TLabel
|
||||
Left = 56
|
||||
Height = 14
|
||||
Top = 168
|
||||
Width = 33
|
||||
Caption = 'Owner'
|
||||
ParentColor = False
|
||||
end
|
||||
object CategoryLabel: TLabel
|
||||
Left = 248
|
||||
Height = 14
|
||||
Top = 168
|
||||
Width = 46
|
||||
Caption = 'Category'
|
||||
ParentColor = False
|
||||
end
|
||||
object OkButton: TButton
|
||||
Left = 112
|
||||
Left = 312
|
||||
Height = 25
|
||||
Top = 208
|
||||
Top = 216
|
||||
Width = 75
|
||||
Caption = 'Ok'
|
||||
ModalResult = 1
|
||||
TabOrder = 1
|
||||
end
|
||||
object CancelButton: TButton
|
||||
Left = 208
|
||||
Left = 397
|
||||
Height = 25
|
||||
Top = 208
|
||||
Top = 216
|
||||
Width = 75
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 2
|
||||
end
|
||||
object TodoMemo: TMemo
|
||||
Left = 16
|
||||
Height = 168
|
||||
Left = 8
|
||||
Height = 136
|
||||
Top = 24
|
||||
Width = 368
|
||||
Width = 464
|
||||
ScrollBars = ssAutoBoth
|
||||
TabOrder = 0
|
||||
end
|
||||
object PriorityEdit: TEdit
|
||||
Left = 8
|
||||
Height = 23
|
||||
Top = 181
|
||||
Width = 38
|
||||
OnKeyPress = PriorityEditKeyPress
|
||||
TabOrder = 3
|
||||
end
|
||||
object OwnerEdit: TEdit
|
||||
Left = 56
|
||||
Height = 23
|
||||
Top = 181
|
||||
Width = 182
|
||||
TabOrder = 4
|
||||
end
|
||||
object CategoryEdit: TEdit
|
||||
Left = 248
|
||||
Height = 23
|
||||
Top = 181
|
||||
Width = 224
|
||||
TabOrder = 5
|
||||
end
|
||||
end
|
||||
|
@ -1,16 +1,26 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TTodoDialog','FORMDATA',[
|
||||
'TPF0'#11'TTodoDialog'#10'TodoDialog'#4'Left'#3'b'#1#6'Height'#3#1#1#3'Top'#3
|
||||
+#215#0#5'Width'#3#144#1#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page'
|
||||
+#3#0#1#13'ActiveControl'#7#8'OkButton'#7'Caption'#6#11'Insert Todo'#12'Clien'
|
||||
+'tHeight'#3#1#1#11'ClientWidth'#3#144#1#0#6'TLabel'#9'TodoLabel'#4'Left'#2#16
|
||||
+#6'Height'#2#20#3'Top'#2#8#5'Width'#2#30#7'Caption'#6#5'Text:'#12'FocusContr'
|
||||
+'ol'#7#8'TodoMemo'#11'ParentColor'#8#0#0#7'TButton'#8'OkButton'#4'Left'#2'p'
|
||||
+#6'Height'#2#25#3'Top'#3#208#0#5'Width'#2'K'#7'Caption'#6#2'Ok'#11'ModalResu'
|
||||
+'lt'#2#1#8'TabOrder'#2#1#0#0#7'TButton'#12'CancelButton'#4'Left'#3#208#0#6'H'
|
||||
+'eight'#2#25#3'Top'#3#208#0#5'Width'#2'K'#7'Caption'#6#6'Cancel'#11'ModalRes'
|
||||
+'ult'#2#2#8'TabOrder'#2#2#0#0#5'TMemo'#8'TodoMemo'#4'Left'#2#16#6'Height'#3
|
||||
+#168#0#3'Top'#2#24#5'Width'#3'p'#1#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrde'
|
||||
+'r'#2#0#0#0#0
|
||||
'TPF0'#11'TTodoDialog'#10'TodoDialog'#4'Left'#3'V'#1#6'Height'#3#248#0#3'Top'
|
||||
+#3#202#0#5'Width'#3#227#1#18'HorzScrollBar.Page'#3#226#1#18'VertScrollBar.Pa'
|
||||
+'ge'#3#247#0#13'ActiveControl'#7#8'OkButton'#7'Caption'#6#11'Insert Todo'#12
|
||||
+'ClientHeight'#3#248#0#11'ClientWidth'#3#227#1#6'OnShow'#7#8'FormShow'#0#6'T'
|
||||
+'Label'#9'TodoLabel'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#8#5'Width'#2#27#7'C'
|
||||
+'aption'#6#5'Text:'#12'FocusControl'#7#8'TodoMemo'#11'ParentColor'#8#0#0#6'T'
|
||||
+'Label'#13'PriorityLabel'#4'Left'#2#10#6'Height'#2#14#3'Top'#3#167#0#5'Width'
|
||||
+#2'#'#7'Caption'#6#8'Priority'#11'ParentColor'#8#0#0#6'TLabel'#10'OwnerLabel'
|
||||
+#4'Left'#2'8'#6'Height'#2#14#3'Top'#3#168#0#5'Width'#2'!'#7'Caption'#6#5'Own'
|
||||
+'er'#11'ParentColor'#8#0#0#6'TLabel'#13'CategoryLabel'#4'Left'#3#248#0#6'Hei'
|
||||
+'ght'#2#14#3'Top'#3#168#0#5'Width'#2'.'#7'Caption'#6#8'Category'#11'ParentCo'
|
||||
+'lor'#8#0#0#7'TButton'#8'OkButton'#4'Left'#3'8'#1#6'Height'#2#25#3'Top'#3#216
|
||||
+#0#5'Width'#2'K'#7'Caption'#6#2'Ok'#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7
|
||||
+'TButton'#12'CancelButton'#4'Left'#3#141#1#6'Height'#2#25#3'Top'#3#216#0#5'W'
|
||||
+'idth'#2'K'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#5
|
||||
+'TMemo'#8'TodoMemo'#4'Left'#2#8#6'Height'#3#136#0#3'Top'#2#24#5'Width'#3#208
|
||||
+#1#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#0#0#0#5'TEdit'#12'PriorityE'
|
||||
+'dit'#4'Left'#2#8#6'Height'#2#23#3'Top'#3#181#0#5'Width'#2'&'#10'OnKeyPress'
|
||||
+#7#20'PriorityEditKeyPress'#8'TabOrder'#2#3#0#0#5'TEdit'#9'OwnerEdit'#4'Left'
|
||||
+#2'8'#6'Height'#2#23#3'Top'#3#181#0#5'Width'#3#182#0#8'TabOrder'#2#4#0#0#5'T'
|
||||
+'Edit'#12'CategoryEdit'#4'Left'#3#248#0#6'Height'#2#23#3'Top'#3#181#0#5'Widt'
|
||||
+'h'#3#224#0#8'TabOrder'#2#5#0#0#0
|
||||
]);
|
||||
|
@ -18,6 +18,10 @@
|
||||
* *
|
||||
***************************************************************************
|
||||
}
|
||||
(*
|
||||
Modified by Gerard Visent <gerardusmercator@gmail.com> on 5/11/2007
|
||||
- Extended to allow adding Owner, Category and priority
|
||||
*)
|
||||
unit ToDoDlg;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
@ -25,37 +29,72 @@ unit ToDoDlg;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, TodoList;
|
||||
|
||||
type
|
||||
|
||||
{ TTodoDialog }
|
||||
|
||||
TTodoDialog = class(TForm)
|
||||
OwnerEdit: TEdit;
|
||||
CategoryEdit: TEdit;
|
||||
CategoryLabel: TLabel;
|
||||
PriorityEdit: TEdit;
|
||||
PriorityLabel: TLabel;
|
||||
OwnerLabel: TLabel;
|
||||
OkButton: TButton;
|
||||
CancelButton: TButton;
|
||||
TodoLabel: TLabel;
|
||||
TodoMemo: TMemo;
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure PriorityEditKeyPress(Sender: TObject; var Key: char);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
Function ExecuteTodoDialog: TTodoItem;
|
||||
|
||||
function ShowTodoDialog(TodoMessage: TStrings): Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
{ TTodoDialog }
|
||||
|
||||
function ShowTodoDialog(TodoMessage: TStrings): Boolean;
|
||||
var
|
||||
TodoDialog: TTodoDialog;
|
||||
|
||||
{ TTodoDialog }
|
||||
|
||||
procedure TTodoDialog.PriorityEditKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
TodoDialog:=TTodoDialog.Create(nil);
|
||||
Result:=TodoDialog.ShowModal = mrOk;
|
||||
If Result and (TodoMessage <> nil) Then TodoMessage.Assign(TodoDialog.TodoMemo.Lines);
|
||||
TodoDialog.Free;
|
||||
if not (Key in ['0'..'9']) then
|
||||
Key := #0;
|
||||
end;
|
||||
|
||||
procedure TTodoDialog.FormShow(Sender: TObject);
|
||||
begin
|
||||
TodoMemo.SetFocus;
|
||||
end;
|
||||
|
||||
function ExecuteTodoDialog: TTodoItem;
|
||||
var
|
||||
aTodoDialog: TTodoDialog;
|
||||
aPriority: integer;
|
||||
begin
|
||||
Result := nil;
|
||||
aTodoDialog := TTodoDialog.Create(nil);
|
||||
aTodoDialog.ShowModal;
|
||||
if aTodoDialog.ModalResult = mrOk then
|
||||
begin
|
||||
Result := TTodoItem.Create;
|
||||
Result.AltNotation := True; // TODO: Should be an option in the future
|
||||
Result.Category := aTodoDialog.CategoryEdit.Text;
|
||||
Result.Done := False;
|
||||
Result.Owner := aTodoDialog.OwnerEdit.Text;
|
||||
Result.Text := aTodoDialog.TodoMemo.Text;
|
||||
if TryStrToInt(aTodoDialog.PriorityEdit.Text, aPriority) then
|
||||
Result.Priority := aPriority;
|
||||
end;
|
||||
aTodoDialog.Release;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
261
ide/todolist.lfm
261
ide/todolist.lfm
@ -1,71 +1,86 @@
|
||||
object frmTodo: TfrmTodo
|
||||
Left = 313
|
||||
Left = 177
|
||||
Height = 300
|
||||
Top = 610
|
||||
Width = 500
|
||||
HorzScrollBar.Page = 499
|
||||
Top = 209
|
||||
Width = 643
|
||||
HorzScrollBar.Page = 642
|
||||
VertScrollBar.Page = 299
|
||||
ActiveControl = lvTodo
|
||||
Caption = 'frmTodo'
|
||||
ClientHeight = 300
|
||||
ClientWidth = 643
|
||||
KeyPreview = True
|
||||
OnCreate = FormCreate
|
||||
OnKeyDown = FormKeyDown
|
||||
Position = poScreenCenter
|
||||
object StatusBar: TStatusBar
|
||||
Height = 20
|
||||
Top = 280
|
||||
Width = 500
|
||||
Height = 23
|
||||
Top = 277
|
||||
Width = 643
|
||||
Panels = <>
|
||||
end
|
||||
object lvTodo: TListView
|
||||
Height = 232
|
||||
Height = 229
|
||||
Top = 48
|
||||
Width = 500
|
||||
Width = 643
|
||||
Align = alClient
|
||||
Columns = <
|
||||
item
|
||||
AutoSize = True
|
||||
Caption = 'Caption'
|
||||
Width = 40
|
||||
end
|
||||
item
|
||||
AutoSize = True
|
||||
Caption = 'Caption'
|
||||
Width = 100
|
||||
end
|
||||
item
|
||||
AutoSize = True
|
||||
Caption = 'Caption'
|
||||
Width = 40
|
||||
end
|
||||
item
|
||||
AutoSize = True
|
||||
Caption = 'Caption'
|
||||
Width = 100
|
||||
end
|
||||
item
|
||||
Caption = 'Caption'
|
||||
end
|
||||
item
|
||||
Caption = 'Caption'
|
||||
end
|
||||
item
|
||||
Caption = 'Caption'
|
||||
end>
|
||||
RowSelect = True
|
||||
ScrollBars = ssAutoBoth
|
||||
TabOrder = 0
|
||||
ViewStyle = vsReport
|
||||
OnDblClick = tbGotoClick
|
||||
OnClick = lvTodoClick
|
||||
end
|
||||
object ToolBar: TToolBar
|
||||
Height = 48
|
||||
Width = 500
|
||||
Width = 643
|
||||
ButtonHeight = 46
|
||||
ButtonWidth = 47
|
||||
Caption = 'ToolBar'
|
||||
Flat = True
|
||||
Images = ImageList1
|
||||
Images = ImageList
|
||||
ParentShowHint = False
|
||||
ShowCaptions = True
|
||||
ShowHint = True
|
||||
TabOrder = 1
|
||||
object tbOptions: TToolButton
|
||||
Left = 145
|
||||
Left = 142
|
||||
Top = 2
|
||||
Caption = 'Options'
|
||||
ImageIndex = 3
|
||||
Visible = False
|
||||
end
|
||||
object tbPrint: TToolButton
|
||||
Left = 98
|
||||
Left = 95
|
||||
Top = 2
|
||||
Caption = 'Print'
|
||||
ImageIndex = 2
|
||||
@ -74,78 +89,164 @@ object frmTodo: TfrmTodo
|
||||
object tbRefresh: TToolButton
|
||||
Left = 1
|
||||
Top = 2
|
||||
Caption = 'Refresh'
|
||||
ImageIndex = 0
|
||||
OnClick = tbRefreshClick
|
||||
Action = acRefresh
|
||||
end
|
||||
object tbGoto: TToolButton
|
||||
Left = 51
|
||||
Left = 48
|
||||
Top = 2
|
||||
Caption = 'Goto'
|
||||
ImageIndex = 1
|
||||
OnClick = tbGotoClick
|
||||
Action = acGoto
|
||||
end
|
||||
end
|
||||
object ImageList1: TImageList
|
||||
left = 121
|
||||
top = 42
|
||||
object ImageList: TImageList
|
||||
left = 232
|
||||
top = 8
|
||||
Bitmap = {
|
||||
6C690400000010000000100000009C0100002F2A2058504D202A2F0A73746174
|
||||
69632063686172202A677261706869635B5D203D207B0A223136203136203320
|
||||
31222C0A222E2063204E6F6E65222C0A222C20632023333133313331222C0A22
|
||||
2D20632023354141444646222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E22
|
||||
2C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E
|
||||
2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2C2C2C2C2C2C2E2E2E222C0A222E
|
||||
2E2E2E2E2C2C2D2D2D2C2C2C2C2E2E222C0A222E2E2E2E2C2C2D2D2C2C2C2E2E
|
||||
2E2E2E222C0A222E2E2E2E2C2D2D2C2E2E2E2E2E2E2E2E222C0A222E2E2E2C2C
|
||||
2D2D2C2E2E2E2E2E2E2E2E222C0A222E2E2E2C2D2D2C2E2E2E2E2E2E2E2E2E22
|
||||
2C0A222E2E2E2C2D2D2C2E2E2E2E2E2E2E2E2E222C0A222E2E2E2C2D2D2C2E2E
|
||||
2E2E2E2E2E2E2E222C0A222E2C2C2D2D2D2C2C2C2C2E2E2E2E2E2E222C0A222E
|
||||
2E2C2D2D2D2D2D2C2E2E2E2E2E2E2E222C0A222E2E2E2C2C2D2C2C2E2E2E2E2E
|
||||
2E2E2E222C0A222E2E2E2E2C2C2C2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E
|
||||
2C2E2E2E2E2E2E2E2E2E2E227D0AAB0100002F2A2058504D202A2F0A73746174
|
||||
69632063686172202A677261706869635B5D203D207B0A223136203136203420
|
||||
31222C0A222E2063204E6F6E65222C0A222C20632023333133313331222C0A22
|
||||
2D20632023464646464646222C0A222A20632023464630303030222C0A222E2E
|
||||
2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E
|
||||
2E2E222C0A222E2E2E2C2C2C2C2C2C2C2E2E2E2E2E2E222C0A222E2E2E2C2D2D
|
||||
2D2D2D2D2C2E2E2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D2D2C2E2E2E2E222C
|
||||
0A222E2E2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D
|
||||
2D2D2C2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2A
|
||||
2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E2A2A2A2A2A2A2A2A2A2A2A2E
|
||||
2E2E222C0A222E2A2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E2E2C2D2D
|
||||
2D2D2D2D2D2D2C2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C
|
||||
0A222E2E2E2C2C2C2C2C2C2C2C2C2C2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E
|
||||
2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E227D0AC90100
|
||||
002F2A2058504D202A2F0A7374617469632063686172202A677261706869635B
|
||||
5D203D207B0A22313620313620362031222C0A222E2063202330303030303022
|
||||
2C0A222C20632023383438343834222C0A222D20632023333133313331222C0A
|
||||
222A2063204E6F6E65222C0A226120632023433743374337222C0A2262206320
|
||||
23303046463030222C0A222E2E2C2E2D2E2E2E2E2E2E2E2E2E2E2E222C0A222E
|
||||
2E2C2E2D2E2E2E2E2E2E2E2E2E2E2E222C0A222A2A2A2A2A2A2A2A2A2A2A2A2A
|
||||
2A2A2A222C0A222A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A222C0A222A2A2A2A2A
|
||||
2A2A2D2D2D2D2D2D2D2A2A222C0A222A2A2A2A2A2A2D2E2E2E2E2E2D2A2A2A22
|
||||
2C0A222A2A2A2A2A2D2E2E2E2E2E2D2A2A2A2A222C0A222A2A2A2A2D2E2E2E2E
|
||||
2E2D2D2D2D2D2A222C0A222A2A2A2D2D2D2D2D2D2D2D61612D2D2A222C0A222A
|
||||
2A2D6161616161616161612D2C2D2A222C0A222A2A2D2D2D2D2D2D2D2D2D2D2C
|
||||
2C2D2A222C0A222A2A2D612E61626161612D2C2C2D2D2A222C0A222A2A2D2D2D
|
||||
2D2D2D2D2D2D2D2D2D2A2A222C0A222A2A2D61616161616161612D2D2A2A2A22
|
||||
2C0A222A2A2A2D2D2D2D2D2D2D2D2D2A2A2A2A222C0A222A2A2A2A2A2A2A2A2A
|
||||
2A2A2A2A2A2A2A227D0ABA0100002F2A2058504D202A2F0A7374617469632063
|
||||
686172202A677261706869635B5D203D207B0A22313620313620352031222C0A
|
||||
222E2063204E6F6E65222C0A222C20632023333133313331222C0A222D206320
|
||||
23303035414336222C0A222A20632023464646464646222C0A22612063202346
|
||||
4630303030222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2C2C
|
||||
2C2C2C2C2C2C2C2C2C2C2C2C2E222C0A222E2C2D2D2D2D2D2D2D2D2D2D2D2D2C
|
||||
2E222C0A222E2C2C2C2C2C2C2C2C2C2C2C2C2C2C2E222C0A222E2C2A2A2A2A2A
|
||||
2A2A2A2A2A2A2A2C2E222C0A222E2C2A612A2A2A61612A2A2A2A2A2C2E222C0A
|
||||
222E2C2A61612A61612A2A2A2A2A2A2C2E222C0A222E2C2A2A6161612A2A2A2A
|
||||
2A2A2A2C2E222C0A222E2C2A2A2A612A2A2A2A2A2A2A2A2C2E222C0A222E2C2A
|
||||
612A2A2A61612A2A2A2A2A2C2E222C0A222E2C2A61612A61612A2A2A2A2A2A2C
|
||||
2E222C0A222E2C2A2A6161612A2A2A2A2A2A2A2C2E222C0A222E2C2A2A2A612A
|
||||
2A2A2A2A2A2A2A2C2E222C0A222E2C2A2A2A2A2A2A2A2A2A2A2A2A2C2E222C0A
|
||||
222E2C2C2C2C2C2C2C2C2C2C2C2C2C2C2E222C0A222E2E2E2E2E2E2E2E2E2E2E
|
||||
2E2E2E2E2E227D0A
|
||||
4C69040000001000000010000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF000000000000000000000000000000000000000000000000000000000000
|
||||
0000313131FF313131FFFFAD5AFFFFAD5AFFFFAD5AFF313131FF313131FF3131
|
||||
31FF313131FF0000000000000000000000000000000000000000000000003131
|
||||
31FF313131FFFFAD5AFFFFAD5AFF313131FF313131FF313131FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000003131
|
||||
31FFFFAD5AFFFFAD5AFF313131FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FF3131
|
||||
31FFFFAD5AFFFFAD5AFF313131FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FFFFAD
|
||||
5AFFFFAD5AFF313131FF00000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FFFFAD
|
||||
5AFFFFAD5AFF313131FF00000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FFFFAD
|
||||
5AFFFFAD5AFF313131FF00000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000313131FF313131FFFFAD5AFFFFAD
|
||||
5AFFFFAD5AFF313131FF313131FF313131FF313131FF00000000000000000000
|
||||
00000000000000000000000000000000000000000000313131FFFFAD5AFFFFAD
|
||||
5AFFFFAD5AFFFFAD5AFFFFAD5AFF313131FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FF3131
|
||||
31FFFFAD5AFF313131FF313131FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000003131
|
||||
31FF313131FF313131FF00000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000313131FF0000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF313131FF000000000000
|
||||
0000000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF313131FF0000
|
||||
0000000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF000000000000000000000000000000000000FFFF00000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF00000000000000000000000000000000000000000000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF000000000000000000000000000000000000FFFF00000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF000000000000000000000000000000000000000000000000313131FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3131
|
||||
31FF000000000000000000000000000000000000000000000000313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000FF000000FF848484FF000000FF3131
|
||||
31FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
|
||||
00FF000000FF000000FF000000FF000000FF000000FF848484FF000000FF3131
|
||||
31FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
|
||||
00FF000000FF000000FF000000FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF313131FF0000000000000000000000000000000000000000000000000000
|
||||
000000000000313131FF000000FF000000FF000000FF000000FF000000FF3131
|
||||
31FF000000000000000000000000000000000000000000000000000000000000
|
||||
0000313131FF000000FF000000FF000000FF000000FF000000FF313131FF0000
|
||||
0000000000000000000000000000000000000000000000000000000000003131
|
||||
31FF000000FF000000FF000000FF000000FF000000FF313131FF313131FF3131
|
||||
31FF313131FF313131FF00000000000000000000000000000000313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FFC7C7C7FFC7C7
|
||||
C7FF313131FF313131FF000000000000000000000000313131FFC7C7C7FFC7C7
|
||||
C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FF3131
|
||||
31FF848484FF313131FF000000000000000000000000313131FF313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF8484
|
||||
84FF848484FF313131FF000000000000000000000000313131FFC7C7C7FF0000
|
||||
00FFC7C7C7FF00FF00FFC7C7C7FFC7C7C7FFC7C7C7FF313131FF848484FF8484
|
||||
84FF313131FF313131FF000000000000000000000000313131FF313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF313131FF00000000000000000000000000000000313131FFC7C7C7FFC7C7
|
||||
C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FFC7C7C7FF313131FF3131
|
||||
31FF000000000000000000000000000000000000000000000000313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000313131FF313131FF313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF313131FF313131FF0000000000000000313131FFC65A00FFC65A00FFC65A
|
||||
00FFC65A00FFC65A00FFC65A00FFC65A00FFC65A00FFC65A00FFC65A00FFC65A
|
||||
00FFC65A00FF313131FF0000000000000000313131FF313131FF313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF313131FF313131FF0000000000000000313131FFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFF0000FFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFF0000FFFF0000
|
||||
FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFFFFFFFFFF0000
|
||||
FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFF0000FFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFF0000FFFF0000
|
||||
FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFFFFFFFFFF0000
|
||||
FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF313131FF0000000000000000313131FF313131FF313131FF3131
|
||||
31FF313131FF313131FF313131FF313131FF313131FF313131FF313131FF3131
|
||||
31FF313131FF313131FF00000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000
|
||||
}
|
||||
end
|
||||
object ActionList: TActionList
|
||||
Images = ImageList
|
||||
left = 414
|
||||
top = 11
|
||||
object acGoto: TAction
|
||||
Caption = 'Goto'
|
||||
DisableIfNoHandler = True
|
||||
ImageIndex = 1
|
||||
OnExecute = acGotoExecute
|
||||
end
|
||||
object acRefresh: TAction
|
||||
Caption = 'Refresh'
|
||||
DisableIfNoHandler = True
|
||||
ImageIndex = 0
|
||||
OnExecute = acRefreshExecute
|
||||
end
|
||||
end
|
||||
end
|
||||
|
216
ide/todolist.lrs
216
ide/todolist.lrs
@ -1,55 +1,169 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TfrmTodo','FORMDATA',[
|
||||
'TPF0'#8'TfrmTodo'#7'frmTodo'#4'Left'#3'9'#1#6'Height'#3','#1#3'Top'#3'b'#2#5
|
||||
+'Width'#3#244#1#18'HorzScrollBar.Page'#3#243#1#18'VertScrollBar.Page'#3'+'#1
|
||||
+#13'ActiveControl'#7#6'lvTodo'#7'Caption'#6#7'frmTodo'#10'KeyPreview'#9#8'On'
|
||||
+'Create'#7#10'FormCreate'#9'OnKeyDown'#7#11'FormKeyDown'#8'Position'#7#14'po'
|
||||
+'ScreenCenter'#0#10'TStatusBar'#9'StatusBar'#6'Height'#2#20#3'Top'#3#24#1#5
|
||||
+'Width'#3#244#1#6'Panels'#14#0#0#0#9'TListView'#6'lvTodo'#6'Height'#3#232#0#3
|
||||
+'Top'#2'0'#5'Width'#3#244#1#5'Align'#7#8'alClient'#7'Columns'#14#1#8'AutoSiz'
|
||||
+'e'#9#7'Caption'#6#7'Caption'#0#1#8'AutoSize'#9#7'Caption'#6#7'Caption'#0#1#8
|
||||
+'AutoSize'#9#7'Caption'#6#7'Caption'#0#1#8'AutoSize'#9#7'Caption'#6#7'Captio'
|
||||
+'n'#0#0#9'RowSelect'#9#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#0#9'Vie'
|
||||
+'wStyle'#7#8'vsReport'#10'OnDblClick'#7#11'tbGotoClick'#0#0#8'TToolBar'#7'To'
|
||||
+'olBar'#6'Height'#2'0'#5'Width'#3#244#1#12'ButtonHeight'#2'.'#11'ButtonWidth'
|
||||
+#2'/'#7'Caption'#6#7'ToolBar'#4'Flat'#9#6'Images'#7#10'ImageList1'#14'Parent'
|
||||
+'ShowHint'#8#12'ShowCaptions'#9#8'ShowHint'#9#8'TabOrder'#2#1#0#11'TToolButt'
|
||||
+'on'#9'tbOptions'#4'Left'#3#145#0#3'Top'#2#2#7'Caption'#6#7'Options'#10'Imag'
|
||||
+'eIndex'#2#3#7'Visible'#8#0#0#11'TToolButton'#7'tbPrint'#4'Left'#2'b'#3'Top'
|
||||
+#2#2#7'Caption'#6#5'Print'#10'ImageIndex'#2#2#7'Visible'#8#0#0#11'TToolButto'
|
||||
+'n'#9'tbRefresh'#4'Left'#2#1#3'Top'#2#2#7'Caption'#6#7'Refresh'#10'ImageInde'
|
||||
+'x'#2#0#7'OnClick'#7#14'tbRefreshClick'#0#0#11'TToolButton'#6'tbGoto'#4'Left'
|
||||
+#2'3'#3'Top'#2#2#7'Caption'#6#4'Goto'#10'ImageIndex'#2#1#7'OnClick'#7#11'tbG'
|
||||
+'otoClick'#0#0#0#10'TImageList'#10'ImageList1'#4'left'#2'y'#3'top'#2'*'#6'Bi'
|
||||
+'tmap'#10#232#6#0#0'li'#4#0#0#0#16#0#0#0#16#0#0#0#156#1#0#0'/* XPM */'#10'st'
|
||||
+'atic char *graphic[] = {'#10'"16 16 3 1",'#10'". c None",'#10'", c #313131"'
|
||||
+','#10'"- c #5AADFF",'#10'"................",'#10'"................",'#10'".'
|
||||
+'...............",'#10'".......,,,,,,...",'#10'".....,,---,,,,..",'#10'"....'
|
||||
+',,--,,,.....",'#10'"....,--,........",'#10'"...,,--,........",'#10'"...,--,'
|
||||
+'.........",'#10'"...,--,.........",'#10'"...,--,.........",'#10'".,,---,,,,'
|
||||
+'......",'#10'"..,-----,.......",'#10'"...,,-,,........",'#10'"....,,,......'
|
||||
+'...",'#10'".....,.........."}'#10#171#1#0#0'/* XPM */'#10'static char *grap'
|
||||
+'hic[] = {'#10'"16 16 4 1",'#10'". c None",'#10'", c #313131",'#10'"- c #FFF'
|
||||
+'FFF",'#10'"* c #FF0000",'#10'"................",'#10'"................",'#10
|
||||
+'"...,,,,,,,......",'#10'"...,------,.....",'#10'"...,-------,....",'#10'"..'
|
||||
+'.,--------,...",'#10'"...,--------,...",'#10'"...,--------,...",'#10'".*.,-'
|
||||
+'-------,...",'#10'"..***********...",'#10'".*.,--------,...",'#10'"...,----'
|
||||
+'----,...",'#10'"...,--------,...",'#10'"...,,,,,,,,,,...",'#10'"...........'
|
||||
+'.....",'#10'"................"}'#10#201#1#0#0'/* XPM */'#10'static char *gr'
|
||||
+'aphic[] = {'#10'"16 16 6 1",'#10'". c #000000",'#10'", c #848484",'#10'"- c'
|
||||
+' #313131",'#10'"* c None",'#10'"a c #C7C7C7",'#10'"b c #00FF00",'#10'"..,.-'
|
||||
+'...........",'#10'"..,.-...........",'#10'"****************",'#10'"********'
|
||||
+'********",'#10'"*******-------**",'#10'"******-.....-***",'#10'"*****-.....'
|
||||
+'-****",'#10'"****-.....-----*",'#10'"***--------aa--*",'#10'"**-aaaaaaaaa-,'
|
||||
+'-*",'#10'"**----------,,-*",'#10'"**-a.abaaa-,,--*",'#10'"**------------**"'
|
||||
+','#10'"**-aaaaaaaa--***",'#10'"***---------****",'#10'"****************"}'
|
||||
+#10#186#1#0#0'/* XPM */'#10'static char *graphic[] = {'#10'"16 16 5 1",'#10
|
||||
+'". c None",'#10'", c #313131",'#10'"- c #005AC6",'#10'"* c #FFFFFF",'#10'"a'
|
||||
+' c #FF0000",'#10'"................",'#10'".,,,,,,,,,,,,,,.",'#10'".,-------'
|
||||
+'-----,.",'#10'".,,,,,,,,,,,,,,.",'#10'".,************,.",'#10'".,*a***aa***'
|
||||
+'**,.",'#10'".,*aa*aa******,.",'#10'".,**aaa*******,.",'#10'".,***a********,'
|
||||
+'.",'#10'".,*a***aa*****,.",'#10'".,*aa*aa******,.",'#10'".,**aaa*******,.",'
|
||||
+#10'".,***a********,.",'#10'".,************,.",'#10'".,,,,,,,,,,,,,,.",'#10
|
||||
+'"................"}'#10#0#0#0
|
||||
'TPF0'#8'TfrmTodo'#7'frmTodo'#4'Left'#3#177#0#6'Height'#3','#1#3'Top'#3#209#0
|
||||
+#5'Width'#3#131#2#18'HorzScrollBar.Page'#3#130#2#18'VertScrollBar.Page'#3'+'
|
||||
+#1#13'ActiveControl'#7#6'lvTodo'#7'Caption'#6#7'frmTodo'#12'ClientHeight'#3
|
||||
+','#1#11'ClientWidth'#3#131#2#10'KeyPreview'#9#8'OnCreate'#7#10'FormCreate'#9
|
||||
+'OnKeyDown'#7#11'FormKeyDown'#8'Position'#7#14'poScreenCenter'#0#10'TStatusB'
|
||||
+'ar'#9'StatusBar'#6'Height'#2#23#3'Top'#3#21#1#5'Width'#3#131#2#6'Panels'#14
|
||||
+#0#0#0#9'TListView'#6'lvTodo'#6'Height'#3#229#0#3'Top'#2'0'#5'Width'#3#131#2
|
||||
+#5'Align'#7#8'alClient'#7'Columns'#14#1#8'AutoSize'#9#7'Caption'#6#7'Caption'
|
||||
+#5'Width'#2'('#0#1#8'AutoSize'#9#7'Caption'#6#7'Caption'#5'Width'#2'd'#0#1#8
|
||||
+'AutoSize'#9#7'Caption'#6#7'Caption'#5'Width'#2'('#0#1#8'AutoSize'#9#7'Capti'
|
||||
+'on'#6#7'Caption'#5'Width'#2'd'#0#1#7'Caption'#6#7'Caption'#0#1#7'Caption'#6
|
||||
+#7'Caption'#0#1#7'Caption'#6#7'Caption'#0#0#9'RowSelect'#9#10'ScrollBars'#7
|
||||
+#10'ssAutoBoth'#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport'#7'OnClick'#7#11'l'
|
||||
+'vTodoClick'#0#0#8'TToolBar'#7'ToolBar'#6'Height'#2'0'#5'Width'#3#131#2#12'B'
|
||||
+'uttonHeight'#2'.'#11'ButtonWidth'#2'/'#7'Caption'#6#7'ToolBar'#4'Flat'#9#6
|
||||
+'Images'#7#9'ImageList'#14'ParentShowHint'#8#12'ShowCaptions'#9#8'ShowHint'#9
|
||||
+#8'TabOrder'#2#1#0#11'TToolButton'#9'tbOptions'#4'Left'#3#142#0#3'Top'#2#2#7
|
||||
+'Caption'#6#7'Options'#10'ImageIndex'#2#3#7'Visible'#8#0#0#11'TToolButton'#7
|
||||
+'tbPrint'#4'Left'#2'_'#3'Top'#2#2#7'Caption'#6#5'Print'#10'ImageIndex'#2#2#7
|
||||
+'Visible'#8#0#0#11'TToolButton'#9'tbRefresh'#4'Left'#2#1#3'Top'#2#2#6'Action'
|
||||
+#7#9'acRefresh'#0#0#11'TToolButton'#6'tbGoto'#4'Left'#2'0'#3'Top'#2#2#6'Acti'
|
||||
+'on'#7#6'acGoto'#0#0#0#10'TImageList'#9'ImageList'#4'left'#3#232#0#3'top'#2#8
|
||||
+#6'Bitmap'#10#14#16#0#0'Li'#4#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255'111'#255'111'
|
||||
+#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+'111'#255'111'#255#255#173'Z'#255#255#173'Z'#255#255#173'Z'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'
|
||||
+#255'111'#255#255#173'Z'#255#255#173'Z'#255'111'#255'111'#255'111'#255#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255
|
||||
+#255#173'Z'#255#255#173'Z'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255#255#173
|
||||
+'Z'#255#255#173'Z'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#173'Z'#255#255#173'Z'
|
||||
+#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#173'Z'#255#255#173'Z'#255'111'
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#173'Z'#255#255#173'Z'#255'111'#255#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+'111'#255'111'#255#255#173'Z'#255#255#173'Z'#255#255#173'Z'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0'111'#255#255#173'Z'#255#255#173'Z'#255#255#173'Z'#255#255#173'Z'
|
||||
+#255#255#173'Z'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255#255#173'Z'#255'111'#255'1'
|
||||
+'11'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0'111'#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
,#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0'111'#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'111'#255#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
|
||||
+#255#0#0#0#0'111'#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'111'
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#255#255#0#0#255
|
||||
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
|
||||
+#0#0#255#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#0#0
|
||||
+'111'#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'111'#255#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0'111'#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'111'#255#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#132#132#132#255#0#0#0
|
||||
+#255'111'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
|
||||
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#132#132
|
||||
+#132#255#0#0#0#255'111'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
|
||||
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255
|
||||
+'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#0#0#0#255#0#0#0#255#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0'111'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||
+#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+'111'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'111'#255'111'#255
|
||||
+'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255
|
||||
+'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255#199#199#199#255#199
|
||||
+#199#199#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#199#199#199
|
||||
+#255#199#199#199#255#199#199#199#255#199#199#199#255#199#199#199#255#199#199
|
||||
+#199#255#199#199#199#255#199#199#199#255#199#199#199#255'111'#255#132#132#132
|
||||
+#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255'111'#255'11'
|
||||
+'1'#255'111'#255'111'#255'111'#255'111'#255'111'#255#132#132#132#255#132#132
|
||||
+#132#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0'111'#255#199#199#199#255#0#0#0#255
|
||||
+#199#199#199#255#0#255#0#255#199#199#199#255#199#199#199#255#199#199#199#255
|
||||
+'111'#255#132#132#132#255#132#132#132#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'
|
||||
+#255#199#199#199#255#199#199#199#255#199#199#199#255#199#199#199#255#199#199
|
||||
+#199#255#199#199#199#255#199#199#199#255#199#199#199#255'111'#255'111'#255#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255'11'
|
||||
+'1'#255'111'#255'111'#255'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255
|
||||
+'111'#255'111'#255#0#0#0#0#0#0#0#0'111'#255#198'Z'#0#255#198'Z'#0#255#198'Z'
|
||||
+#0#255#198'Z'#0#255#198'Z'#0#255#198'Z'#0#255#198'Z'#0#255#198'Z'#0#255#198
|
||||
+'Z'#0#255#198'Z'#0#255#198'Z'#0#255#198'Z'#0#255'111'#255#0#0#0#0#0#0#0#0'11'
|
||||
+'1'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255'111'#255'111'#255'111'#255#0#0#0#0#0#0#0#0'111'#255
|
||||
,#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255
|
||||
+#255#255#255#255#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#0#0#255#255#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255#255#255#255
|
||||
+#255#0#0#255#255#0#0#255#255#255#255#255#255#0#0#255#255#0#0#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#255#255#255
|
||||
+#255#0#0#255#255#0#0#255#255#0#0#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+'111'#255#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'111'
|
||||
+#255#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#0#0#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#0#0#255#255#0#0#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255'111'#255#0#0#0#0#0#0
|
||||
+#0#0'111'#255#255#255#255#255#0#0#255#255#0#0#255#255#255#255#255#255#0#0#255
|
||||
+#255#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255#255
|
||||
+#255#255#255#255#255#255#255#0#0#255#255#0#0#255#255#0#0#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#0#0#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
|
||||
+#255#255#255#255#255'111'#255#0#0#0#0#0#0#0#0'111'#255'111'#255'111'#255'111'
|
||||
+#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255'111'#255
|
||||
+'111'#255'111'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#11'TActionList'#10'ActionList'#6'Images'#7#9'ImageList'#4'left'#3#158
|
||||
+#1#3'top'#2#11#0#7'TAction'#6'acGoto'#7'Caption'#6#4'Goto'#18'DisableIfNoHan'
|
||||
+'dler'#9#10'ImageIndex'#2#1#9'OnExecute'#7#13'acGotoExecute'#0#0#7'TAction'#9
|
||||
+'acRefresh'#7'Caption'#6#7'Refresh'#18'DisableIfNoHandler'#9#10'ImageIndex'#2
|
||||
+#0#9'OnExecute'#7#16'acRefreshExecute'#0#0#0#0
|
||||
]);
|
||||
|
584
ide/todolist.pp
584
ide/todolist.pp
@ -1,5 +1,4 @@
|
||||
(*
|
||||
/***************************************************************************
|
||||
(***************************************************************************
|
||||
todolist.pp
|
||||
--------------------
|
||||
|
||||
@ -41,9 +40,18 @@
|
||||
yyy..yy is the text of todo
|
||||
|
||||
you can create an file naming projectname.todo and add list of todo
|
||||
|
||||
*)
|
||||
(*
|
||||
Modified by Gerard Visent <gerardusmercator@gmail.com> on 5/11/2007
|
||||
- Extended to recognize Delphi syntax.
|
||||
- It works now with the folowing tags:
|
||||
#todo, #done, TODO, DONE
|
||||
- Owner and Category tags are also processed and displayed
|
||||
Syntax is -oXXXXX for the owner and -cXXXXX for the category
|
||||
- Info on the todo items is also stored in a TTodoItem object, for more flexibility
|
||||
*)
|
||||
|
||||
{#todo goto line of selected unit}
|
||||
{#todo options }
|
||||
{#todo print an todo report }
|
||||
|
||||
@ -57,20 +65,52 @@ uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LResources,
|
||||
ExtCtrls, ComCtrls, Menus, Buttons, GraphType,
|
||||
StdCtrls, mPasLex, LCLIntf, LCLType,
|
||||
CodeCache, CodeToolManager, LazarusIDEStrConsts;
|
||||
CodeCache, CodeToolManager, LazarusIDEStrConsts, ActnList;
|
||||
|
||||
Const
|
||||
cTodoFlag = '#todo';
|
||||
cDoneFlag = '#done';
|
||||
cAltTodoFLag = 'TODO';
|
||||
cAltDoneFLag = 'DONE';
|
||||
|
||||
type
|
||||
TOnOpenFile = procedure(Sender: TObject; const Filename: string;
|
||||
const LineNumber: integer) of object;
|
||||
|
||||
|
||||
{ TTodoItem: Class to hold TODO item information }
|
||||
TTodoItem = Class(TObject)
|
||||
private
|
||||
FAltNotation: boolean;
|
||||
FCategory: string;
|
||||
FDone: boolean;
|
||||
FLineNumber: integer;
|
||||
FModule: string;
|
||||
FOwner: string;
|
||||
FPriority: integer;
|
||||
FText: string;
|
||||
function GetAsComment: string;
|
||||
function GetAsString: string;
|
||||
published
|
||||
property AltNotation: boolean read FAltNotation write FAltNotation;
|
||||
property Category: string read FCategory write FCategory;
|
||||
property Done: boolean read FDone write FDone;
|
||||
property LineNumber: integer read FLineNumber write FLineNumber;
|
||||
property Module: string read FModule write FModule;
|
||||
property Owner: string read FOwner write FOwner;
|
||||
property Priority: integer read FPriority write FPriority;
|
||||
property Text: string read FText write FText;
|
||||
property AsString: string read GetAsString;
|
||||
property AsComment: string read GetAsComment;
|
||||
end;
|
||||
|
||||
{ TfrmTodo }
|
||||
|
||||
TfrmTodo = class(TForm)
|
||||
ImageList1: TImageList;
|
||||
acGoto: TAction;
|
||||
acRefresh: TAction;
|
||||
ActionList: TActionList;
|
||||
ImageList: TImageList;
|
||||
lvTodo: TListView;
|
||||
StatusBar: TStatusBar;
|
||||
ToolBar: TToolBar;
|
||||
@ -78,10 +118,11 @@ type
|
||||
tbOptions: TToolButton;
|
||||
tbPrint: TToolButton;
|
||||
tbRefresh: TToolButton;
|
||||
procedure acGotoExecute(Sender: TObject);
|
||||
procedure acRefreshExecute(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure tbGotoClick(Sender: TObject);
|
||||
procedure tbRefreshClick(Sender: TObject);
|
||||
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift:TShiftState);
|
||||
procedure lvTodoClick(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
fBuild : Boolean;
|
||||
@ -92,11 +133,12 @@ type
|
||||
|
||||
procedure SetFileName(const AValue: String);
|
||||
|
||||
procedure ParseComment(const aFileName: string; const SComment, EComment: string;
|
||||
const TokenString: string; LineNumber: Integer);
|
||||
Function GetToDoItem(const aFileName: string; const SComment, EComment: string;
|
||||
const TokenString: string; LineNumber: Integer): TTodoItem ;
|
||||
procedure ParseDirective(aDirective : String);
|
||||
procedure AddListItem(aTodoItem: TTodoItem);
|
||||
|
||||
procedure LoadFile(const aFileName : string);
|
||||
procedure LoadFile(aFileName : string);
|
||||
public
|
||||
{ public declarations }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
@ -112,6 +154,7 @@ var
|
||||
implementation
|
||||
|
||||
uses
|
||||
Project,
|
||||
StrUtils,
|
||||
FileUtil;
|
||||
|
||||
@ -123,14 +166,269 @@ begin
|
||||
end;
|
||||
|
||||
destructor TfrmTodo.Destroy;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
fScannedFile.Free;
|
||||
|
||||
for i := 0 to lvTodo.Items.Count-1 do
|
||||
if Assigned(lvTodo.Items[i].Data) then
|
||||
TTodoItem(lvTodo.Items[i].Data).Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
//Load project main file and scan all files for find the syntax todo
|
||||
procedure TfrmTodo.tbRefreshClick(Sender: TObject);
|
||||
procedure TfrmTodo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
begin
|
||||
if Key=VK_ESCAPE then
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.lvTodoClick(Sender: TObject);
|
||||
begin
|
||||
acGoto.Execute;
|
||||
end;
|
||||
|
||||
//Initialise the todo project and find them
|
||||
procedure TfrmTodo.SetFileName(const AValue: String);
|
||||
begin
|
||||
if fFileName=AValue then exit;
|
||||
fFileName:=AValue;
|
||||
acRefresh.Execute;
|
||||
end;
|
||||
|
||||
function TfrmTodo.GetToDoItem(const aFileName: string; const SComment,
|
||||
EComment: string; const TokenString: string; LineNumber: Integer): TTodoItem;
|
||||
var
|
||||
N,Strlen : Integer;
|
||||
TempStr : string;
|
||||
ParsingString : string;
|
||||
IsAltNotation,
|
||||
IsDone : boolean;
|
||||
aChar : char;
|
||||
|
||||
const
|
||||
cSemiColon = ':';
|
||||
cWhiteSpace = ' ';
|
||||
|
||||
Procedure SetItemFields(aItem: TTodoItem; aStr: String);
|
||||
var
|
||||
aPriority: integer;
|
||||
begin
|
||||
if aStr <> '' then
|
||||
begin
|
||||
// Category
|
||||
if pos('-c', aStr) = 1 then
|
||||
aItem.Category := Copy(aStr, 3, Length(aStr)-2)
|
||||
else
|
||||
begin
|
||||
// Owner
|
||||
if pos('-o', aStr) = 1 then
|
||||
aItem.Owner := Copy(aStr, 3, Length(aStr)-2)
|
||||
else
|
||||
begin
|
||||
// Priority
|
||||
if TryStrToInt(aStr, aPriority) then
|
||||
aItem.Priority := aPriority;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
Result := nil;
|
||||
|
||||
ParsingString:= Trim(TokenString);
|
||||
|
||||
// Remove the beginning comment chars from input string
|
||||
Delete(ParsingString, 1, Length(SComment));
|
||||
|
||||
// Remove leading and trailing blanks from input
|
||||
ParsingString := Trim(ParsingString);
|
||||
|
||||
// See if it's a TODO or DONE item
|
||||
if (Pos(cTodoFlag, ParsingString) = 1) then
|
||||
begin
|
||||
IsDone := False;
|
||||
IsAltNotation := False;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (Pos(cAltTodoFLag, ParsingString) = 1) then
|
||||
begin
|
||||
IsDone := False;
|
||||
IsAltNotation := True;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (Pos(cDoneFlag, ParsingString) = 1) then
|
||||
begin
|
||||
IsDone := True;
|
||||
IsAltNotation := False;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (Pos(cAltDoneFLag, ParsingString) = 1) then
|
||||
begin
|
||||
IsDone := True;
|
||||
IsAltNotation := True;
|
||||
end
|
||||
else
|
||||
// Not a Todo/Done item, leave
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// Remove the ending comment chars from input string
|
||||
if (eComment<>'') and (Pos(EComment, ParsingString)=Length(ParsingString)- Length(EComment)+1) then
|
||||
ParsingString := Copy(ParsingString, 1, Length(ParsingString)-Length(eComment));
|
||||
|
||||
// Remove Todo/Done flag from input string
|
||||
if isAltNotation then
|
||||
Delete(ParsingString, 1, 4)
|
||||
else
|
||||
Delete(ParsingString, 1, 5);
|
||||
|
||||
Result := TTodoItem.Create;
|
||||
Result.Done := IsDone;
|
||||
Result.AltNotation := IsAltNotation;
|
||||
Result.LineNumber := LineNumber;
|
||||
Result.Module := aFileName;
|
||||
|
||||
n := 1;
|
||||
TempStr := '';
|
||||
Strlen := Length(ParsingString);
|
||||
|
||||
// Parse priority, owner and category
|
||||
while (n <= StrLen) and (ParsingString[n]<>cSemiColon) do
|
||||
begin
|
||||
|
||||
aChar := ParsingString[n];
|
||||
|
||||
// Add char to temporary string
|
||||
if (aChar<>cSemiColon) and (aChar<>cWhiteSpace) then
|
||||
TempStr := TempStr + aChar
|
||||
|
||||
// Process temporary string
|
||||
else
|
||||
begin
|
||||
SetItemFields(Result, TempStr);
|
||||
TempStr := '';;
|
||||
end;
|
||||
|
||||
inc(N);
|
||||
|
||||
end;//while
|
||||
|
||||
SetItemFields(Result, TempStr);
|
||||
|
||||
Delete(ParsingString, 1, n);
|
||||
|
||||
// Set item text
|
||||
Result.Text := ParsingString;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmTodo.FormCreate(Sender: TObject);
|
||||
begin
|
||||
fBuild:=False;
|
||||
fScannedFile:=TStringList.Create;
|
||||
|
||||
Caption := lisTodoListCaption;
|
||||
|
||||
acRefresh.Hint := lisTodolistRefresh;
|
||||
acGoto.Hint := listodoListGotoLine;
|
||||
tbPrint.Hint :=listodoListPrintList;
|
||||
tbOptions.Hint := lisToDoListOptions;
|
||||
|
||||
tbOptions.Caption:=dlgFROpts;
|
||||
tbPrint.Caption:=srVK_PRINT;
|
||||
tbRefresh.Caption:=dlgUnitDepRefresh;
|
||||
tbGoto.Caption:=lisToDoGoto;
|
||||
|
||||
with lvTodo do
|
||||
begin
|
||||
Column[0].Caption := 'Done';
|
||||
Column[0].Width := 45;
|
||||
Column[1].Caption := lisToDoLDescription;
|
||||
Column[1].Width := 150;
|
||||
Column[2].Caption := lisToDoLPriority;
|
||||
Column[2].Width := 45;
|
||||
Column[3].Caption := lisToDoLFile;
|
||||
Column[3].Width := 80;
|
||||
Column[4].Caption := lisToDoLLine;
|
||||
Column[4].Width := 40;
|
||||
Column[5].Caption := lisToDoLOwner;
|
||||
Column[5].Width := 50;
|
||||
Column[6].Caption := listToDoLCategory;
|
||||
Column[6].Width := 80;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.acGotoExecute(Sender: TObject);
|
||||
var
|
||||
CurFilename: String;
|
||||
aTodoItem: TTodoItem;
|
||||
aListItem: TListItem;
|
||||
TheLine: integer;
|
||||
UsedInterfaceFilenames: TStrings;
|
||||
UsedImplementationFilenames: TStrings;
|
||||
i: integer;
|
||||
Found: boolean;
|
||||
begin
|
||||
CurFilename:='';
|
||||
aListItem:= lvtodo.Selected;
|
||||
Found:= false;
|
||||
if Assigned(aListItem) and Assigned(aListItem.Data) then
|
||||
begin
|
||||
aTodoItem := TTodoItem(aListItem.Data);
|
||||
CurFileName := aTodoItem.Module;
|
||||
TheLine := aTodoItem.LineNumber;
|
||||
if not FileNameIsAbsolute(CurFileName) then
|
||||
begin
|
||||
if Assigned(CodeToolBoss) then
|
||||
begin
|
||||
fRootCBuffer:=CodeToolBoss.LoadFile(fFileName,false,false);
|
||||
if not Assigned(fRootCBuffer) then Exit;
|
||||
if CodeToolBoss.FindUsedUnitFiles(fRootCBuffer,UsedInterfaceFilenames,
|
||||
UsedImplementationFilenames) then
|
||||
begin
|
||||
try
|
||||
for i:=0 to UsedInterfaceFilenames.Count-1 do
|
||||
begin
|
||||
if AnsiCompareStr(ExtractFileName(UsedInterfaceFileNames[i]),
|
||||
CurFileName) = 0 then
|
||||
begin
|
||||
CurFileName:= UsedInterFaceFileNames[i];
|
||||
Found:= true;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
if not Found then
|
||||
begin
|
||||
for i:=0 to UsedImplementationFilenames.Count-1 do
|
||||
begin
|
||||
if AnsiCompareStr(ExtractFileName
|
||||
(UsedImplementationFilenames[i]), CurFileName) = 0 then
|
||||
begin
|
||||
CurFileName:= UsedImplementationFilenames[i];
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
UsedImplementationFilenames.Free;
|
||||
UsedInterfaceFilenames.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if Assigned(OnOpenFile) then OnOpenFile(Self,CurFilename,TheLine);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.acRefreshExecute(Sender: TObject);
|
||||
var
|
||||
UsedInterfaceFilenames,
|
||||
UsedImplementationFilenames: TStrings;
|
||||
@ -177,110 +475,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
begin
|
||||
if Key=VK_ESCAPE then
|
||||
Close;
|
||||
end;
|
||||
|
||||
//Initialise then todo project and find them
|
||||
procedure TfrmTodo.SetFileName(const AValue: String);
|
||||
begin
|
||||
if fFileName=AValue then exit;
|
||||
fFileName:=AValue;
|
||||
tbRefreshClick(nil);
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.tbGotoClick(Sender: TObject);
|
||||
var
|
||||
CurFilename: String;
|
||||
TheItem: TListItem;
|
||||
TheLine: integer;
|
||||
UsedInterfaceFilenames: TStrings;
|
||||
UsedImplementationFilenames: TStrings;
|
||||
i: integer;
|
||||
Found: boolean;
|
||||
begin
|
||||
CurFilename:='';
|
||||
TheItem:= lvtodo.Selected;
|
||||
Found:= false;
|
||||
if Assigned(TheItem) then
|
||||
begin
|
||||
CurFileName:= TheItem.SubItems[1];
|
||||
TheLine:= StrToInt(TheItem.SubItems[2]);
|
||||
if not FileNameIsAbsolute(CurFileName) then
|
||||
begin
|
||||
if Assigned(CodeToolBoss) then
|
||||
begin
|
||||
fRootCBuffer:=CodeToolBoss.LoadFile(fFileName,false,false);
|
||||
if not Assigned(fRootCBuffer) then Exit;
|
||||
if CodeToolBoss.FindUsedUnitFiles(fRootCBuffer,UsedInterfaceFilenames,
|
||||
UsedImplementationFilenames) then
|
||||
begin
|
||||
try
|
||||
for i:=0 to UsedInterfaceFilenames.Count-1 do
|
||||
begin
|
||||
if AnsiCompareStr(ExtractFileName(UsedInterfaceFileNames[i]),
|
||||
CurFileName) = 0 then
|
||||
begin
|
||||
CurFileName:= UsedInterFaceFileNames[i];
|
||||
Found:= true;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
if not Found then
|
||||
begin
|
||||
for i:=0 to UsedImplementationFilenames.Count-1 do
|
||||
begin
|
||||
if AnsiCompareStr(ExtractFileName
|
||||
(UsedImplementationFilenames[i]), CurFileName) = 0 then
|
||||
begin
|
||||
CurFileName:= UsedImplementationFilenames[i];
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
UsedImplementationFilenames.Free;
|
||||
UsedInterfaceFilenames.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if Assigned(OnOpenFile) then OnOpenFile(Self,CurFilename,TheLine);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.FormCreate(Sender: TObject);
|
||||
begin
|
||||
fBuild:=False;
|
||||
fScannedFile:=TStringList.Create;
|
||||
|
||||
Caption := lisTodoListCaption;
|
||||
|
||||
tbRefresh.Hint := lisTodolistRefresh;
|
||||
tbGoto.Hint := listodoListGotoLine;
|
||||
tbPrint.Hint :=listodoListPrintList;
|
||||
tbOptions.Hint := lisToDoListOptions;
|
||||
|
||||
tbOptions.Caption:=dlgFROpts;
|
||||
tbPrint.Caption:=srVK_PRINT;
|
||||
tbRefresh.Caption:=dlgUnitDepRefresh;
|
||||
tbGoto.Caption:=lisToDoGoto;
|
||||
|
||||
with lvTodo do
|
||||
begin
|
||||
Column[0].Caption := ' !';
|
||||
Column[0].Width := 25;
|
||||
Column[1].Caption := lisToDoLDescription;
|
||||
Column[1].Width := 250;
|
||||
Column[2].Caption := lisToDoLFile;
|
||||
Column[2].Width := 150;
|
||||
Column[3].Caption := lisToDoLLine;
|
||||
Column[3].Width := 50;
|
||||
end;
|
||||
end;
|
||||
|
||||
//Find the {$I filename} directive. If exists, call LoadFile()
|
||||
procedure TfrmTodo.ParseDirective(aDirective : String);
|
||||
Var N : Integer;
|
||||
@ -298,100 +492,57 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
//Find in comment the ToDo message
|
||||
procedure TfrmTodo.ParseComment(const aFileName: string;
|
||||
const SComment, EComment: string;
|
||||
const TokenString: string; LineNumber: Integer);
|
||||
Var
|
||||
N,J : Integer;
|
||||
ParsingString : string;
|
||||
CListItem : TListItem;
|
||||
TodoFlag : string;
|
||||
|
||||
function IsTodoFlag(const Flag: string): boolean;
|
||||
begin
|
||||
TodoFLag := Flag;
|
||||
Result := Pos(UpperCase(Flag),UpperCase(TokenString)) > 1;
|
||||
end;
|
||||
|
||||
procedure TfrmTodo.AddListItem(aTodoItem: TTodoItem);
|
||||
var
|
||||
aListItem: TListItem;
|
||||
begin
|
||||
if IsTodoFlag(cTodoFlag) or IsTodoFlag(cAltTodoFlag) then
|
||||
if Assigned(aTodoItem) then
|
||||
begin
|
||||
// We found a token that looks like a TODO comment. Now
|
||||
// verify that it *is* one: either a white-space or the
|
||||
// comment token need to be in front of the TODO item
|
||||
|
||||
// Remove comment characters
|
||||
ParsingString := TokenString;
|
||||
Delete(ParsingString, 1, Length(SComment));
|
||||
|
||||
// Remove white-space left and right
|
||||
ParsingString := Trim(ParsingString);
|
||||
|
||||
// The TODO token should be at the beginning of the comment
|
||||
N:=Pos(UpperCase(TodoFlag),UpperCase(ParsingString));
|
||||
if N=1 then
|
||||
begin
|
||||
// Remove token from string
|
||||
Delete(ParsingString, 1, Length(TodoFlag));
|
||||
ParsingString := TrimRight(ParsingString);
|
||||
|
||||
if EComment<>'' then
|
||||
begin
|
||||
N:=Pos(EComment,ParsingString);
|
||||
// Remove end comment from string
|
||||
Delete(ParsingString, N, Length(EComment));
|
||||
ParsingString := TrimRight(ParsingString);
|
||||
end;
|
||||
|
||||
CListItem := lvToDo.Items.Add;
|
||||
|
||||
// Identify numeric priority (if there is one)
|
||||
j := 0;
|
||||
while j < Length(ParsingString) do
|
||||
begin
|
||||
if not (ParsingString[j + 1] in ['0'..'9']) then
|
||||
Break;
|
||||
Inc(j);
|
||||
end;
|
||||
N:=StrToIntDef(Copy(ParsingString, 1, j), 0);
|
||||
ClistItem.Caption:=IntToStr(N);
|
||||
Delete(ParsingString, 1, j);
|
||||
ParsingString := TrimLeft(ParsingString);
|
||||
if (j=0) and AnsiStartsText(':', ParsingString) then begin
|
||||
{ Remove Leading : from comment }
|
||||
Delete(ParsingString, 1, 1);
|
||||
ParsingString := TrimLeft(ParsingString);
|
||||
end;
|
||||
|
||||
ClistItem.SubItems.Add(ParsingString);
|
||||
ClistItem.SubItems.Add(ExtractFileName(aFileName));
|
||||
ClistItem.SubItems.Add(IntToStr(LineNumber));
|
||||
// CListItem.ImageIndex := Ord(Info.Priority);
|
||||
end;
|
||||
aListitem := lvTodo.Items.Add;
|
||||
aListitem.Data := aTodoItem;
|
||||
if aTodoItem.Done then
|
||||
aListItem.Caption := 'X'
|
||||
else
|
||||
aListItem.Caption := ' ';
|
||||
aListitem.SubItems.Add(aTodoItem.Text);
|
||||
aListitem.SubItems.Add(IntToStr(aTodoItem.Priority));
|
||||
aListitem.SubItems.Add(aTodoItem.Module);
|
||||
aListitem.SubItems.Add(IntToStr(aTodoItem.LineNumber));
|
||||
aListitem.SubItems.Add(aTodoItem.Owner);
|
||||
aListitem.SubItems.Add(aTodoItem.Category);
|
||||
end;
|
||||
end;
|
||||
|
||||
//Load an FileName and find {#todox yyyyyy} where
|
||||
// x is the priority (0 by default)
|
||||
// yyyy it's the message one line only
|
||||
procedure TfrmTodo.LoadFile(const aFileName: string);
|
||||
|
||||
procedure TfrmTodo.LoadFile(aFileName: string);
|
||||
var
|
||||
Parser : TmwPasLex;
|
||||
EStream : TMemoryStream;
|
||||
ST : String;
|
||||
aTodoItem: TTodoItem;
|
||||
|
||||
begin
|
||||
St:=ExtractFileName(aFileName);
|
||||
//Quit this method if we have already scan this file
|
||||
if fScannedFile.IndexOf(St)<>-1 then Exit;
|
||||
StatusBar.SimpleText :=aFileName;// St;
|
||||
StatusBar.Repaint;
|
||||
|
||||
// Abort if this file has already been scanned
|
||||
if fScannedFile.IndexOf(St)<>-1 then
|
||||
Exit;
|
||||
|
||||
// Add file name to list of scanned files
|
||||
fScannedFile.Add(St);
|
||||
|
||||
// Display file name being processed
|
||||
//StatusBar.SimpleText := aFileName;
|
||||
//StatusBar.Repaint;
|
||||
|
||||
|
||||
EStream := TMemoryStream.Create;
|
||||
try
|
||||
//Echange of stream
|
||||
Try
|
||||
if not FileExists(aFileName) then
|
||||
if Assigned(Project1) then
|
||||
aFileName := AppendPathDelim(Project1.ProjectDirectory)+aFileName;
|
||||
EStream.LoadFromFile(aFileName);
|
||||
EStream.Position := EStream.Size;
|
||||
EStream.WriteByte(0); // Terminate string for TmwPasLex
|
||||
@ -411,13 +562,15 @@ begin
|
||||
the strategy ought to be to read the complete comment and only then
|
||||
start parsing. Also it would be better to move deleting of the comment
|
||||
tokens out of the parser }
|
||||
aTodoItem := nil;
|
||||
case Parser.TokenID of
|
||||
tkBorComment: ParseComment(aFileName, '{', '}', Parser.Token, Parser.LineNumber + 1);
|
||||
tkAnsiComment: ParseComment(aFileName, '(*', '*)', Parser.Token, Parser.LineNumber + 1);
|
||||
tkBorComment: aTodoItem := GetToDoItem(aFileName, '{', '}', Parser.Token, Parser.LineNumber + 1);
|
||||
tkAnsiComment: aTodoItem := GetToDoItem(aFileName, '(*', '*)', Parser.Token, Parser.LineNumber + 1);
|
||||
// Slash comments in CPP files should work if they are not in a {}
|
||||
tkSlashesComment: ParseComment(aFileName, '//', '', Parser.Token, Parser.LineNumber + 1);
|
||||
tkSlashesComment: aTodoItem := GetToDoItem(aFileName, '//', '', Parser.Token, Parser.LineNumber + 1);
|
||||
tkCompDirect : ParseDirective(Parser.Token);
|
||||
end;
|
||||
AddListItem(aTodoItem);
|
||||
Parser.Next;
|
||||
end;
|
||||
finally
|
||||
@ -429,6 +582,43 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TTodoItem }
|
||||
|
||||
function TTodoItem.GetAsString: string;
|
||||
begin
|
||||
// Todo/Done in two notations
|
||||
if AltNotation then
|
||||
begin
|
||||
if Done then
|
||||
Result := 'DONE'
|
||||
else
|
||||
Result := 'TODO';
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Done then
|
||||
Result := '#done'
|
||||
else
|
||||
Result := '#todo';
|
||||
end;
|
||||
// Priority
|
||||
if Priority > 0 then
|
||||
Result := Result + ' '+IntToStr(Priority);
|
||||
// Owner
|
||||
if Owner <> '' then
|
||||
Result := Result + ' -o'+Owner;
|
||||
// Category
|
||||
if Category <> '' then
|
||||
Result := Result + ' -c'+Category;
|
||||
// Text
|
||||
Result := Result + ' : ' + Text;
|
||||
end;
|
||||
|
||||
function TTodoItem.GetAsComment: string;
|
||||
begin
|
||||
Result := '{ '+AsString+' }';
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$i todolist.lrs}
|
||||
|
||||
|
@ -57,11 +57,11 @@ uses
|
||||
WordCompletion, FindReplaceDialog, FindInFilesDlg, IDEProcs, IDEOptionDefs,
|
||||
MacroPromptDlg, TransferMacros, CodeContextForm, CodeHelpForm,
|
||||
EnvironmentOpts, MsgView, SearchResultView, InputHistory, CodeMacroPrompt,
|
||||
CodeTemplatesDlg,
|
||||
CodeTemplatesDlg, TodoDlg, TodoList,
|
||||
SortSelectionDlg, EncloseSelectionDlg, DiffDialog, ConDef, InvertAssignTool,
|
||||
SourceEditProcs, SourceMarks, CharacterMapDlg, frmSearch,
|
||||
LazDocHints, LazDocFrm,
|
||||
BaseDebugManager, Debugger, MainIntf, TodoDlg;
|
||||
BaseDebugManager, Debugger, MainIntf;
|
||||
|
||||
type
|
||||
TSourceNotebook = class;
|
||||
@ -1918,13 +1918,13 @@ end;
|
||||
|
||||
procedure TSourceEditor.InsertTodo;
|
||||
Var
|
||||
TodoMsg: TStrings;
|
||||
aTodoItem: TTodoItem;
|
||||
begin
|
||||
if ReadOnly then Exit;
|
||||
TodoMsg:= TStringList.Create;
|
||||
if ShowTodoDialog(TodoMsg) then
|
||||
FEditor.SelText:=CommentText('TODO: '+TodoMsg.Text, comtPascal);
|
||||
TodoMsg.Free;
|
||||
aTodoItem := ExecuteTodoDialog;
|
||||
if Assigned(aTodoItem) then
|
||||
FEditor.SelText := aTodoItem.AsComment;
|
||||
aTodoItem.Free;
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.InsertDateTime;
|
||||
|
Loading…
Reference in New Issue
Block a user