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

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

UserTC
Сообщения: 22
Зарегистрирован: Ср янв 02, 2008 12:54

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

Сообщение UserTC »

есть ли комбинация клавиш: Активная панель на всю ширину окна выкл/вкл, как было в NC ? примерно как команда "cm_50Percent" только не 50 процентов, а 100.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

Это есть в to-do списке автора Total Commander для следующей версии TC:
http://ghisler.ch/board/viewtopic.php?p=134367#134367
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

когда-то вполне нормально работало вот это. Это не совсем точно то, но очччень близко.
UserTC
Сообщения: 22
Зарегистрирован: Ср янв 02, 2008 12:54

Сообщение UserTC »

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

Сообщение UserTC »

еще назрел вопрос, можно сделать так что бы позиция окна при выходи сохранялась автоматом без указания в меню сверху конфигурации - "запомнить позицию"?. В настройках можно поставить что бы сохранял историю настроек, но позиции окна я там не увидел.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

C помощью того же скрипта можно изменять параметр wincmd.ini Divider, но для этого, как я понял, нужно получить разрешение экрана, т.к. этот параметр находится в секции вида
Справка писал(а):[1024x768 (10x20)] - Данные, зависящие от разрешения экрана и размера шрифта (размер шрифта определяется числами в скобках: (8x16) — для нормального и уменьшенного шрифта, (10x20) — для крупного шрифта).
Насколько это реально, лучше знает автор скрипта.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

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

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

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

Какой вариант более приемлемый?
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

2Volniy
Насколько я знаю, твой Хелпер умеет команды Тоталу посылать.
Так вот, положение разделителя сохраняется при использовании
cm_ConfigSavePos.
Можно закинуть соотв. функцию куда-то в конец скрипта.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение 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  ]===================
Последний раз редактировалось Volniy Пн янв 07, 2008 02:02, всего редактировалось 2 раза.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

2Volniy
Кажется, твой скрипт не учитывает ResolutionSpecific=0 и название секции [AllResolutions]...
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

DrShark писал(а):2Volniy
Кажется, твой скрипт не учитывает ResolutionSpecific=0 и название секции [AllResolutions]...
... а еще и температуру воздуха на пляжах Прибалтики :lol:
OK. Уже исправил.
Аватара пользователя
prog_san
Сообщения: 285
Зарегистрирован: Сб сен 29, 2007 00:52
Откуда: Пенза

Сообщение 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
Errare humanum est
Den_Klimov
Сообщения: 207
Зарегистрирован: Пт ноя 03, 2006 11:27
Откуда: Ukraine.Kiev

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

Сообщение Den_Klimov »

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

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

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

У кого-то есть какие-то идеи по этом поводу?
Реально ли вообще сделать пользовательские команды с двумя такими функциями (или хотя бы с первой) при помощи каких-то внешних костылей, не перекоцывая полностью Total?
Хотелось бы повесить на эти функции клавиатурные сочетания и заодно кнопки для мышатников, но встренных в Тотал таких команд насколько помню нет.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Ищи по форуму текст TCS.Separator
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

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