Страница 23 из 130

Добавлено: Пт май 06, 2011 14:03
ask-rus
MVV писал(а):А насчет окна не понял, что именно требуется. Опиши задачу подробнее.
Окно TC расположено по центру экрана с координатами выше. Я переместил окно, изменил его размер и теперь желаю вернуть его в первоначальное положение с теми же размерами.

Добавлено спустя 7 минут 53 секунды:

Добавил

Код: Выделить всё

sp_sw_50_95=run_item(sp_set_active, sepPos == 50 ? 95 : 50)
в [Items], а /ei sp_sw_50_95 в параметры кнопки. Что не верно?.. Плыву в этом всём...

Добавлено спустя 40 минут 51 секунду:

Бага с Твинками. Его список дисков в фуллскрине на 1 файл. панели выходит не там, где должно, а посредине.

Добавлено: Пт май 06, 2011 14:29
MVV
Если ставишь по центру, координаты не нужны, их можно вычислить исходя из размеров. А если заданы размеры и координаты, то команда выглядит проще простого:

Код: Выделить всё

move(100, 100, 1080, 820)
Такая команда будет всегда перемещать окно в позицию (100, 100) и задавать размер 1080x820.

Так что в итоге с sp_sw_50_95? Работает? Макрос sepPos в [Macros] есть? А остальные макросы?

Код: Выделить всё

