Страница 1 из 2

Активная панель на все окно

Добавлено: Ср янв 02, 2008 13:07
UserTC
есть ли комбинация клавиш: Активная панель на всю ширину окна выкл/вкл, как было в NC ? примерно как команда "cm_50Percent" только не 50 процентов, а 100.

Добавлено: Ср янв 02, 2008 14:29
DrShark
Это есть в to-do списке автора Total Commander для следующей версии TC:
http://ghisler.ch/board/viewtopic.php?p=134367#134367

Добавлено: Ср янв 02, 2008 17:05
Volniy
когда-то вполне нормально работало вот это. Это не совсем точно то, но очччень близко.

Добавлено: Ср янв 02, 2008 21:52
UserTC
Спасибо, сделал через VBS - в принципе меня устраивает, тока выполняется немного с небольшой задержкой не так плавно как со стандартными командами.

Добавлено: Вс янв 06, 2008 13:50
UserTC
еще назрел вопрос, можно сделать так что бы позиция окна при выходи сохранялась автоматом без указания в меню сверху конфигурации - "запомнить позицию"?. В настройках можно поставить что бы сохранял историю настроек, но позиции окна я там не увидел.

Добавлено: Вс янв 06, 2008 15:02
DrShark
C помощью того же скрипта можно изменять параметр wincmd.ini Divider, но для этого, как я понял, нужно получить разрешение экрана, т.к. этот параметр находится в секции вида
Справка писал(а):[1024x768 (10x20)] - Данные, зависящие от разрешения экрана и размера шрифта (размер шрифта определяется числами в скобках: (8x16) — для нормального и уменьшенного шрифта, (10x20) — для крупного шрифта).
Насколько это реально, лучше знает автор скрипта.

Добавлено: Вс янв 06, 2008 23:16
Volniy
В принципе это все возможно, но весьма геморно. Для этого придется задействовать WMI, что не всегда приемлемо. Есть два (как минимум, и не считая реквеста к Гислеру) обходных решения:

1) Не определять программно имя текущей секцию с параметром Divider, а определив его "вручную" одиножды, задать его в скрипте жестко.

2) Отключить вообще систему разделения настроек внешнего вида по выбранному шрифту и разрешению экрана. Для этого достаточно добавления параметра ResolutionSpecific=0 в секцию [Configuration]. После этого настройки для всех разрешений и размеров шрифтов будут храниться в одной общей секции [AllResolutions] (для удобства просто переименуйте активную секцию, используя именно это имя).

Какой вариант более приемлемый?

Добавлено: Вс янв 06, 2008 23:46
DrShark
2Volniy
Насколько я знаю, твой Хелпер умеет команды Тоталу посылать.
Так вот, положение разделителя сохраняется при использовании
cm_ConfigSavePos.
Можно закинуть соотв. функцию куда-то в конец скрипта.

Добавлено: Пн янв 07, 2008 00:22
Volniy
Ну да, а я и забыл :oops: Тут, правда, есть один нюанс. Сохранение позиции это не совсем то, что нужно, потому как оно сохраняет не только положение сепаратора, а еще и размеры окна, его состояние и пр. Это немного некорректно, хотя может кому-то вполне подойдет.

Ладно, выдаю тогда сразу два варианта (закоментируйте ненужный и наоборот):

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

'=========================[ Start of file ]=================== 
'  File:         Separators+.vbs 
'  Description:  Производит переключение между 3-мя любыми позициями 
'                разделителя панелей ТС. Позиция сохраняется (!!!) 
'  Installation: Создайте новую команду в меню Запуск TC 
'                Команда: "диск:\путь\к\файлу\Separators+.vbs" 
'                Назначьте на нее горячую клавишу 
'  Copyright:    (c) 2008, Volniy 

Option Explicit 
Dim TCS 
Const Pos1=95, Pos2=5, Pos3=50 

Set TCS = CreateObject("TCScript.Helper") 
TCS.Pause = 10
TCS.LockTC True 

If TCS.Separator < 0 Or TCS.Separator > 100 Then 
   TCS.SendCommand "cm_50Percent", True 
End If 

