Render.ru

Mel. Hide\UnHide OutlinerWindow.

SLONIK_ZX

Активный участник
Рейтинг
14
#1
Добрый день ! Такая проблема: У меня есть бестолковый хоткей-
---------------------------
if (`window -ex outlinerPanel1Window`)
{
deleteUI outlinerPanel1Window;
}
else
{
OutlinerWindow;
}
---------------------------
Бестолковый потому, что удаляясь и создаваясь вновь, открытые деревья становятся закрытыми и приходится вновь открывать иерархию.
Хочу настроить тоггл флажка видимости для окна.
Но почему я не могу достучаться до окна по его имени после того, как его скрываю? Может быть, имя как-то меняется?
---------------------------
OutlinerWindow;
window -edit -visible false outlinerPanel1Window;

window -edit -visible false outlinerPanel1Window;
// Error: Object not found: outlinerPanel1Window //
window -edit -visible true outlinerPanel1Window;
// Error: Object not found: outlinerPanel1Window //
---------------------------
 

Grape

Активный участник
Рейтинг
5
#2
:) забавно я вот уже час сижу не могу докопаться. Непонятно почему.

в общем если у кого получится напишите плз, очень полезный вопрос.
 

Grape

Активный участник
Рейтинг
5
#3
Дошло. При создании аутлайнера нужно дописывать -ret
таким образом он при закрытии не будет удаляться, а будет только скрываться.

window -ret;

frameLayout -labelVisible false;

string $panel = `outlinerPanel`;

string $outliner = `outlinerPanel -query -outlinerEditor $panel`;

outlinerEditor -edit

-mainListConnection "worldList"

-selectionConnection "modelList"

-showShapes false

-showAttributes false

-showConnected false

-showAnimCurvesOnly false

-autoExpand false

-showDagOnly true

-ignoreDagHierarchy false

-expandConnections false

-showCompounds true

-showNumericAttrsOnly false

-highlightActive true

-autoSelectNewObjects false

-doNotSelectNewObjects false

-transmitFilters false

-showSetMembers true

-setFilter defaultSetFilter

$outliner;

showWindow;


теперь если ты его удалишь и снова запустишь то все будет в нем так как и прежде.

сейчас попробую написать что-то работающее.
 

SLONIK_ZX

Активный участник
Рейтинг
14
#4
На самом деле, я наверное тупой ... Но использование -ret пользы не принесло.

Вот, допустим, в первой строчке вишенаписанного скрипта, укажем имя создаваемого окна. Специально пишу через i:
window -title OUTLINIR -ret;

После создания окна, как его удалить ? "deleteUI OUTLINIR" не удаляет :
// Error: Object not found: OUTLINIR //

Что-то я не понимаю в именовании окон.
 

Grape.

Активный участник
Рейтинг
15
#5
window -title OUTLINIR -ret myWindow;

window -vis 0 myWindow

или

window -vis 1 myWindow;

то что у тебя написано OUTLINIR - это титл самого окна, а не название UI нода.
название пишется в самом конце (в данном случае myWindow)

В итоге если у тебя есть какой-нить свой скрипт с созданием аутлайнера myOutliner.mel (а там создаваемое окно называется myWindow и стоит флаг -ret), можно написать так:

int $a = `window -vis myWindow`;
if (`window -exists myWindow`)
{
if ($a = 1)
window -vis 0 myWindow;
else
window -vis 1 myWindow;
}
else
myOutliner;

я не проверял правильно ли здесь все, но по идее должно работать
 

Grape

Активный участник
Рейтинг
5
#6
if (`window -ex myOutliner`)

{
int $a = `window -q -vis myWindow`;
if ($a == 1)
window -e -vis 0 myWindow;
else
window -e -vis 1 myWindow;
}

else

myOutliner;

-------------------------------------------------------------

Вот так будет правильно, я проверил.
 
Сверху