102 lines
2.6 KiB
Plaintext
102 lines
2.6 KiB
Plaintext
{
|
|
Coco/R-file specific support (*.atg)
|
|
}
|
|
|
|
unit CocoR;
|
|
|
|
{ Global variables }
|
|
var
|
|
CocoRItem: TMenuItem;
|
|
CocoRItemAdd: TMenuItem;
|
|
CocoRShowProductionsItem: TMenuItem;
|
|
|
|
const
|
|
CocoRGotoProductionLineOffset = 3;
|
|
|
|
{ function NewItem(const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; const AName: string): TMenuItem; }
|
|
|
|
procedure InitCocoR;
|
|
var
|
|
Empty: Integer;
|
|
Ctrl: Integer;
|
|
begin
|
|
CocoRItem := nil;
|
|
CocoRItem := NewItem('&Coco/R', 0, False, True, 0, nil {ignored - always must be nil}, 'miCocoR');
|
|
MainWindow.Menu.Items.Insert(MainWindow.Menu.Items.Count - 1, CocoRItem);
|
|
CocoRItem.OnClick := CocoRClick;
|
|
CocoRItem.Visible := False;
|
|
|
|
Empty := [];
|
|
Ctrl := [ssCtrl];
|
|
|
|
CocoRShowProductionsItem := NewItem('Go To Production', ShortCut(ord('L'), Ctrl), False, True, 0, 0, 'miCocoRShowProductionsItem');
|
|
CocoRShowProductionsItem.OnClick := CocoRShowProductionsItemClick;
|
|
CocoRItem.Add(CocoRShowProductionsItem);
|
|
end;
|
|
|
|
procedure OpenCocoR(FileName: string);
|
|
begin
|
|
CocoRItem.Visible := Cmp(Editor.HighlighterName, 'CocoR');
|
|
CocoRItem.Enabled := CocoRItem.Visible;
|
|
end;
|
|
|
|
procedure CloseCocoR(FileName: string);
|
|
begin
|
|
CocoRItem.Visible := False;
|
|
CocoRItem.Enabled := CocoRItem.Visible;
|
|
end;
|
|
|
|
procedure CocoRClick(Sender: TObject);
|
|
begin
|
|
// IniItemFind.Enabled := P > 0;
|
|
end;
|
|
|
|
procedure CocoRShowProductionsItemClick(Sender: TObject);
|
|
var
|
|
Form: TForm;
|
|
ListBox: TListBox;
|
|
i: Integer;
|
|
S: string;
|
|
Y: Integer;
|
|
YY: Integer;
|
|
Save: Boolean;
|
|
begin
|
|
// All forms was constructed in Delphi 5....
|
|
Form := JvInterpreterMakeForm(WorkingDir + 'fIniSections.pas');
|
|
try
|
|
ListBox := Form.FindComponent('ListBox1');
|
|
Y := Editor.CaretY;
|
|
YY := -1;
|
|
Save := False;
|
|
for i := 0 to Editor.Lines.Count - 1 do
|
|
begin
|
|
S := Editor.Lines.Strings[i];
|
|
if Cmp(S, 'PRODUCTIONS') then
|
|
Save := True;
|
|
if Save and (Length(S) > 2) then
|
|
if S[1] <> ' ' then
|
|
begin
|
|
ListBox.Items.AddObject(S, i);
|
|
if (YY = -1) and (Y < i) then
|
|
YY := ListBox.Items.Count - 2;
|
|
end;
|
|
end;
|
|
if YY = -1 then
|
|
YY := ListBox.Items.Count - 1;
|
|
ListBox.ItemIndex := YY;
|
|
if Form.ShowModal = mrOk then
|
|
if ListBox.ItemIndex > -1 then
|
|
begin
|
|
i := Integer(ListBox.Items.Objects[ListBox.ItemIndex]);
|
|
Editor.SetLeftTop(0, i - IniGotoSectionLineOffset);
|
|
Editor.CaretY := i + 1;
|
|
Editor.CaretX := 0;
|
|
end;
|
|
finally
|
|
Form.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|