1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Mel. Управление элементами окна.

Тема в разделе "Maya", создана пользователем Александр Ильин 131446, 4 мар 2014.

Модераторы: Dark™, Skif
  1. Александр Ильин 131446

    Александр Ильин 131446 Пользователь сайта

    С нами с:
    26.06.2011
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Добрый день. При написании GUI на Mel возникла следующая проблема: Я хочу чтобы при нажатии на кнопку из внешней процедуры изменялись элементы окна - к примеру в scrollfield появлялся некий текст. Ниже привожу текст скрипта для создания окна. Интересует следующее, можно ли изменять элементы в окне из внешней процедуры? Нужно ли каждый раз убивать и заново рисовать окно при каждом таком изменении?

     
  2. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Воть:

    Код:
    global proc WindowGUI()
    {
    if (`window -exists WindowGUI`) deleteUI WindowGUI;
    
    window -t "Window GUI Form" -widthHeight 300 300 -rtf true -sizeable false WindowGUI; //инициализация окна
    string $form = `formLayout`;
    string $BackgroundImage = ` picture -width 300 -height 300 -image "Background.png"`; // Фоновая картинка, 300х300
    string $SelectionScrollField = `scrollField -wordWrap 1 -nl 10 -w 200 -h 200 -cl -enable false -editable false qwe`; // поле для текста
    string $Button_ShowText = `button -label "Show text on Form" -w 160 -h 25 -command ShowTextOnForm Button_ShowText`; // Кнопка, запускает процедуру ShowTextOnForm
    formLayout -edit
    -attachForm $SelectionScrollField "top" 50
    -attachForm $SelectionScrollField "left" 50 // размещаем панель на форме
    
    -attachForm $Button_ShowText "top" 260
    -attachForm $Button_ShowText "left" 70 // размещаем кнопку на форме
    $form;
    
    showWindow WindowGUI;
    }
    
    global proc ShowTextOnForm()
    {
    
    string $a = "aasdasdasd";
    //?! Как управлять окном WindowGUI из этой процедуры
    scrollField -e -it $a qwe;
    
    }
    
    WindowGUI;
    
     
  3. Александр Ильин 131446

    Александр Ильин 131446 Пользователь сайта

    С нами с:
    26.06.2011
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    2
    Спасибо, помогло.
    Я так понимаю, что проблема у меня была в том, что я не задал имя для ScrollField в окне? И так можно обращаться к любому элементу по его имени если процедура создания окна глобальная?

    Тогда вопрос посложнее. У меня на форме есть кнопки, которые выделяют определенный объект в сцене по его имени. Мне нужна обратная связь, чтобы когда я выделял объект соответствующие кнопки на форме меняли иконку. Я так понимаю, что для этого нужна некая процедура которая запускается через ScriptJob при открытии сцены и постоянно проверяет что за объекты выделены и если они соотв. списку то менять иконку на кнопках. Возможно ли это сделать, и если да, то как лучше это оформить?
     
  4. Александр Чернега

    Александр Чернега Знаток

    С нами с:
    24.12.2009
    Сообщения:
    1.058
    Симпатии:
    56
    Баллы:
    53
    Товарищи, прошу прощения за столь примитивный вопрос, но может кто-то подгонит рабочий код.
    Хочу, что бы окно Оутлайнера открывалась как вкладка слева.

    Я понимаю, что есть такой пресет. Но мне хочется, что бы окно в виде панели слева, было при любом пресете. Я находил код в хелпе, но так с ним и не разобрался.

    Сейчас использую довольно извращенную технику. Открываю Туул Сеттинг, и по верх него, пристраиваю Оутлайнер.

    Код:
    if ( `window -exists outlinerPanel1Window` )
    { 
    deleteUI -window outlinerPanel1Window;
    toolPropertyWindow -inMainWindow true;
    toggleUIComponentVisibility ("Tool Settings");
    }
    else 
    {
    tearOffPanel "Outliner" "outlinerPanel" false;
    toolPropertyWindow -inMainWindow true;
    }
     
  5. Александр Иванов

    Александр Иванов Активный участник

    С нами с:
    18.06.2013
    Сообщения:
    38
    Симпатии:
    4
    Баллы:
    7
  6. Александр Иванов

    Александр Иванов Активный участник

    С нами с:
    18.06.2013
    Сообщения:
    38
    Симпатии:
    4
    Баллы:
    7
    Ой, здесь оба вопрошающих - Александры! =) Мой ответ Александру Чернеге. Получится что-то наподобие Channel Box - с возможностью "прилеплять" к левому и правому краю основного окна. Редактируя флаг allowedArea команды dockControl, можно научить окошко прилепляться также к верху и низу окна. Если положишь скрипт файликом в папку scripts и импортнёшь его в userSetup.mel (с помощью командыpython("import название файла")) - то у тебя майка так прям с ним открываться и будет сразу. Насчёт мела я некомпетентен, поэтому первому Александру наврятле помогу. Единственное - скрипт джоб я бы делал не на запуск программы, а на открытие твоего окошка. Потому что пока оно не открыто скрипт джоб будет в холостую работать.
     
Модераторы: Dark™, Skif

Поделиться этой страницей