Orion9

|
Posted: Thu Jan 01, 2026 13:47 Post subject: |
|
|
FallenAngel
А что из функционала собранных скриптов вас заинтересовало больше всего, на что стоит обратить внимание в первую очередь?
Там ведь половина - это чисто "проба пера", которая представляет ценность разве что с технической точки зрения. Я имею в виду, простому пользователю разобраться с этим будет непросто, да и вряд ли вообще будет интересно без соответсвующих знаний в области программирования и скриптинга.
Какие-то фичи взять, конечно, можно, и даже практически безболезненно, т.е. простым копированием кнопок и кода, но далеко не все. Многое уж слишком завязано и переплетено с другими частями и модулями, и это, конечно, мешает.
Например, одной из таких фич является кнопка разворачивания и сворачивания панели. Я настолько к ней привык, что даже не могу сейчас представить себе работу в ТС без нее.
| Code: | В скрипте Title.aucfg реализован код кнопки, переключающей количество строк на главной панели инструментов (кнопка меняет значение BarLimitLines в Wincmd.ini).
Первое нажатие на кнопку разворачивает панель (BarLimitLines=0). Через 10 секунд панель снова свернется (BarLimitLines=1). Чтобы панель оставалась в развернутом виде, необходимо повторно нажать на кнопку в течении 10 секунд. Развернутая панель возвращается в исходное состояние нажатием на кнопку в третий раз. |
Однако код кнопки сильно завязан на основной цикл заголовка. Выдернуть его оттуда непросто. Я давно хотел сделать отдельную функцию на эту кнопку, но все забывал. Однако вы мне напомнили.
 Hidden text | Code: | Global gBarLinesTimer = false
RegisterCommand 60040 "ToggleBarLines"
SetHotkeyAction /K:C /H:F12 "ToggleBarLines"
Func ToggleBarLines()
# окно имеет прозрачность
Local bWinTrans = WinHasStyle(0x80000, 1, AUTORUN_TCHANDLE)
Local nLines
# чтение ключа
IniRead /R nLines %COMMANDER_INI% "Buttonbar" "BarLimitLines" 1
# панель развернута с запущенным таймером
If nLines = 0 And gBarLinesTimer Then
gBarLinesTimer = false
Sleep(50)
Return
EndIf
# переключение ключа
If nLines = 1 Then
IniWrite /R %COMMANDER_INI% "Buttonbar" "BarLimitLines" 0
Else
IniWrite /R %COMMANDER_INI% "Buttonbar" "BarLimitLines" 1
Endif
# запрет перерисовки окна
If Not bWinTrans Then SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
# двойная поылка cm_VisButtonBar
SendCommand(2901, 0, 1)
SendCommand(2901, 0, 1)
Sleep(10)
# снятие запрета перерисовки
If Not bWinTrans Then SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(2)
# повторное чтение ключа
IniRead /R nLines %COMMANDER_INI% "Buttonbar" "BarLimitLines" 1
# панель свернута
If nLines = 1 Then
gBarLinesTimer = false
Sleep(50)
Return
EndIf
# запуск таймера
RunThread BarLinesTimer
EndFunc
Func BarLinesTimer()
Local nSeconds = 5
gBarLinesTimer = true
For i = 1 To nSeconds
For j = 1 To 20
Sleep(50)
If Not gBarLinesTimer Then Break
Next
If Not gBarLinesTimer Then Break
Next
gBarLinesTimer = false
# таймер был прерван
If i < nSeconds Then Return
# таймер сработал до конца
Local nLines
IniRead /R nLines %COMMANDER_INI% "Buttonbar" "BarLimitLines" 1
If nLines = 0 Then RunThread ToggleBarLines
EndFunc |
Количество секунд можно поменять (сейчас nSeconds = 5), а вызов повесить на другую комбинацию (сейчас CTRL+F12). Или прописать отдельную горячую клавишу через стандартную секцию [Shortcuts].
В целом, как уже писал выше, попробую пересмотреть весь код и адаптировать самые нужные функции для более простого использования. Думаю, начну где-то после всех праздников, если ничего экстренного не навалится.
| AkulaBig wrote: | | И вот этот человек можно сказать заставил меня написать комменты ко всем моим функциям. Это подстава |
Вы хотите как в лучших коммандерах лондОна и парижа, или не хотите?  |
|