Удаление граней кнопок [РЕШЕНИЕ] - PullRequest
2 голосов
/ 18 июня 2020

Всем привет. Я хочу знать, как я могу удалить две кнопки с помощью кнопки.

Я пробовал это:

gui: [
  en: button "English" remove [en es]
  es: button "Spanih" remove [en es]
]

И затем мне нужно добавить новые кнопки.

Ответы [ 2 ]

3 голосов
/ 18 июня 2020

Просмотр движка моделей GUI интерфейса в виде дерева объектов; каждый узел в этом дереве называется лицом, и каждое поле этого лица называется фасетом.

Два фасета, parent и pane, связывают грань с его родительским узлом и его дочерними узлами, соответственно. Итак, согласно этой теории, удаление кнопки означает удаление лица button с панели ее родительского элемента:

view [button "Poof!" [probe select take face/parent/pane 'text]]

Однако это немного ограниченный подход. Удаленная грань отсоединяется от дерева просмотра и больше не может использоваться, если вы повторно не прикрепите объект face! с той же спецификацией обратно к панели. Может быть, более полезно просто отключить кнопку или временно сделать ее невидимой. Именно этого можно достичь с помощью фасетов enabled? и visible?:

view [
    title "Face flags example"
    below
    toggle "Toggle" [foo/enabled?: not foo/enabled?]
    foo: button "Switch" disabled [bar/visible?: not bar/visible?]
    bar: base red
]

Вы можете адаптировать этот подход к текущей задаче. Насколько я понимаю, вы хотите предложить взаимоисключающие варианты локализации; drop-list может подойти для этого:

view [drop-list data ["en" "es"]]
2 голосов
/ 18 июня 2020

Вы можете попробовать это:

Red [Needs: View]
view [
    en: button "English" [remove find face/parent/pane en]
    es: button "Spanish" [
        remove find face/parent/pane en
        remove find face/parent/pane es
    ]
]
...