MG: added TPopupMenu.OnPopup and SourceEditor PopupMenu checks

git-svn-id: trunk@1848 -
This commit is contained in:
lazarus 2002-08-17 07:57:05 +00:00
parent 7a18985011
commit ce83336615
4 changed files with 101 additions and 39 deletions

View File

@ -277,6 +277,23 @@ type
APageIndex: integer; DeleteForwardHistory: boolean) of object;
TSourceNotebook = class(TForm)
ReadOnlyMenuItem: TMenuItem;
ShowLineNumbersMenuItem: TMenuItem;
procedure SrcPopUpMenuPopup(Sender: TObject);
Procedure BookMarkClicked(Sender : TObject);
Procedure BookMarkGotoClicked(Sender : TObject);
Procedure ReadOnlyClicked(Sender : TObject);
Procedure ShowUnitInfo(Sender : TObject);
Procedure ToggleBreakpointClicked(Sender : TObject);
Procedure AddWatchAtCursor(Sender : TObject);
Procedure ToggleLineNumbersClicked(Sender : TObject);
Procedure OpenAtCursorClicked(Sender : TObject);
Procedure FindDeclarationClicked(Sender : TObject);
Procedure BookmarkGoTo(Index: Integer);
Procedure BookMarkSet(Value : Integer);
Procedure BookMarkToggle(Value : Integer);
procedure EditorPropertiesClicked(Sender: TObject);
private
FMainIDE : TComponent;
FFormEditor : TFormEditor;
@ -323,20 +340,6 @@ type
// PopupMenu
Procedure BuildPopupMenu;
Procedure BookMarkClicked(Sender : TObject);
Procedure BookMarkGotoClicked(Sender : TObject);
Procedure ReadOnlyClicked(Sender : TObject);
Procedure ShowUnitInfo(Sender : TObject);
Procedure ToggleBreakpointClicked(Sender : TObject);
Procedure AddWatchAtCursor(Sender : TObject);
Procedure ToggleLineNumbersClicked(Sender : TObject);
Procedure OpenAtCursorClicked(Sender : TObject);
Procedure FindDeclarationClicked(Sender : TObject);
Procedure BookmarkGoTo(Index: Integer);
Procedure BookMarkSet(Value : Integer);
Procedure BookMarkToggle(Value : Integer);
procedure EditorPropertiesClicked(Sender: TObject);
Procedure BreakPointCreated(Sender : TObject; Line : Integer);
Procedure BreakPointDeleted(Sender : TObject; Line : Integer);
@ -389,6 +392,8 @@ type
function EditorCount:integer;
function FindSourceEditorWithPageIndex(PageIndex:integer):TSourceEditor;
function FindPageWithEditor(ASourceEditor: TSourceEditor):integer;
function FindSourceEditorWithEditorComponent(
EditorComp: TComponent): TSourceEditor;
Function GetActiveSE : TSourceEditor;
procedure LockAllEditorsInSourceChangeCache;
procedure UnlockAllEditorsInSourceChangeCache;
@ -748,7 +753,7 @@ end;
Function TSourceEditor.GetReadOnly : Boolean;
Begin
Result := FEditor.ReadOnly;
Result:=FEditor.ReadOnly;
End;
procedure TSourceEditor.SetReadOnly(NewValue: boolean);
@ -2274,6 +2279,18 @@ begin
FOnEditorPropertiesClicked(Sender);
end;
procedure TSourceNotebook.SrcPopUpMenuPopup(Sender: TObject);
var
ASrcEdit: TSourceEditor;
begin
if not (Sender is TPopupMenu) then exit;
ASrcEdit:=FindSourceEditorWithEditorComponent(TPopupMenu(Sender).PopupComponent);
if ASrcEdit=nil then exit;
ReadOnlyMenuItem.Checked:=ASrcEdit.ReadOnly;
ShowLineNumbersMenuItem.Checked:=
ASrcEdit.EditorComponent.Gutter.ShowLineNumbers;
end;
Procedure TSourceNotebook.BuildPopupMenu;
Function Seperator : TMenuItem;
@ -2289,6 +2306,7 @@ var
Begin
SrcPopupMenu := TPopupMenu.Create(Self);
SrcPopupMenu.AutoPopup := True;
SrcPopupMenu.OnPopup :=@SrcPopUpMenuPopup;
MenuItem := TMenuItem.Create(Self);
MenuItem.Name:='FindDeclarationMenuItem';
@ -2342,17 +2360,19 @@ Begin
SrcPopupMenu.Items.Add(Seperator);
MenuItem := TMenuItem.Create(Self);
MenuItem.Name:='ReadOnlyMenuItem';
MenuItem.Caption := 'Read Only';
MenuItem.OnClick := @ReadOnlyClicked;
SrcPopupMenu.Items.Add(MenuItem);
ReadOnlyMenuItem := TMenuItem.Create(Self);
ReadOnlyMenuItem.Name:='ReadOnlyMenuItem';
ReadOnlyMenuItem.Caption := 'Read Only';
ReadOnlyMenuItem.OnClick := @ReadOnlyClicked;
ReadOnlyMenuItem.ShowAlwaysCheckable:=true;
SrcPopupMenu.Items.Add(ReadOnlyMenuItem);
MenuItem := TMenuItem.Create(Self);
MenuItem.Name := 'ShowLineNumbersMenuItem';
MenuItem.Caption := 'Show Line Numbers';
menuItem.OnClick := @ToggleLineNumbersClicked;
SrcPopupMenu.Items.Add(MenuItem);
ShowLineNumbersMenuItem := TMenuItem.Create(Self);
ShowLineNumbersMenuItem.Name := 'ShowLineNumbersMenuItem';
ShowLineNumbersMenuItem.Caption := 'Show Line Numbers';
ShowLineNumbersMenuItem.OnClick := @ToggleLineNumbersClicked;
ShowLineNumbersMenuItem.ShowAlwaysCheckable:=true;
SrcPopupMenu.Items.Add(ShowLineNumbersMenuItem);
SrcPopupMenu.Items.Add(Seperator);
@ -2395,6 +2415,7 @@ Begin
MenuItem.OnClick :=@EditorPropertiesClicked;
SrcPopupMenu.Items.Add(MenuItem);
end;
{-------------------------------------------------------------------------------
@ -2728,6 +2749,7 @@ end;
Procedure TSourceNotebook.ReadOnlyClicked(Sender : TObject);
var ActEdit:TSourceEditor;
begin
writeln('DDD1');
ActEdit:=GetActiveSE;
if ActEdit.ReadOnly and (ActEdit.CodeBuffer<>nil)
and (not ActEdit.CodeBuffer.IsVirtual)
@ -3078,6 +3100,19 @@ begin
end;
end;
function TSourceNotebook.FindSourceEditorWithEditorComponent(
EditorComp: TComponent): TSourceEditor;
var i: integer;
begin
for i:=0 to EditorCount-1 do begin
if Editors[i].EditorComponent=EditorComp then begin
Result:=Editors[i];
exit;
end;
end;
Result:=nil;
end;
Procedure TSourceNotebook.NotebookPageChanged(Sender : TObject);
var TempEditor:TSourceEditor;
Begin

View File

@ -15,6 +15,17 @@
* *
*****************************************************************************
}
{------------------------------------------------------------------------------
procedure TPopupMenu.DoPopup(Sender: TObject);
Creates the popup window and shows it.
------------------------------------------------------------------------------}
procedure TPopupMenu.DoPopup(Sender: TObject);
begin
if Assigned(FOnPopup) then FOnPopup(Sender);
end;
{------------------------------------------------------------------------------
Method: TPopupMenu.Create
Params: AOwner: the owner of the class
@ -30,18 +41,19 @@ begin
end;
Procedure TPopupMenu.PopUp(X,Y : Integer);
var
P : TPoint;
begin
P.X := X;
P.Y := Y;
FPopupPoint := Point(X, Y);
DoPopup(Self);
HandleNeeded;
InterfaceObject.IntSendMessage3(LM_POPUPSHOW, Self, @P);
InterfaceObject.IntSendMessage3(LM_POPUPSHOW, Self, @FPopupPoint);
end;
{
$Log$
Revision 1.5 2002/08/17 07:57:05 lazarus
MG: added TPopupMenu.OnPopup and SourceEditor PopupMenu checks
Revision 1.4 2002/05/10 06:05:55 lazarus
MG: changed license to LGPL

View File

@ -208,20 +208,23 @@ var
Mess : TLMessage;
LCLMenuItem: TMenuItem;
begin
Result:=true;
EventTrace('activate', data);
if GTK_IS_CHECK_MENU_ITEM(widget) then begin
LCLMenuItem:=TMenuItem(GetLCLObject(Widget));
if LCLMenuItem<>nil then begin
if (not LCLMenuItem.AutoCheck) then begin
// restore 'checked' flag
if ((PGtkCheckMenuItem(Widget)^.flag0 and bm_checkmenuitem_active)<>0)
<>LCLMenuItem.Checked
then begin
gtk_check_menu_item_set_active(PGtkCheckMenuItem(Widget),
LCLMenuItem.Checked);
Result:=true;
exit;
if ((PGtkCheckMenuItem(Widget)^.flag0 and bm_checkmenuitem_active)<>0)
<>LCLMenuItem.Checked
then begin
if (not LCLMenuItem.AutoCheck) then begin
// the gtk always toggles the check flag
// restore 'checked' flag
PGtkCheckMenuItem(Widget)^.flag0:=
PGtkCheckMenuItem(Widget)^.flag0 and not bm_checkmenuitem_active;
end;
end else begin
// menuitem is already in sync -> don't send a change event
exit;
end;
end;
end;
@ -2139,6 +2142,9 @@ end;
{ =============================================================================
$Log$
Revision 1.98 2002/08/17 07:57:05 lazarus
MG: added TPopupMenu.OnPopup and SourceEditor PopupMenu checks
Revision 1.97 2002/08/15 13:37:57 lazarus
MG: started menuitem icon, checked, radio and groupindex

View File

@ -257,14 +257,20 @@ type
TPopupMenu = class(TMenu)
private
FAutoPopup : Boolean;
FOnPopup: TNotifyEvent;
FPopupComponent : TComponent;
FPopupPoint: TPoint;
protected
procedure DoPopup(Sender: TObject); virtual;
public
constructor Create(AOwner: TComponent); override;
procedure PopUp(X, Y : Integer);
property PopupComponent : TComponent
read FPopupComponent write FPopupComponent;
property PopupPoint: TPoint read FPopupPoint;
published
property AutoPopup : Boolean read FAutoPopup write FAutoPopup default True;
property OnPopup: TNotifyEvent read FOnPopup write FOnPopup;
end;
@ -457,6 +463,9 @@ end.
{
$Log$
Revision 1.25 2002/08/17 07:57:05 lazarus
MG: added TPopupMenu.OnPopup and SourceEditor PopupMenu checks
Revision 1.24 2002/08/16 20:13:09 lazarus
MG: custom external tools are now shown in the menu