Index: DevTools/immediate.js ================================================================== --- DevTools/immediate.js +++ DevTools/immediate.js @@ -49,10 +49,17 @@ function macrosЗапуститьОтладчикСкриптов() { runDebugger(); } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'ОткрытьОкно'; +} + /* * Обработчики событий формы */ function ОбновлениеОтображения() Index: DevTools/pflview.js ================================================================== --- DevTools/pflview.js +++ DevTools/pflview.js @@ -59,10 +59,16 @@ form = loadScriptForm(SelfScript.fullPath.replace(/js$/i, 'ssf'), SelfScript.self) walkProfile(profileRoot, form.ProfileTree) } form.Открыть() } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'ПоказатьПрофайл'; +} function КоманднаяПанельРазвернутьВсеГруппы(Кнопка) { for(var rowsArray = new Enumerator(form.ProfileTree.Строки); !rowsArray.atEnd(); rowsArray.moveNext()) Index: DevTools/scriptdev.js ================================================================== --- DevTools/scriptdev.js +++ DevTools/scriptdev.js @@ -71,10 +71,17 @@ stdcommands.Frntend.ClearMessageWindow.send(); // Очистить окно сообщений. Message(jsCode); return true; } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'Настройка'; +} + /* ********************************************************** * Реализация функционала скрипта. * ********************************************************* */ Index: DevTools/testrunner.js ================================================================== --- DevTools/testrunner.js +++ DevTools/testrunner.js @@ -30,10 +30,17 @@ function macrosСкрыть() { GetTestRunner().Close(); } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'Показать'; +} + //} //////////////////////////////////////////////////////////////////////////////////////// ////{ TestRunner //// Index: RegExpEditor.js ================================================================== --- RegExpEditor.js +++ RegExpEditor.js @@ -23,10 +23,16 @@ SelfScript.Self['macros '] = function () { var reEditor = CreateRegExpEditor(); reEditor.setTextWindow(GetTextWindow()); reEditor.open(); } + +/* - , + . */ +function getDefaultMacros() { + return ' '; +} ////} //////////////////////////////////////////////////////////////////////////////////////// ////{ RegExpEditor @@ -346,7 +352,5 @@ _RegExpEditor.prototype.CmdBarRemoveNewLines = function () { this.form.RegExSource = this.form.RegExSource.replace(/\r|\n/g, ''); } ////} RegExpEditor - - - Index: author.js ================================================================== --- author.js +++ author.js @@ -37,10 +37,16 @@ // form - неявно определяемая глобальная переменная. form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), SelfScript.self); form.DoModal(); form = null; } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'Настройка'; +} ////} Макросы var MarkerTypes = { ADDED: "МаркерДобавлено", Index: autosave.js ================================================================== --- autosave.js +++ autosave.js @@ -50,10 +50,16 @@ form.Включить = enabled form.Интервал = interval form.ОткрытьМодально() form = null } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'НастройкаАвтоСохранения'; +} // Обработчики нажатий кнопок в форме function ОкНажатие(Элемент) { // Прочитаем значения из формы и если они изменились, сохраним их Index: configCaption.js ================================================================== --- configCaption.js +++ configCaption.js @@ -135,10 +135,16 @@ profileRoot.setValue(captionExprPath, captionExpr) setCaption(windows.mainTitle, windows.additionalTitle) } form = null } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'Настройка'; +} function КоманднаяПанель1Проверить(Кнопка) { var mainTitle = windows.mainTitle, additionalTitle = windows.additionalTitle var mainTitleShort = mainTitle.replace(/^Конфигуратор - /, "") Index: extSearch.js ================================================================== --- extSearch.js +++ extSearch.js @@ -60,10 +60,16 @@ SelfScript.self['macrosПерейти к предыдущему совпадению'] = function() { var es = GetExtSearch(); es.Show(); es.moveRowCursor(false); } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'Открыть окно поиска'; +} ////} Макросы //////////////////////////////////////////////////////////////////////////////////////// ////{ ExtSearch - Расширенный поиск в тексте модуля. Index: extfiles.js ================================================================== --- extfiles.js +++ extfiles.js @@ -8,45 +8,152 @@ /* Скрипт для открытия внешних файлов для Снегопата * Автор : Пушин Владимир, vladnet@gmail.com * Дата создания: 24.08.2011 * Описание : Добавляет окно из которого можно открывать внешние файлы */ -var мВерсияСкрипта = 1.35 - -/* Версия 1.35 - * 1. Добавлена возможность обновлять не все каталоги, а только текущий - * 2. Косметические изменения форм - * 3. Добавлены горячие кнопки для кнопок обновления каталогов - * 4. Теперь при обновлении каталога позиция курсора сохраняется - */ - -// Зададим путь в профайле -var pflExtFilesOpenOnStart = "ExtFiles/OpenOnStart" -var pflExtShowExtInName = "ExtFiles/ShowExtInName" -var pflExtFilesPath = "ExtFiles/Path" -var pflExtFilesPathBase = "ExtFiles/PathBase" -var pflExtOpen1CExtensions = "ExtFiles/Open1CExtensions" - -// Восстановим настройки -profileRoot.createValue(pflExtFilesOpenOnStart, false, pflSnegopat) -profileRoot.createValue(pflExtShowExtInName, true, pflSnegopat) -profileRoot.createValue(pflExtFilesPath, false, pflSnegopat) -profileRoot.createValue(pflExtFilesPathBase, false, pflBase) -profileRoot.createValue(pflExtOpen1CExtensions, СформироватьТзРасширенияФайловПоУмолчанию(), pflSnegopat) - - -var мОткрыватьПриСтарте = profileRoot.getValue(pflExtFilesOpenOnStart) -var мОтображатьРасширениеФайлаВПредставлении = profileRoot.getValue(pflExtShowExtInName) -var мТзКаталогиОбщие = profileRoot.getValue(pflExtFilesPath) -var мТзКаталогиБазы = profileRoot.getValue(pflExtFilesPathBase) -var мТзРасширенияФайлов = profileRoot.getValue(pflExtOpen1CExtensions); -var RE_EXTENSIONS = null; - -global.connectGlobals(SelfScript) - -function ТзКаталоговИнициализировать(пТзКаталоги) -{ +var мВерсияСкрипта = 1.40 + +//////////////////////////////////////////////////////////////////////////////////////// +////{ Макросы +//// + +// Макрос для вызова окна +function macrosОткрытьОкноВнешнихФайлов() { + + var pathToForm = SelfScript.fullPath.replace(/js$/, 'ssf') + if(!мФормаСкрипта){ + мФормаСкрипта = loadScriptForm(pathToForm, SelfScript.self) // Обработку событий формы привяжем к самому скрипту + мФормаСкрипта.Заголовок="Внешние файлы" //+мВерсияСкрипта + КэшКартинокТиповФайлов = ПолучитьКэшКартинокТиповФайлов(мФормаСкрипта); + } + мФормаСкрипта.Открыть() +} + +function macrosСвернутьДеревоВнешнихФайлов() { + + if(мАктивноДеревоВнешнихФайлов()==false) return false + + if(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.Развернут(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока)==false) + { + if(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока.Родитель != undefined) + мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока.Родитель + } + else + мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.Свернуть(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока) +} + +function macrosРазвернутьДеревоВнешнихФайлов() { + + if(мАктивноДеревоВнешнихФайлов()==false) return false + мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.Развернуть(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока) +} + +////} Макросы + +//////////////////////////////////////////////////////////////////////////////////////// +////{ ФормаСкрипта - обработчики событий. +//// + +function КпШапкаОбновить(Элемент) { + мОбновитьФайлы() +} + +function КпШапкаОбновитьТекущуюВетку(Элемент) { + мОбновитьФайлыТекущейВетки() +} + +function ФильтрПриИзменении(Элемент) { + мОбновитьФайлы() +} + +function ПриОткрытии() { + мОбновитьФайлы() +} + +function КпШапкаЗакрыть(Элемент) { + мФормаСкрипта.Закрыть() +} + +function мАктивноДеревоВнешнихФайлов() { + if(мФормаСкрипта==null) return false + if(мФормаСкрипта.ВводДоступен()!=true) return false + return мФормаСкрипта.ТекущийЭлемент==мФормаСкрипта.ЭлементыФормы.ДеревоФайлов +} + +function КпШапкаРазвернуть(Элемент) { + macrosРазвернутьДеревоВнешнихФайлов(); +} + +function КпШапкаСправка(Кнопка) { + RunApp('http://snegopat.ru/scripts/wiki?name=extfiles.js'); +} + +function КпШапкаСвернуть(Элемент) { + macrosСвернутьДеревоВнешнихФайлов() +} + +function ДеревоФайловПередНачаломИзменения(пЭлемент, пОтказ) { + + пОтказ.val = true + лТекСтрока=пЭлемент.val.ТекущаяСтрока + if(лТекСтрока.ЭтоКаталог) return + + if (МожноОткрытьФайлВКонфигураторе(лТекСтрока.ИмяФайла)) + stdlib.openFileIn1C(лТекСтрока.ИмяФайла) + else + ЗапуститьПриложение(лТекСтрока.ИмяФайла); +} + +function ДеревоФайловПриВыводеСтроки(пЭлемент, пОформлениеСтроки, пДанныеСтроки) { + + лЯчейкаИмя=пОформлениеСтроки.val.Ячейки.Имя + лЯчейкаИмя.ОтображатьКартинку=true + if(ValueIsFilled(пДанныеСтроки.val.Родитель)==false) + { + лЯчейкаИмя.Картинка = мФормаСкрипта.ЭлементыФормы.КартинкаПапка.Картинка; + } + else if(пДанныеСтроки.val.ЭтоКаталог==true) + { + лЯчейкаИмя.Картинка = мФормаСкрипта.ЭлементыФормы.КартинкаПапка.Картинка; + } + else + { + var КартинкаПоРасширению = ПолучитьКартинкуПоРасширению(пДанныеСтроки.val.Тип); + лЯчейкаИмя.Картинка = КартинкаПоРасширению ? КартинкаПоРасширению : БиблиотекаКартинок.Форма; + } + +} + +function КонтекстноеМенюОткрытьПроводник (Кнопка) { + var ТекущаяСтрока = мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущиеДанные; + if (ТекущаяСтрока) + { + var СтрокаЗапуска = 'explorer.exe "' + ПолучитьКаталогСтрокиДерева(ТекущаяСтрока) + '"'; + ЗапуститьПриложение(СтрокаЗапуска); + } +} + +function КонтекстноеМенюОткрытьКонсоль (Кнопка) { + var ТекущаяСтрока = мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущиеДанные; + if (ТекущаяСтрока) + { + var Каталог = ПолучитьКаталогСтрокиДерева(ТекущаяСтрока); + var СтрокаЗапуска = ПолучитьКомандуЗапускаКонсоли(Каталог); + ЗапуститьПриложение(СтрокаЗапуска, Каталог); + } +} + +//// +////} ФормаСкрипта - обработчики событий. +//////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////// +////{ Вспомогательные процедуры и функции. +//// + +function ТзКаталоговИнициализировать(пТзКаталоги) { + try{ пТзКаталоги = ValueFromStringInternal(пТзКаталоги) } catch(e){ пТзКаталоги = v8New("ТаблицаЗначений") @@ -68,111 +175,12 @@ catch(e){ } return пТзКаталоги } -мТзКаталогиОбщие = ТзКаталоговИнициализировать(мТзКаталогиОбщие) -мТзКаталогиБазы = ТзКаталоговИнициализировать(мТзКаталогиБазы) +function GetAbsolutePathName(pathToFile) { -мФормаСкрипта=null -мФормаНастройки=null - -if(мОткрыватьПриСтарте==true) - macrosОткрытьОкноВнешнихФайлов() - -// Макрос для вызова окна -function macrosОткрытьОкноВнешнихФайлов() -{ - var pathToForm = SelfScript.fullPath.replace(/js$/, 'ssf') - if(!мФормаСкрипта){ - мФормаСкрипта = loadScriptForm(pathToForm, SelfScript.self) // Обработку событий формы привяжем к самому скрипту - мФормаСкрипта.Заголовок="Внешние файлы" //+мВерсияСкрипта - } - мФормаСкрипта.Открыть() -} - -function КпШапкаНастройки(Элемент) -{ - var pathToForm=SelfScript.fullPath.replace(/.js$/, 'param.ssf') - мФормаНастройки=loadScriptForm(pathToForm, SelfScript.self) // Обработку событий формы привяжем к самому скрипту - мФормаНастройки.ЭлементыФормы.НадписьВерсия.Заголовок="Версия скрипта:"+мВерсияСкрипта - мФормаНастройки.ОткрытьМодально() -} - -function мЗаписатьНастройки() -{ - мТзКаталогиОбщие=мФормаНастройки.КаталогиОбщие - мТзКаталогиБазы=мФормаНастройки.КаталогиБазы - мОткрыватьПриСтарте=мФормаНастройки.ОткрыватьФормуПриЗагрузке - мТзРасширенияФайлов = мФормаНастройки.РасширенияФайлов.Скопировать(); - RE_EXTENSIONS = null; // Регулярку надо переформировать. - - profileRoot.setValue(pflExtFilesOpenOnStart, мОткрыватьПриСтарте) - profileRoot.setValue(pflExtShowExtInName, мОтображатьРасширениеФайлаВПредставлении) - profileRoot.setValue(pflExtFilesOpenOnStart, мОткрыватьПриСтарте) - profileRoot.setValue(pflExtFilesPath, ValueToStringInternal(мТзКаталогиОбщие)) - profileRoot.setValue(pflExtFilesPathBase, ValueToStringInternal(мТзКаталогиБазы)) - profileRoot.setValue(pflExtOpen1CExtensions, мТзРасширенияФайлов) - - мОбновитьФайлы() -} - -function мЗагрузитьНастройку(пТзКаталоги, пТаблицаКаталогов) -{ - for (var лИнд=0; лИнд<пТзКаталоги.Количество(); лИнд++) - { - лСтрокаТз=пТаблицаКаталогов.Добавить() - лСтрокаТз.ИмяКаталога=пТзКаталоги.Получить(лИнд).ИмяКаталога - лСтрокаТз.Развернуть=пТзКаталоги.Получить(лИнд).Развернуть - } -} - -function НастройкиПриОткрытии() -{ - мФормаНастройки.ОткрыватьФормуПриЗагрузке=мОткрыватьПриСтарте - мФормаНастройки.ОтображатьРасширениеФайлаВПредставлении=мОтображатьРасширениеФайлаВПредставлении - мЗагрузитьНастройку(мТзКаталогиОбщие, мФормаНастройки.КаталогиОбщие); - мЗагрузитьНастройку(мТзКаталогиБазы, мФормаНастройки.КаталогиБазы); - мФормаНастройки.РасширенияФайлов = мТзРасширенияФайлов; -} - -function КпШапкаЗаписатьИЗакрыть(Кнопка) -{ - мЗаписатьНастройки() - мФормаНастройки.Закрыть() -} - -function КпШапкаЗаписать(Кнопка) -{ - мЗаписатьНастройки() -} - -function мВыбратьКаталог() -{ - ДиалогОткрытияФайла=v8New("ДиалогВыбораФайла", РежимДиалогаВыбораФайла.ВыборКаталога) - ДиалогОткрытияФайла.ПолноеИмяФайла = "" - ДиалогОткрытияФайла.Заголовок = "Выберите каталог" - if(ДиалогОткрытияФайла.Выбрать()==false) return "" - return ДиалогОткрытияФайла.Каталог -} - -function КаталогиОбщиеИмяКаталогаНачалоВыбора(Элемент, СтандартнаяОбработка) -{ - лКаталог=мВыбратьКаталог() - if(лКаталог=="") return - Элемент.val.Значение=лКаталог -} - -function КаталогиБазыИмяКаталогаНачалоВыбора(Элемент, СтандартнаяОбработка) -{ - лКаталог=мВыбратьКаталог() - if(лКаталог=="") return - Элемент.val.Значение=лКаталог -} - -function GetAbsolutePathName(pathToFile) -{ if (pathToFile.length == 0) return pathToFile //код взят из python для определеня abspath debugger; backslash = "\\" if (pathToFile.substr(0,4)=='\\\\.\\' || pathToFile.substr(0,4)=='\\\\?\\') return pathToFile @@ -253,12 +261,12 @@ if (path.substr(path.length-1,1) != "\\" && b.substr(0,1) == "\\") { return path+b; } } -function мДобавитьФайлы(пПуть, пУзел) -{ +function мДобавитьФайлы(пПуть, пУзел) { + var лФайлы=FindFiles(пПуть, '*.*', false) for (var лИнд=0; лИнд<лФайлы.Количество(); лИнд++) { лФайл=лФайлы.Получить(лИнд) @@ -283,12 +291,12 @@ else лСтрокаДереваФайлов.Тип=лФайл.Расширение.substr(1) } } -function ДобавитьКаталоги(пТзКаталоги) -{ +function ДобавитьКаталоги(пТзКаталоги) { + var mainFolder = profileRoot.getValue("Snegopat/MainFolder") try { var fso = new ActiveXObject ("Scripting.FileSystemObject") } catch (er) { @@ -323,12 +331,11 @@ лСтрокаДереваФайлов.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true) } мФормаСкрипта.ДеревоФайлов.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true) } -function мОбновитьФайлы() -{ +function мОбновитьФайлы() { лТекСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока // Запомним текущую строку лИмяФайлаТекСтроки="" if(лТекСтрока!=undefined) лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла @@ -350,12 +357,12 @@ if(лСтрокаНайденная != undefined) мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=лСтрокаНайденная } } -function мОбновитьФайлыТекущейВетки() -{ +function мОбновитьФайлыТекущейВетки() { + лТекСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока if(лТекСтрока==undefined) return // Запомним текущую строку лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла @@ -369,102 +376,21 @@ лСтрокаНайденная=мФормаСкрипта.ДеревоФайлов.Строки.Найти(лИмяФайлаТекСтроки, "ИмяФайла", true) if(лСтрокаНайденная != undefined) мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=лСтрокаНайденная } -function КпШапкаОбновить(Элемент) -{ - мОбновитьФайлы() -} - -function КпШапкаОбновитьТекущуюВетку(Элемент) -{ - мОбновитьФайлыТекущейВетки() -} - -function ФильтрПриИзменении(Элемент) -{ - мОбновитьФайлы() -} - -function ПриОткрытии() -{ - мОбновитьФайлы() -} - -function КпШапкаЗакрыть(Элемент) -{ - мФормаСкрипта.Закрыть() -} - -function мАктивноДеревоВнешнихФайлов() -{ - if(мФормаСкрипта==null) return false - if(мФормаСкрипта.ВводДоступен()!=true) return false - return мФормаСкрипта.ТекущийЭлемент==мФормаСкрипта.ЭлементыФормы.ДеревоФайлов -} - -function macrosСвернутьДеревоВнешнихФайлов() -{ - if(мАктивноДеревоВнешнихФайлов()==false) return false - - if(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.Развернут(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока)==false) - { - if(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока.Родитель != undefined) - мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока.Родитель - } - else - мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.Свернуть(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока) -} - -function macrosРазвернутьДеревоВнешнихФайлов() -{ - if(мАктивноДеревоВнешнихФайлов()==false) return false - мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.Развернуть(мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока) -} - -function КпШапкаРазвернуть(Элемент) -{ - macrosРазвернутьДеревоВнешнихФайлов(); -} - -function КпШапкаСправка(Кнопка) -{ - RunApp('http://snegopat.ru/scripts/wiki?name=extfiles.js'); -} - -function КпШапкаСвернуть(Элемент) -{ - macrosСвернутьДеревоВнешнихФайлов() -} - -function ДеревоФайловПередНачаломИзменения(пЭлемент, пОтказ) -{ - пОтказ.val = true - лТекСтрока=пЭлемент.val.ТекущаяСтрока - if(лТекСтрока.ЭтоКаталог) return - - if (МожноОткрытьФайлВКонфигураторе(лТекСтрока.ИмяФайла)) - stdlib.openFileIn1C(лТекСтрока.ИмяФайла) - else - ЗапуститьПриложение(лТекСтрока.ИмяФайла); -} - -function ДеревоФайловПриВыводеСтроки(пЭлемент, пОформлениеСтроки, пДанныеСтроки) -{ - лЯчейкаИмя=пОформлениеСтроки.val.Ячейки.Имя - лЯчейкаИмя.ОтображатьКартинку=true - if(ValueIsFilled(пДанныеСтроки.val.Родитель)==false) - лЯчейкаИмя.Картинка=БиблиотекаКартинок.СоздатьГруппу - else if(пДанныеСтроки.val.ЭтоКаталог==true) - лЯчейкаИмя.Картинка=БиблиотекаКартинок.ОткрытьФайл - else - лЯчейкаИмя.Картинка=БиблиотекаКартинок.Форма -} - -function СформироватьТзРасширенияФайловПоУмолчанию() -{ +function ПолучитьКаталогСтрокиДерева(СтрокаДерева) { + var Файл = v8New('Файл', СтрокаДерева.ИмяФайла); + return Файл.ЭтоФайл() ? Файл.Путь : Файл.ПолноеИмя; +} + +function ПолучитьКомандуЗапускаКонсоли(Каталог) { + return мКомандаЗапускаКонсоли.replace(/%1/, Каталог); +} + +function СформироватьТзРасширенияФайловПоУмолчанию() { + var ТЗ = v8New("ТаблицаЗначений"); ТЗ.Колонки.Добавить("Расширение"); function Расш(расширение) { ТЗ.Добавить().Расширение = расширение; } @@ -478,19 +404,215 @@ Расш("ssf"); Расш("js"); Расш("vbs"); return ТЗ; } -function МожноОткрытьФайлВКонфигураторе(ИмяФайла) -{ +function МожноОткрытьФайлВКонфигураторе(ИмяФайла) { if (!RE_EXTENSIONS) { var ext = new Array(); for (var i=0; i<мТзРасширенияФайлов.Количество(); i++) ext.push(мТзРасширенияФайлов.Get(i).Расширение); - RE_EXTENSIONS = new RegExp('\.(?:' + ext.join('|') + ' )$', 'i'); + RE_EXTENSIONS = new RegExp('\.(?:' + ext.join('|') + ')$', 'i'); } return RE_EXTENSIONS.test(ИмяФайла); } + +function ПолучитьКэшКартинокТиповФайлов(ФормаСкрипта) { + var ЭФ = ФормаСкрипта.ЭлементыФормы; + var cache = {}; + + function add(estr, pic) { + var exts = estr.split('|'); + for (var i=0; i'); } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'ОткрытьНастройкиСкрипта'; +} ////} Макросы //////////////////////////////////////////////////////////////////////////////////////// ////{ SnippetsManager @@ -64,11 +70,11 @@ function SnippetsManager() { SnippetsManager._instance = this; - this.settings = SettingsManagement.CreateManager(SelfScript.uniqueName, {'TemplateFilesList':v8New('ValueList')}); + this.settings = SettingsManagement.CreateManager(SelfScript.uniqueName, {'TemplateFilesList':getDefaultTemplatesList()}); this.settings.LoadSettings(); this._snippets = {}; this._snippetNames = new Array(); @@ -546,27 +552,32 @@ SettingsManagerDialog.prototype.CmdBarAbout = function (button) { RunApp('http://snegopat.ru/scripts/wiki?name=snippets.js'); } -SettingsManagerDialog.prototype.CmdBarStListAddStFile = function (button) { - +SettingsManagerDialog.prototype.selectTemplateFiles = function (multiselect) { + var dlg = v8New('FileDialog', FileDialogMode.Open); - dlg.Multiselect = true; + dlg.Multiselect = multiselect ? true : false; dlg.CheckFileExist = true; dlg.Filter = "Файлы шаблонов (*.st)|*.st|Все файлы|*"; if (dlg.Choose()) + return multiselect ? dlg.SelectedFiles : dlg.FullFileName; + + return null; +} + +SettingsManagerDialog.prototype.CmdBarStListAddStFile = function (button) { + + var selected = this.selectTemplateFiles(true); + if (selected) { this.form.Modified = true; - for(var i=0; i