[Items]
set_separator=msg($433, tt_SeparatorSet, #1)
sp_set_active=run_item(set_separator, L_isActive ? (#1) : 100 - (#1))
sp_sw_50_95=run_item(sp_set_active, sepPos == 50 ? 95 : 50)
[Macros]
tt_LeftIsActive=65551
tt_SeparatorGet=65561
tt_SeparatorSet=65562
L_isActive=tcm(tt_LeftIsActive)
sepPos=msg($433, tt_SeparatorGet)
Вот с таким минимальным конфигом всё работает. Можно сделать его ещё меньше, если подставить макросы.
ask-rus писал(а):Бага с Твинками. Его список дисков в фуллскрине на 1 файл. панели выходит не там, где должно, а посредине.
А это к чему?

Добавлено: Пт май 06, 2011 16:20
ask-rus
MVV писал(а):то команда выглядит проще простого
Эта команда грузит проц в 50-100%. Полез в диспетчер, обнаружил множество копий TCFS2.exe. 1 копия - 50%, 2 и более - 100% загруженности процессора. Фуллскрин работает нормально.
MVV писал(а):Так что в итоге с sp_sw_50_95? Работает?
Нет пока, пытаюсь искать причину.

Добавлено спустя 8 минут 14 секунд:

Косяк :evil:. Скобка левая закралась, теперь нормально с процом всё.
[Items]
r1=move(100, 100, 1080, 820))
Добавлено спустя 4 минуты 18 секунд:
MVV писал(а):А это к чему?
С этим к кому?

Добавлено: Пт май 06, 2011 16:31
sa
MVV
При попытке разобраться с multi_switch тоже получал несколько копий TCFS2 в памяти. Так и не понял, в чём дело. Действие не заработало.
ask-rus писал(а):Нет пока, пытаюсь искать причину.
TCFS2Tools.dll подгружен?

Добавлено: Пт май 06, 2011 16:36
ask-rus
Кнопка с move(100, 100, 1080, 820) срабатывает и зажимается на панели инструментов. Разжимается с потерей фокуса окна TC.

Добавлено спустя 3 минуты 59 секунд:
sa писал(а):TCFS2Tools.dll подгружен?
А его необходимо в TCFS2\ перенести?

Добавлено: Пт май 06, 2011 16:41
sa
ask-rus писал(а):А его необходимо в TCFS2\ перенести?
Из справки:
Вы также можете использовать контентный модуль автозапуска Autorun.wdx, тогда достаточно прописать в его Autorun.cfg следующую строку:

LoadLibrary "X:\Path\To\TCFS2Tools.dll"

Добавлено: Пт май 06, 2011 16:41
MVV
ask-rus, TCFS2Tools.dll может быть где угодно, лишь бы он загружался при запуске тотала либо плагином Autorun.wdx, либо был установлен как WDX и была соответствующая схема раскраски файлов.

Проверить, загружен ли он, несложно - поискать его имя в списке DLL, загруженных тоталом. Но скажу проще: если он не загружен, тотал при попытке вызова команд из TCFS2Tools будет выдавать сообщения, что команды не реализованы, так как внутренних команд с такими индексами в тотале нет.
ask-rus писал(а):Кнопка с move(100, 100, 1080, 820) срабатывает и зажимается на панели инструментов. Разжимается с потерей фокуса окна TC.
У меня ничего не зажимается. Перетащил TCFS2 на панель инструментов, прописал в строке параметров:

Код: Выделить всё

/ef "move(100, 100, 1080, 820)"
Всё работает без проблем.
ask-rus писал(а):Эта команда грузит проц в 50-100%. Полез в диспетчер, обнаружил множество копий TCFS2.exe. 1 копия - 50%, 2 и более - 100% загруженности процессора. Фуллскрин работает нормально.
sa писал(а):При попытке разобраться с multi_switch тоже получал несколько копий TCFS2 в памяти. Так и не понял, в чём дело. Действие не заработало.
Раз одна кушает 50%, а две и более - 100%, значит, проц двухъядерный. :D Интересно, конечно, где подвисает, и почему не закрывается. Но я не знаю, как такое поймать - нужно искать условия. Найдёте - пишите, или свой конфиг кидайте куда-нибудь, будем отлаживать. У меня команда работает. Конфиг:

Код: Выделить всё

[Items]
db0=tcm(2902), test(hasDriveBar), db1
db1=tcm(2902), test(!hasDriveBar), db0
dc0=tcm(2906), test(hasDriveCombo), dc1
dc1=tcm(2906), test(!hasDriveCombo), dc0
cl0=tcm(2910), test(hasCmdLine), cl1
cl1=tcm(2910), test(!hasCmdLine), cl0
multi_switch=run_action(multi_disable), test(hasDriveBar && hasDriveCombo && hasCmdLine) | run_action(multi_enable)

[Macros]
hasDriveBar=tcini(Layout, DriveBar1, 1)
hasDriveCombo=tcini(Layout, DriveCombo, 1)
hasCmdLine=tcini(Layout, CmdLine, 1)

[Actions]
multi_enable=db1 dc1 cl1
multi_disable=db0 dc0 cl0
Undo=db0 dc0 cl0
Параметры кнопки:

Код: Выделить всё

/ei multi_switch
ask-rus писал(а):Косяк :evil:. Скобка левая закралась, теперь нормально с процом всё.
Ага, действительно косяк. Погляжу, где зависает.

Добавлено: Пт май 06, 2011 17:02
sa
sa писал(а):Действие не заработало.
MVV писал(а):У меня команда работает.
По ошибке записал в действия. Спасибо, всё работает.

Добавлено: Пт май 06, 2011 17:09
ask-rus
Была ни была, поставил Autorun.wdx. Так, фуллскрин работает, сепаратор работает, а с тем, что зажимается тоже к Твинкам обращаться?
MVV писал(а):Раз одна кушает 50%, а две и более - 100%, значит, проц двухъядерный.
Не, не такой. Наши ошибки вызывают эту перегрузку.

Добавлено: Пт май 06, 2011 17:15
MVV
Зависает цикл вызова функций, если строка сформирована неправильно. Например,

Код: Выделить всё

move(100, 100, 1080, 820))
После вызова первой функции остается: И отсюда уже имя и параметры следующей функции извлечь невозможно, поэтому программа входит в бесконечный цикл.

Даже не знаю, стоит ли предупреждать такое. От всех ошибок всё равно не застрахуемся, а так хоть видно будет, что что-то не так работает. Хотя, наверное, можно сообщение выдавать, если имя очередной функции пустое.


Добавил сообщение об ошибке, если цикл натыкается на фигню (на неверное имя следующей функции - имена состоят из латинских букв, цифр и знака подчеркивания). Теперь будет показывать остаток выполняемой строки (только apply-часть) - в рассмотренном выше случае как раз оставшуюся скобочку (а вообще, ошибка будет при обнаружении любого символа, который не может быть частью имени).

TCFS2 2.0.1.230 на rghost.ru

Добавлено: Пт май 06, 2011 17:54
ask-rus
Фуллскрин и сепаратор (5/95-50/50) странно взаимодействуют, а именно второй привязывается к первому. Поясняю, сепаратор в 50/50, жмем фуллскрин, сепаратор становится в 5/95, хотя его не нажимали.

Добавлено: Пт май 06, 2011 18:20
MVV
Опять же, необходимы подробности. Запускаю с параметром fs, ничего плохого не случается. Воспроизводится ошибка? Если да, пакуй конфиг на rghost и кидай ссылку.
ask-rus писал(а):с тем, что зажимается тоже к Твинкам обращаться?
Я без понятия. Попробуй воспроизвести ошибку без TWinKey. Если не получится - вряд ли это ко мне.

Добавлено: Пт май 06, 2011 18:31
sa
MVV писал(а):Запускаю с параметром fs, ничего плохого не случается.
Попробуй перед этим вызвать упоминавшуюся команду ei sp_sw_50_95.
Проблема, похоже есть.

Добавлено: Пт май 06, 2011 19:49
Flasher
MVV писал(а):Проще стало в том плане, что теперь можно организовать проверку условия внутри одного вызова функции, а не городить кучу дополнительных команд через палки |.
А с палками то будет работать? И пример, пож., приведи со страрым и новым вариантом.
MVV писал(а):И, думаю, смысл записи test(isTopmost) куда яснее, чем записи style(, # & $08).
Я не вижу в этом никакой необходимости. Мне лично по восприятию одинаково, ни то, ни другое при первом знакомстве неясно. Во втором варианте слово test вообще ни о чём не говорит. Да и в любом случае, это не язык программирования, а конфигуратор, записал один раз с уже существующим значением и забыл.
MVV писал(а):Причина - вынос костыля из TCFS2 в отдельный модуль (я давно хотел это сделать).
Ну и зря, что вынес. Всё что ты этим сделал - это неудобства и весомую трату времени уже использующим команды ТС на ряд необходимых для правильной работы манипуляций. Да и не все с этим сходу справятся. Есть те, которым проще переписать и не ковыряться в заменах. А теперь будут возникать вопросы, а почему в новой версии не работает это или это. Что плохого в том, что TCFS2 будет сам перемещать разделитель? Абсолютно ничего. В общем, пока у меня сомнения насчёт перехода к новой версии. Не нравится мне всё это.
MVV писал(а):Ничто не заставляет использовать новые функции, всё старое осталось работоспособным.
Как же всё? Сам про set_separator пишешь.
MVV писал(а):Номер 1075 (или $433) - это номер оконного сообщения, который тотал ожидает для выполнения внутренних команд.
Я не спросил, что это такое, я спросил, зачем его использовать.
MVV писал(а):Вообще, tcm(x) делает ровно то же самое, что и msg(1075, x, 0, 0). А если надо передать в команду параметр, нужно использовать полную форму.
Можно конкретные примеры с использование 1075 помимо set_separator? Я могу, например, использовать параметры ТС или только TCFS2?
MVV писал(а):Я бы не говорил так уверенно. Это теперь единственный способ узнать текущую позицию сепаратора, т.к. # для этой цели уже не работает.
Ах да, не обратил внимание. Плохо.
MVV писал(а):Пара примеров приведена выше - cxScreen, cyScreen
Это не примеры, это незадействованные команды. Вот с ними примеры и нужны.
MVV писал(а):В switch_sp, как и в s00008000_switch_sp, можно писать cyWorkArea вместо @-33 - и это должно работать правильно при любой высоте панели задач
О ужас, окно превращается в одну полоску вместо пропорционально утянутого в середину размера. :lol:

Добавлено: Пт май 06, 2011 20:19
MVV
Flasher писал(а):А с палками то будет работать? И пример, пож., приведи со страрым и новым вариантом.
Будет. Почитай в Readme оба примера команды multi_switch, старый и новый - это и есть примеры. Да и в теме я их сегодня приводил.
Я не вижу в этом никакой необходимости. Мне лично по восприятию одинаково, ни то, ни другое при первом знакомстве неясно. Во втором варианте слово test вообще ни о чём не говорит.
Слово test означает проверить. Т.е., условие выполнения команды - результат проверки значения выражения. И, думаю, если просматривать кучу команд с разными стилями, слово isTopmost выглядит поприятнее, чем выражение проверки какого-то бита. То же самое и с кучей других проверок (hasButtonBar, hasDriveBar, hasDirTabs, hasCaption, isMaximized и т.д.).
Я не спросил, что это такое, я спросил, зачем его использовать.
Почитай описание TCFS2Tools, поймёшь. tcm(x) - это msg(1075, x, 0), а если надо передать ненулевой параметр y в сообщение, надо писать явно msg(1075, x, y). Например, при вызове tt_SeparatorSet, tt_GetSystemMetrics или tt_GetWorkArea надо передавать ненулевой параметр y, и в конфиге он используется. Сам тотал не принимает параметров для внутренних команд.
Как же всё? Сам про set_separator пишешь.
Повторяю последний раз - команды, вызывающие [set_]separator - единственное, что изменилось. Прям трагедия. Не думаю, что это так смертельно. Для всего остального можно использовать прежний синтаксис. Зато теперь никакая антивирусная скотина не ругается на TCFS2.exe (0/41 на virustotal.com против 19/41 для предыдущей версии; кстати, для TCFS2Tools.dll тоже 0/41, что странно - ведь функционал по управлению сепаратором перешел в неё без изменений).
Вот с ними примеры и нужны.
Развивай фантазию, получишь примеры. :) Мало ли, захочешь включать те или иные элементы окна в зависимости от размеров экрана.
Flasher писал(а):О ужас, окно превращается в одну полоску вместо пропорционально утянутого в середину размера. :lol:
Н-да, наверное я что-то не так сделал, что у меня всё работает... :lol:

Код: Выделить всё

s00008000_switch_sp=set_style(# & ~$00008000) move(@*7/64, @*7/64, @*25/32, @*25/32), style(# & $00008000), s00008000_switch_sp | set_style(# | $00008000) move(0, 0, @, cyWorkArea), , s00008000_switch_sp
Запускаю - окно на весь экран (1600x1170), ещё раз - окно в центр (1250x937).

sa писал(а):
MVV писал(а):Запускаю с параметром fs, ничего плохого не случается.
Попробуй перед этим вызвать упоминавшуюся команду ei sp_sw_50_95.
Проблема, похоже есть.
Да, что-то странное происходит:

Код: Выделить всё

TCFS2.exe /ei set_separator(50) sp_sw_50_95 sp_sw_50_95 /ea fs /us undo
При запуске сепаратор прыгает на 95%, хотя должен остаться в центре. Воспроизвести могу, значит, посмотрю, что не так.