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<exts.length; i++) + cache[exts[i].toLowerCase()] = pic; + } + + add('doc|docx|dot|odf', ЭФ.КартинкаТипФайлаDoc.Картинка); + add('xls|xlsx|csv', ЭФ.КартинкаТипФайлаXls.Картинка); + + add('pps|ppsx', ЭФ.КартинкаТипФайлаPps.Картинка); + add('pdf|ps', ЭФ.КартинкаТипФайлаPdf.Картинка); + + add('png|jpg|jpeg|bmp|tif|dib|ico', ЭФ.КартинкаТипФайлаPng.Картинка); + + add('xml', ЭФ.КартинкаТипФайлаXml.Картинка); + add('zip', ЭФ.КартинкаТипФайлаZip.Картинка); + add('rar', ЭФ.КартинкаТипФайлаRar.Картинка); + + add('exe|cmd|bat', ЭФ.КартинкаТипФайлаExe.Картинка); + + add('txt', ЭФ.КартинкаТипФайлаTxt.Картинка); + add('geo', ЭФ.КартинкаТипФайлаGeo.Картинка); + add('grs', ЭФ.КартинкаТипФайлаGrs.Картинка); + add('erf', ЭФ.КартинкаТипФайлаErf.Картинка); + add('epf', ЭФ.КартинкаТипФайлаEpf.Картинка); + add('mxl', ЭФ.КартинкаТипФайлаMxl.Картинка); + + add('ssf', ЭФ.КартинкаТипФайлаSsf.Картинка); + add('js', ЭФ.КартинкаТипФайлаTxt.Картинка); + add('vbs', ЭФ.КартинкаТипФайлаTxt.Картинка); + + add('unknown', ЭФ.КартинкаТипФайлаUnknown.Картинка); + + return cache; + +} + +function ПолучитьКартинкуПоРасширению(Расширение) { + + if (КэшКартинокТиповФайлов) { + var pic = КэшКартинокТиповФайлов[Расширение.toLowerCase()]; + return pic ? pic : КэшКартинокТиповФайлов['unknown']; + } + return null; +} + +//// +////} Вспомогательные процедуры и функции. +//////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////// +////{ ФормаНастройки - обработчики событий. +//// + +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, мТзРасширенияФайлов) + profileRoot.setValue(pflExtRunConsoleCommand, мКомандаЗапускаКонсоли) + + мОбновитьФайлы() +} + +function мЗагрузитьНастройку(пТзКаталоги, пТаблицаКаталогов) { + + for (var лИнд=0; лИнд<пТзКаталоги.Количество(); лИнд++) + { + лСтрокаТз=пТаблицаКаталогов.Добавить() + лСтрокаТз.ИмяКаталога=пТзКаталоги.Получить(лИнд).ИмяКаталога + лСтрокаТз.Развернуть=пТзКаталоги.Получить(лИнд).Развернуть + } +} + +function НастройкиПриОткрытии() { + мФормаНастройки.ОткрыватьФормуПриЗагрузке=мОткрыватьПриСтарте + мФормаНастройки.ОтображатьРасширениеФайлаВПредставлении=мОтображатьРасширениеФайлаВПредставлении + мЗагрузитьНастройку(мТзКаталогиОбщие, мФормаНастройки.КаталогиОбщие); + мЗагрузитьНастройку(мТзКаталогиБазы, мФормаНастройки.КаталогиБазы); + мФормаНастройки.РасширенияФайлов = мТзРасширенияФайлов; + мФормаНастройки.КомандаЗапускаКонсоли = мКомандаЗапускаКонсоли; +} + +function КпШапкаЗаписатьИЗакрыть(Кнопка) { + мЗаписатьНастройки() + мФормаНастройки.Закрыть() +} + +function КпШапкаЗаписать(Кнопка) { + мЗаписатьНастройки() +} + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'ОткрытьОкноВнешнихФайлов'; +} + +function мВыбратьКаталог() { + ДиалогОткрытияФайла=v8New("ДиалогВыбораФайла", РежимДиалогаВыбораФайла.ВыборКаталога) + ДиалогОткрытияФайла.ПолноеИмяФайла = "" + ДиалогОткрытияФайла.Заголовок = "Выберите каталог" + if(ДиалогОткрытияФайла.Выбрать()==false) return "" + return ДиалогОткрытияФайла.Каталог +} + +function КаталогиОбщиеИмяКаталогаНачалоВыбора(Элемент, СтандартнаяОбработка) { + лКаталог=мВыбратьКаталог() + if(лКаталог=="") return + Элемент.val.Значение=лКаталог +} + +function КаталогиБазыИмяКаталогаНачалоВыбора(Элемент, СтандартнаяОбработка) { + лКаталог=мВыбратьКаталог() + if(лКаталог=="") return + Элемент.val.Значение=лКаталог +} + +function НадписьCmdExeНажатие (Элемент) { + мФормаНастройки.КомандаЗапускаКонсоли = Элемент.val.Заголовок; +} + +function НадписьFarExeНажатие (Элемент) { + мФормаНастройки.КомандаЗапускаКонсоли = Элемент.val.Заголовок; +} + +//// +////} ФормаНастройки - обработчики событий. +//////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////// +////{ Инициализация скрипта +//// + +// Зададим путь в профайле +var pflExtFilesOpenOnStart = "ExtFiles/OpenOnStart" +var pflExtShowExtInName = "ExtFiles/ShowExtInName" +var pflExtFilesPath = "ExtFiles/Path" +var pflExtFilesPathBase = "ExtFiles/PathBase" +var pflExtOpen1CExtensions = "ExtFiles/Open1CExtensions" +var pflExtRunConsoleCommand = "ExtFiles/RunConsoleCommand" + +// Восстановим настройки +profileRoot.createValue(pflExtFilesOpenOnStart, false, pflSnegopat) +profileRoot.createValue(pflExtShowExtInName, true, pflSnegopat) +profileRoot.createValue(pflExtFilesPath, false, pflSnegopat) +profileRoot.createValue(pflExtFilesPathBase, false, pflBase) +profileRoot.createValue(pflExtOpen1CExtensions, СформироватьТзРасширенияФайловПоУмолчанию(), pflSnegopat) +profileRoot.createValue(pflExtRunConsoleCommand, 'cmd.exe /K cd /D "%1"', pflSnegopat) + + +var мОткрыватьПриСтарте = profileRoot.getValue(pflExtFilesOpenOnStart) +var мОтображатьРасширениеФайлаВПредставлении = profileRoot.getValue(pflExtShowExtInName) +var мТзКаталогиОбщие = profileRoot.getValue(pflExtFilesPath) +var мТзКаталогиБазы = profileRoot.getValue(pflExtFilesPathBase) +var мТзРасширенияФайлов = profileRoot.getValue(pflExtOpen1CExtensions); +var мКомандаЗапускаКонсоли = profileRoot.getValue(pflExtRunConsoleCommand); + +var RE_EXTENSIONS = null; + +var КэшКартинокТиповФайлов = {}; + +global.connectGlobals(SelfScript) + +мТзКаталогиОбщие = ТзКаталоговИнициализировать(мТзКаталогиОбщие) +мТзКаталогиБазы = ТзКаталоговИнициализировать(мТзКаталогиБазы) + +мФормаСкрипта=null +мФормаНастройки=null + +if(мОткрыватьПриСтарте==true) + macrosОткрытьОкноВнешнихФайлов() + +////} Инициализация скрипта + Index: extfiles.ssf ================================================================== --- extfiles.ssf +++ extfiles.ssf cannot compute difference between binary files Index: extfilesparam.ssf ================================================================== --- extfilesparam.ssf +++ extfilesparam.ssf cannot compute difference between binary files Index: mdNavigator.js ================================================================== --- mdNavigator.js +++ mdNavigator.js @@ -369,6 +369,12 @@ } // Двойной щелчок по таблице function ТаблицаМетаданныхВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) { doAction(function(mdObj){mdObj.activateInTree()}) +} +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() +{ + return 'Открыть объект метаданных'; } Index: query_colors.js ================================================================== --- query_colors.js +++ query_colors.js @@ -16,10 +16,16 @@ { form = loadScriptForm(SelfScript.fullPath.replace(/js$/i, 'ssf'), SelfScript.self) form.ОткрытьМодально() form = null } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +function getDefaultMacros() { + return 'ОткрытьОкно'; +} function ПриОткрытии() { var qec = profileRoot.getFolder("SelectColorCategory") for(var i = 0, c = qec.valuesCount; i < c; i++) Index: snippets.js ================================================================== --- snippets.js +++ snippets.js @@ -53,10 +53,16 @@ var selParam = sm.selectValue(params); if (selParam) w.SetSelectedText('<%' + selParam + '>'); } + +/* Возвращает название макроса по умолчанию - вызывается, когда пользователь +дважды щелкает мышью по названию скрипта в окне Снегопата. */ +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<dlg.SelectedFiles.Count(); i++) - { - var path = dlg.SelectedFiles.Get(i); - if (!this.form.TemplateFilesList.FindByValue(path)) - this.form.TemplateFilesList.Add(path); - } + for (var i=0; i<selected.Count(); i++) + this.form.TemplateFilesList.Add().Value = selected.Get(i); } } SettingsManagerDialog.prototype.CmdBarStListDeleteStFile = function (button) { var curRow = this.form.Controls.TemplateFilesList.CurrentRow; @@ -574,10 +585,22 @@ { this.form.TemplateFilesList.Delete(curRow); this.form.Modified = true; } } + +SettingsManagerDialog.prototype.TemplateFilesListValueStartChoice = function (Control, DefaultHandler) { + + DefaultHandler.val = false; + + var fname = this.selectTemplateFiles(false); + if (fname) + { + this.form.Modified = true; + Control.val.Value = fname; + } +} SettingsManagerDialog.prototype.OnOpen = function() { } SettingsManagerDialog.prototype.BeforeClose = function(Cancel, StandardHandler) { @@ -601,18 +624,52 @@ Cancel.val = false; } ////} SettingsManagerDialog +////{ Вспомогательные функции для работы с настройками. +function getDefaultTemplatesList() { + var tplList = v8New('ValueTable'); + tplList.Columns.Add('Value'); + return tplList; +} + +function __convertSettingsFromValueListToValueTable() { + + /* Изначально настройки хранились в СпискеЗначений. + Возникла необходимость переделать на ТаблицуЗначений. + Данная процедура выполняет конвертацию. */ + + var pflSnippets = SelfScript.uniqueName + '/TemplateFilesList'; + var defaultTplList = getDefaultTemplatesList(); + + profileRoot.createValue(SelfScript.name, defaultTplList, pflSnegopat); + var tplList = profileRoot.getValue(pflSnippets); + + if (toV8Value(tplList).typeName() == 'ValueList') + { + for(var i=0; i<tplList.Count(); i++) + defaultTplList.Add().Value = tplList.Get(i).Value; + } + + profileRoot.setValue(pflSnippets, defaultTplList); + +} +////} Вспомогательные функции для работы с настройками. + //////////////////////////////////////////////////////////////////////////////////////// ////{ Startup //// function GetSnippetsManager() { if (!SnippetsManager._instance) new SnippetsManager(); return SnippetsManager._instance; } + +//{ Конвертация значения настройки TemplateFilesList из списка значений в таблицу значений. +__convertSettingsFromValueListToValueTable(); +//} events.connect(snegopat, "onProcessTemplate", GetSnippetsManager()); ////} Startup Index: snippets.settings.ssf ================================================================== --- snippets.settings.ssf +++ snippets.settings.ssf cannot compute difference between binary files