- Popup Menus

From: [at]} <Gérard>
Date: Thu, 27 Jul 2006 18:13:03 +0200

----boundary-LibPST-iamunique-1317442754_-_-
Content-type: text/plain

Gérard Meunier a écrit :
> Hello Robert,
>> This is something I thought I had done before,
>> but have now completely forgotten how to do it.
>>
>>
>> I have written a View that can be pasted into
>> any Container (although I am probably only
>> interested in a TextView). What I want to do
>> is have a couple of context sensitive specific Commands
>> available in the 'right-click' PopUp Menu when my View
>> selected (or Focussed, but I prefer selected).
>>
>> Can someone advise me how to do this?

>>
> 1) Write a popup menu for your view:
>
> MENU "*" ("MyViews.View")
> "#My:Edit" "E" "MyViews.Edit" "MyViews.EditGuard"
> END
>
> 2) Add these lines in the HandleCtrlMsg procedure of your View:
>
> PROCEDURE (v: View) HandleCtrlMsg* (f: Views.Frame; VAR msg:
> Controllers.Message; VAR focus: Views.View);
> BEGIN
> WITH
> |msg: Controllers.TrackMsg DO
> IF HostPorts.right IN msg.modifiers THEN
> HostMenus.PopupMenu;
> ELSE
> ...
> END;
> ...
> END;
> END HandleCtrlMsg;
>
> To open the popup menu, the View must be in edit mode (focussed).
>
> Cheers.
>
> Gérard
Sorry, but I forgot one step:

    3) Add also these lines in the HandleCtrlMsg procedure:

            WITH
                ...
                |msg: Controllers.PollOpsMsg DO
                    msg.type := "MyViews.View";
                ...
            END;

 From the docu: The field "type" denotes a context for the focus view.
This context is used to determine which menus are relevant for the focus
view. As a convention, a view assigns the type name of its abstract base
pointer type to type, e.g., "TextViews.View". This convention guarantees
globally unique context names, since module names are considered
globally unique. If the view doesn't support any such context, ignore
this field.

Consequently, there is no need to export "MyViews.View".

