View previous topic :: View next topic |
Author |
Message |
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Fri Apr 17, 2009 08:13 Post subject: [TC7.5pb1] Внутренние ассоциации для cm_ConfigChangeIniFiles |
|
|
Внутренние ассоциации для cm_ConfigChangeIniFiles не работают.
Назначаю дефолтным приложением для *.ini редактор bred3 - внутри TC работает как надо.
При вызове команды cm_ConfigChangeIniFiles файлы открываются в стандартном редакторе.
Я негодую! =) _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10271 Location: Россия, Саратов
|
(Separately) Posted: Fri Apr 17, 2009 15:13 Post subject: |
|
|
D1P wrote: | Внутренние ассоциации для cm_ConfigChangeIniFiles не работают. |
А это Гислером и не планировалось (и, ЕМНИП, никем не запрашивалось). Для меня этот вопрос не особенно актуален, поскольку давно уже пользуюсь скриптом от mozers™.
Code: |
// em_configChangeIniFiles.js
// Version: 1.1
// Открытие файлов настройки Total Commander в редакторе, заданном в диалоге ТС "Настройка: Правка по F4"
// mozers™ <mozers@mail.ru> (Вопросы, предложения...)
// ============================================================
// Желающие использовать редактор, отличный от заданного в диалоге ТС "Настройка: Правка по F4"
// могут указать его тут:
var editor = '%ProgramFiles%\\SciTE\\SciTE.exe';
// Имя пользовательского файла FTP настроек (если не будет найден, то откроется wcx_ftp.ini)
var ftp_ini_name = 'ftp.ini';
// Инициализируем нужные нам ActiveX объекты
try {
var WshShell = new ActiveXObject('WScript.Shell');
var fso = new ActiveXObject('Scripting.FileSystemObject');
} catch(e) {
WScript.Echo('Для работы скрипта необходима установка Windows Script Host (WSH)!');
WScript.Quit();
}
try { var TCS = new ActiveXObject('TCScript.Helper') } catch(e) {}
// Находим местоположение wincmd.ini
var wincmd_ini = WshShell.ExpandEnvironmentStrings('%COMMANDER_INI%');
if (wincmd_ini == '%COMMANDER_INI%') {
WScript.Echo('Скрипт расчитан на работу с Total Commander верcии 6.55 или выше!');
WScript.Quit();
}
// Если заданный вручную редактор отсутствует, то берем редактор, заданный в диалоге ТС "Настройка: Правка по F4"
if (editor != ''){
editor = WshShell.ExpandEnvironmentStrings(editor);
if (!fso.FileExists(editor)){editor = ''}
}
if (editor == ''){
// Находим путь к редактору
editor = ReadINI (wincmd_ini, 'Editor', 'notepad.exe')
if (editor == 'none') {
editor = 'notepad.exe'
} else {
if (/%1/.test(editor)) { // это - для тех, кто после пути к редактору дописал %1
editor = editor.replace(/"*([^"]*)"*.*/,'$1')
}
}
}
if (!fso.FileExists(editor)){
WScript.Echo('Заданный редактор\N' + editor + '\nне найден!');
WScript.Quit();
}
// Обрамляем editor в кавычки
if (!/^\"/.test(editor)) {editor = '"' + editor + '"'}
// Находим местоположение файлов настройки
var profile_path = wincmd_ini.replace(/[^\\]*$/,'');
var ftp_ini = profile_path + ftp_ini_name;
if (!fso.FileExists(ftp_ini)) {ftp_ini = profile_path + 'wcx_ftp.ini'}
var usercmd_ini = profile_path + 'usercmd.ini';
// Находим местоположение файла меню
var wincmd_mnu = ReadINI (wincmd_ini, 'MainMenu','');
if (!/\\/.test(wincmd_mnu)) {
wincmd_mnu = WshShell.ExpandEnvironmentStrings('%COMMANDER_PATH%\\LANGUAGE\\' + wincmd_mnu)
}
// Открываем файлы в заданном редакторе
EditFile (wincmd_mnu);
EditFile (usercmd_ini);
EditFile (ftp_ini);
EditFile (wincmd_ini);
WScript.Quit();
// = = = = = = = = Ф У Н К Ц И И = = = = = = = =
// Открытие файла в редакторе
function EditFile (filename){
if (fso.FileExists(filename)){
WshShell.Run(editor + ' "' + filename + '"', 1, false)
}
}
// Чтение заданного ключа из файла
function ReadINI (filename, key, default_key){
// Если имеется установленный WSH Helper ActiveX for Total Commander (c)Volniy, то будем использовать его.
if (TCS) {
var value = TCS.INIRead(filename, 'Configuration', key, default_key);
value = WshShell.ExpandEnvironmentStrings(value);
return value;
} else {
// Если нет, то обходимся встроенными средствами
var value = default_key;
if (fso.FileExists(filename)) {
if (fso.GetFile(filename).Size > 0) {
var file = fso.OpenTextFile(filename, 1, false);
var re = new RegExp('^'+key+'\s*=','i');
while (!file.AtEndOfStream){
var text = file.ReadLine();
if (re.test(text)){
value = WshShell.ExpandEnvironmentStrings(text.replace(/^.*=/,''));
break;
}
}
file.Close();
}
}
return value;
}
}
|
Редактор указывается свой, вешается на кнопку - и все дела. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Fri Apr 17, 2009 15:36 Post subject: |
|
|
Скриптом я и сам могу, да и без скрипта тоже - просто назначив кнопки/менюшки редактирования файлов конфигурации.
Просто это очень нелогично. Тут - работает, там - не работает. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Fri Apr 17, 2009 15:47 Post subject: |
|
|
D1P wrote: | Просто это очень нелогично. Тут - работает, там - не работает. |
Согласен. По идее внутренние ассоциации должны работать везде внутри TC. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10271 Location: Россия, Саратов
|
(Separately) Posted: Fri Apr 17, 2009 16:14 Post subject: |
|
|
В принципе, идея совершенно здравая. Видимо, я слишком привык к многолетнему отсутствию нормального решения. Возможно, это не следует сваливать в одну кучу с внутренними ассоциациями, а попросту предусмотреть новый ключик с именем что-то вроде ConfigIniEditor, для коего и указать желательный редактор. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Apr 18, 2009 23:37 Post subject: |
|
|
Avada wrote: | а попросту предусмотреть новый ключик с именем что-то вроде ConfigIniEditor, для коего и указать желательный редактор. |
Не покатит. Гислер мотивирует своё нежелание использовать назначенный в Тотале редактор для этих INI-файлов тем, что программа может оказаться неустановленной. Абсолютно тот же аргумент можно привести для ConfigIniEditor. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10271 Location: Россия, Саратов
|
(Separately) Posted: Sat Apr 18, 2009 23:55 Post subject: |
|
|
CaptainFlint wrote: | Гислер мотивирует своё нежелание использовать назначенный в Тотале редактор для этих INI-файлов тем, что программа может оказаться неустановленной. Абсолютно тот же аргумент можно привести для ConfigIniEditor. |
Да аргументы-то приводить он умеет. Но есть же работающие в других местах цепочки приоритетов. Не установлено - автоматически переходим к следующему варианту, пока не упираемся в то, что безусловно установлено (в Блокнот). Типа того, как это сделано для внешнего просмотра (внутренняя ассоциация -просмотрщик по умолчанию - Листер). _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sun Apr 19, 2009 00:28 Post subject: |
|
|
Убеждать не меня надо. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|