Как использовать атрибут ТЕМЫ IUP/глобальный атрибут DEFAULTTHEME

#lua #iup

Вопрос:

IUP 3.26 ввел атрибут ТЕМЫ:

Общий атрибут ТЕМЫ и глобальный атрибут DEFAULTTHEME, который работает для всех элементов управления, чтобы применить набор атрибутов одновременно.

Я использую IUP 3.28 и следую (я думаю) документации для стандартизации внешнего вида различных элементов управления; однако он работает не так, как я ожидаю-на самом деле он, похоже, вообще не работает. Атрибуты, указанные в Теме для каждого элемента управления, не применяются, поэтому очевидно, что я что-то неправильно понял. В примере кнопка должна иметь розовый текст, но это не так.

       require "iuplua"
      iup.SetGlobal("DLGBGCOLOR","255 255 255") --default background colour
      iup.SetGlobal("TXTBGCOLOR", "255,255,255") --default text color
    
      myButtonTheme = iup.user{alignment="ALEFT:ACENTER", expand = "HORIZONTAL",
        padding = "20x10", fgcolor = "255 0 255"}
    
      myTheme = iup.user{
        IUPBUTTON = myButtonTheme
      }
    
      iup.SetGlobal("DEFAULTTHEME", "myTheme") --default settings for iup controls
      b = iup.button{title = "This should be pink"}
      dlg = iup.dialog{iup.hbox{b}}
      dlg:show()
      iup.MainLoop()
      dlg:destroy()
 

ETA: Если я создам кнопку таким образом: b = iup.button{title = "This should be pink", theme = myButtonTheme} она работает; но если я полагаюсь на DEFAULTEME, это не так. У меня есть несколько кнопок, созданных библиотеками, которые я хочу последовательно тематизировать

Ответ №1:

Он пропускает вызов:

  iup.SetHandle("myTheme", myTheme)
 

После создания элемента управления мифемой Lua.

Комментарии:

1. Спасибо. Мне придется ломать голову, почему ручка должна быть установлена для мифемы, но не для моей темы, но теперь, по крайней мере, я могу добиться того, чего хочу.