Gérard

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-1317442754_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJc
Zm5pbFxmY2hhcnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBO
ZXc7fX0NCntcY29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7
fQ0KXHVjMVxwYXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyMCBHXCdlOXJhcmQgTWV1bmllciBh
IFwnZTljcml0IDpccGFyDQo+IEhlbGxvIFJvYmVydCxccGFyDQo+PiBUaGlzIGlzIHNvbWV0aGlu
ZyBJIHRob3VnaHQgSSBoYWQgZG9uZSBiZWZvcmUsXHBhcg0KPj4gYnV0IGhhdmUgbm93IGNvbXBs
ZXRlbHkgZm9yZ290dGVuIGhvdyB0byBkbyBpdC5ccGFyDQo+PlxwYXINCj4+XHBhcg0KPj4gSSBo
YXZlIHdyaXR0ZW4gYSBWaWV3IHRoYXQgY2FuIGJlIHBhc3RlZCBpbnRvXHBhcg0KPj4gYW55IENv
bnRhaW5lciAoYWx0aG91Z2ggSSBhbSBwcm9iYWJseSBvbmx5XHBhcg0KPj4gaW50ZXJlc3RlZCBp
biBhIFRleHRWaWV3KS4gV2hhdCBJIHdhbnQgdG8gZG9ccGFyDQo+PiBpcyBoYXZlIGEgY291cGxl
IG9mIGNvbnRleHQgc2Vuc2l0aXZlIHNwZWNpZmljIENvbW1hbmRzXHBhcg0KPj4gYXZhaWxhYmxl
IGluIHRoZSAncmlnaHQtY2xpY2snIFBvcFVwIE1lbnUgd2hlbiBteSBWaWV3XHBhcg0KPj4gc2Vs
ZWN0ZWQgKG9yIEZvY3Vzc2VkLCBidXQgSSBwcmVmZXIgc2VsZWN0ZWQpLlxwYXINCj4+XHBhcg0K
Pj4gQ2FuIHNvbWVvbmUgYWR2aXNlIG1lIGhvdyB0byBkbyB0aGlzP1xwYXINCj4+ICAgXHBhcg0K
PiAxKSBXcml0ZSBhIHBvcHVwIG1lbnUgZm9yIHlvdXIgdmlldzpccGFyDQo+XHBhcg0KPiAgICBN
RU5VICIqIiAoIk15Vmlld3MuVmlldyIpXHBhcg0KPiAgICAgICAiI015OkVkaXQiICAgIkUiICAg
Ik15Vmlld3MuRWRpdCIgICAiTXlWaWV3cy5FZGl0R3VhcmQiXHBhcg0KPiAgICBFTkRccGFyDQo+
XHBhcg0KPiAyKSBBZGQgdGhlc2UgbGluZXMgaW4gdGhlIEhhbmRsZUN0cmxNc2cgcHJvY2VkdXJl
IG9mIHlvdXIgVmlldzpccGFyDQo+XHBhcg0KPiAgICBQUk9DRURVUkUgKHY6IFZpZXcpIEhhbmRs
ZUN0cmxNc2cqIChmOiBWaWV3cy5GcmFtZTsgVkFSIG1zZzogXHBhcg0KPiBDb250cm9sbGVycy5N
ZXNzYWdlOyBWQVIgZm9jdXM6IFZpZXdzLlZpZXcpO1xwYXINCj4gICAgICAgICAgICAgQkVHSU5c
cGFyDQo+ICAgICAgICAgICAgV0lUSFxwYXINCj4gICAgICAgICAgICAgICAgfG1zZzogQ29udHJv
bGxlcnMuVHJhY2tNc2cgRE9ccGFyDQo+ICAgICAgICAgICAgICAgICAgICBJRiBIb3N0UG9ydHMu
cmlnaHQgSU4gbXNnLm1vZGlmaWVycyBUSEVOXHBhcg0KPiAgICAgICAgICAgICAgICAgICAgICAg
IEhvc3RNZW51cy5Qb3B1cE1lbnU7XHBhcg0KPiAgICAgICAgICAgICAgICAgICAgRUxTRVxwYXIN
Cj4gICAgICAgICAgICAgICAgICAgICAgIC4uLlxwYXINCj4gICAgICAgICAgICAgICAgICAgIEVO
RDtccGFyDQo+ICAgICAgICAgICAgICAgIC4uLlxwYXINCj4gICAgICAgICAgICBFTkQ7XHBhcg0K
PiAgICAgICAgRU5EIEhhbmRsZUN0cmxNc2c7XHBhcg0KPlxwYXINCj4gVG8gb3BlbiB0aGUgcG9w
dXAgbWVudSwgdGhlIFZpZXcgbXVzdCBiZSBpbiBlZGl0IG1vZGUgKGZvY3Vzc2VkKS5ccGFyDQo+
XHBhcg0KPiBDaGVlcnMuXHBhcg0KPlxwYXINCj4gR1wnZTlyYXJkXHBhcg0KU29ycnksIGJ1dCBJ
IGZvcmdvdCBvbmUgc3RlcDpccGFyDQpccGFyDQogICAgMykgQWRkIGFsc28gdGhlc2UgbGluZXMg
aW4gdGhlIEhhbmRsZUN0cmxNc2cgcHJvY2VkdXJlOlxwYXINClxwYXINCiAgICAgICAgICAgIFdJ
VEhccGFyDQogICAgICAgICAgICAgICAgLi4uXHBhcg0KICAgICAgICAgICAgICAgIHxtc2c6IENv
bnRyb2xsZXJzLlBvbGxPcHNNc2cgRE9ccGFyDQogICAgICAgICAgICAgICAgICAgIG1zZy50eXBl
IDo9ICJNeVZpZXdzLlZpZXciO1xwYXINCiAgICAgICAgICAgICAgICAuLi5ccGFyDQogICAgICAg
ICAgICBFTkQ7XHBhcg0KXHBhcg0KIEZyb20gdGhlIGRvY3U6IFRoZSBmaWVsZCAidHlwZSIgZGVu
b3RlcyBhIGNvbnRleHQgZm9yIHRoZSBmb2N1cyB2aWV3LiBccGFyDQpUaGlzIGNvbnRleHQgaXMg
dXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggbWVudXMgYXJlIHJlbGV2YW50IGZvciB0aGUgZm9jdXMg
XHBhcg0Kdmlldy4gQXMgYSBjb252ZW50aW9uLCBhIHZpZXcgYXNzaWducyB0aGUgdHlwZSBuYW1l
IG9mIGl0cyBhYnN0cmFjdCBiYXNlIFxwYXINCnBvaW50ZXIgdHlwZSB0byB0eXBlLCBlLmcuLCAi
VGV4dFZpZXdzLlZpZXciLiBUaGlzIGNvbnZlbnRpb24gZ3VhcmFudGVlcyBccGFyDQpnbG9iYWxs
eSB1bmlxdWUgY29udGV4dCBuYW1lcywgc2luY2UgbW9kdWxlIG5hbWVzIGFyZSBjb25zaWRlcmVk
IFxwYXINCmdsb2JhbGx5IHVuaXF1ZS4gSWYgdGhlIHZpZXcgZG9lc24ndCBzdXBwb3J0IGFueSBz
dWNoIGNvbnRleHQsIGlnbm9yZSBccGFyDQp0aGlzIGZpZWxkLlxwYXINClxwYXINCkNvbnNlcXVl
bnRseSwgdGhlcmUgaXMgbm8gbmVlZCB0byBleHBvcnQgIk15Vmlld3MuVmlldyIuXHBhcg0KXHBh
cg0KR1wnZTlyYXJkXHBhcg0KXHBhcg0KLS0tIEJsYWNrQm94XHBhcg0KLS0tIHNlbmQgc3ViamVj
dCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRvIGJsYWNrYm94QG9iZXJvbi5jaH19AG9uLmNoIFsyMTI

----boundary-LibPST-iamunique-1317442754_-_---
Received on Thu Jul 27 2006 - 18:13:03 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:27:49 UTC