Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[TC7.5pb1] Внутренние ассоциации для cm_ConfigChangeIniFiles

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Apr 17, 2009 08:13    Post subject: [TC7.5pb1] Внутренние ассоциации для cm_ConfigChangeIniFiles Reply with quote

Внутренние ассоциации для cm_ConfigChangeIniFiles не работают.
Назначаю дефолтным приложением для *.ini редактор bred3 - внутри TC работает как надо.
При вызове команды cm_ConfigChangeIniFiles файлы открываются в стандартном редакторе.
Я негодую! =)
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10271
Location: Россия, Саратов

Post (Separately) Posted: Fri Apr 17, 2009 15:13    Post subject: Reply with quote

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
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Apr 17, 2009 15:36    Post subject: Reply with quote

Скриптом я и сам могу, да и без скрипта тоже - просто назначив кнопки/менюшки редактирования файлов конфигурации.
Просто это очень нелогично. Тут - работает, там - не работает.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Fri Apr 17, 2009 15:47    Post subject: Reply with quote

D1P wrote:
Просто это очень нелогично. Тут - работает, там - не работает.

Согласен. По идее внутренние ассоциации должны работать везде внутри TC.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10271
Location: Россия, Саратов

Post (Separately) Posted: Fri Apr 17, 2009 16:14    Post subject: Reply with quote

В принципе, идея совершенно здравая. Видимо, я слишком привык к многолетнему отсутствию нормального решения. Возможно, это не следует сваливать в одну кучу с внутренними ассоциациями, а попросту предусмотреть новый ключик с именем что-то вроде ConfigIniEditor, для коего и указать желательный редактор.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Sat Apr 18, 2009 23:37    Post subject: Reply with quote

Avada wrote:
а попросту предусмотреть новый ключик с именем что-то вроде ConfigIniEditor, для коего и указать желательный редактор.

Не покатит. Гислер мотивирует своё нежелание использовать назначенный в Тотале редактор для этих INI-файлов тем, что программа может оказаться неустановленной. Абсолютно тот же аргумент можно привести для ConfigIniEditor.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10271
Location: Россия, Саратов

Post (Separately) Posted: Sat Apr 18, 2009 23:55    Post subject: Reply with quote

CaptainFlint wrote:
Гислер мотивирует своё нежелание использовать назначенный в Тотале редактор для этих INI-файлов тем, что программа может оказаться неустановленной. Абсолютно тот же аргумент можно привести для ConfigIniEditor.

Да аргументы-то приводить он умеет. Но есть же работающие в других местах цепочки приоритетов. Не установлено - автоматически переходим к следующему варианту, пока не упираемся в то, что безусловно установлено (в Блокнот). Типа того, как это сделано для внешнего просмотра (внутренняя ассоциация -просмотрщик по умолчанию - Листер).
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Sun Apr 19, 2009 00:28    Post subject: Reply with quote

Убеждать не меня надо. Smile
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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