close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Last modified 12 years ago

#1244 accepted enhancement

delegar opciones de menu en miembros de instancia

Reported by: Jorge Owned by: Jorge
Priority: high Milestone: TOL Packages
Component: GuiTools Version: head
Severity: critical Keywords:
Cc: Pedro Gea

Description

Cuando una clase A se compone de otras clases, B y C por ejemplo, puede ser util incorpoar las opciones de menu definidas para las clases B y C como opciones de submenu en el menu de opciones de A.

Change History (8)

comment:1 Changed 14 years ago by Jorge

Status: newaccepted

Una aproximación puede ser:

Real GuiTools::MenuManager::delegateMenuCommand("MMS::@Estimation", "GetStrategy", [[ 
  Text name = "StrategyOptions",
  Text label = "Strategy",
  Text image = "",
  Real flagGroup = 0,
  Real rank = 3010
]]

Lo anterior implica que al menu contextual de un objeto de tipo MMS::@Estimation se le añadirá un submenu bajo el título "Strategy" que contendrás las opciones definida en la clase de la instancia retornada por el método "GetStrategy"

comment:2 Changed 14 years ago by Jorge

(In [3628]) refs #1244

Se delega opciones de submenu en miembros de una instancia mediante la función GuiTools::MenuManager::delegateSubmenu. Los submenus delegados se crean con GuiTools::MenuManager::defineDelegatedSubmenus(?);.

Por ejemplo en MMS delegamos en la @Strategy desde @Estimation así:

GuiTools::MenuManager::delegateSubmenu
(
  "MMS::@Estimation",
  "MMS::@Strategy",
  "GetStrategy(?)",
  [[
     Text name = "MMS.Estimation_Strategy",
     Text label = "Estrategia"
  ]]
)

comment:3 Changed 14 years ago by Jorge

(In [3629]) refs #1244

Incluimos en los tests opciones delegadas.

comment:4 Changed 14 years ago by Pedro Gea

¿Podría delegarse en un atributo sin indicar explícitamente su clase?

En el ejemplo se indica que la clase que devuelve el método GetStrategy(?) es MMS::@Strategy pero sería tremendamente útil poder determinar ésto en tiempo de evaluación. Imagínese para el caso que se pone como ejemplo que de la clase @Strategy se derivan distintas clases (como es el caso) y cada una tiene su menú contextual particular.

Sería útil incluso poder delegar submenús en atributos de otras gramáticas, véase #1252.

comment:5 Changed 13 years ago by Pedro Gea

Severity: majorcritical

Actualmente no funciona esta utilidad, auqnue creo que en algún momento funcionó algo.

comment:6 Changed 13 years ago by Jorge

(In [4447]) refs #1244, #1364, #1480, cambios en los test para adaptarse a la reimplementación de MenuManager.

comment:7 Changed 13 years ago by Jorge

(In [4448]) refs #1244, #1364, #1480, reimplementación de MenuManager:

  • creación apropiada opciones de menu delegadas
  • redefinición de imagenes y opciones de menu
  • unificación de las etiquetas de menu, se usa el mismo método para crear etiquetas de submenu como etiquetas de tipo de dato.

comment:8 Changed 12 years ago by Jorge

(In [5017]) refs #1244, #1480 set the following functions as deprecated:

  • defineTypeLabel
  • delegateSubmenu
  • defineDelegatedSubmenus
Note: See TracTickets for help on using tickets.