Select Case CInt(TCS.Separator) 
  Case (Pos2 - 1), Pos2, (Pos2 + 1) 
     TCS.Separator = Pos3 
  Case (Pos3 - 1), Pos3, (Pos3 + 1) 
     TCS.Separator = Pos1 
  Case (Pos1 - 1), Pos1, (Pos1 + 1) 
     TCS.Separator = Pos2 
  Case Else 
     TCS.Separator = Pos3 
End Select 

TCS.LockTC False 

'1 способ, чистый ибо только сохраняет позицию сепаратора
'TCS.MainINI="c:\TC\wincmd.ini" - это если путь автоматом не определяется
If TCS.INIRead(TCS.MainINI,"Configuration","ResolutionSpecific","1")="0" Then
  Call TCS.INIWrite(TCS.MainINI,"AllResolutions","Divider",TCS.Separator*10)
Else
  Call TCS.INIWrite(TCS.MainINI,GetSectionName,"Divider",TCS.Separator*10)
End If

'2 способ, сохраняет заодно и позицию окна
'при этом способе функция GetSectionName лишняя
'TCS.SendCommand 493 , -1

Set TCS = Nothing 
Wscript.Quit() 


Function GetSectionName
  Dim objWMIService, colItems, objItem, Sec
  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  Set colItems = objWMIService.ExecQuery(_
      "Select * from Win32_DesktopMonitor")
  For Each objItem in colItems
    Sec=""
    Sec= CStr(objItem.ScreenWidth) & "x" _
       & CStr(objItem.ScreenHeight)
    If objItem.PixelsPerXLogicalInch > 96 Then
       Sec= Sec & " (10x20)"
    Else
       Sec= Sec & " (8x16)"
    End If
  Next
  GetSectionName = Sec
End Function
'=========================[  End of file  ]===================

Добавлено: Пн янв 07, 2008 00:43
DrShark
2Volniy
Кажется, твой скрипт не учитывает ResolutionSpecific=0 и название секции [AllResolutions]...

Добавлено: Пн янв 07, 2008 01:56
Volniy
DrShark писал(а):2Volniy
Кажется, твой скрипт не учитывает ResolutionSpecific=0 и название секции [AllResolutions]...
... а еще и температуру воздуха на пляжах Прибалтики :lol:
OK. Уже исправил.

Добавлено: Чт июл 23, 2009 01:42
prog_san
Почему-то после выполнения команды TCS.Separator=100 в задачах системы остается запись 100% - указывает на процесс Totalcmd.exe. И появляется и не исчезает всплывающее значение позиции разделителя. Для других значений такого поведения не наблюдается.

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

Dim TCS 
Set TCS = CreateObject("TCScript.Helper") 
TCS.LockTC True 
TCS.Separator = 100 
TCS.LockTC False
Set TCS = Nothing 
Wscript.Quit() 
TC 7.50 beta 7

Команды\кнопки управления разделителем файл-панелей в Тотале

Добавлено: Вс май 16, 2010 06:06
Den_Klimov
В Тотале имеется уж давненько встроенная команда "Установить границу файловых панелей по центру".
Но насколько помню никаких иных внутренних команд для управления разделителем файловых панелей НЕТ. Всё приходится делать мышей, да и то самым неудобным способом. :(

Тем не менее потребность в других командах для клавиатурников есть. И она весьма велика.
Хотя бы в таких двух:
- растянуть активную файловую панель на весь Тотал (полностью скрыв таким образом противоположную панель)
или
- растянуть активную файловую панель в сотношении 80\20

Естественно подразумевается возможность сделать это не перезагружая Тотал.

У кого-то есть какие-то идеи по этом поводу?
Реально ли вообще сделать пользовательские команды с двумя такими функциями (или хотя бы с первой) при помощи каких-то внешних костылей, не перекоцывая полностью Total?
Хотелось бы повесить на эти функции клавиатурные сочетания и заодно кнопки для мышатников, но встренных в Тотал таких команд насколько помню нет.

Добавлено: Вс май 16, 2010 10:55
Tol!k
Ищи по форуму текст TCS.Separator

Добавлено: Вс май 16, 2010 11:13
Avada
Den_Klimov
Кстати, Гислеру и на бета-форуме улучшения в этом направлении предлагали. Но это будет реализовано (если будет) уже, естественно, не в 7.55, а пока относится к списку "хотелок" для восьмёрки.