Changes On Branch kuntashov-develop Вы: nobody
Вход

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch kuntashov-develop Excluding Merge-Ins

This is equivalent to a diff from 4be9b795c1 to 91216d8790

2012-03-01
09:09
Изменения из ветки kuntashov-develop перенес в основную ветку. check-in: 0e0d0c951e user: kuntashov tags: trunk
08:56
Синхронизировал с основной веткой. Leaf check-in: 91216d8790 user: kuntashov tags: kuntashov-develop
2012-02-29
10:36
Добавлено открытие прав объекта Роль. Добавлены макросы для открытия модулей конфигурации check-in: 4be9b795c1 user: orefkov tags: trunk
06:42
двойной щелчок по таблице открывает объект в дереве метаданных check-in: 590ab7c0c8 user: orefkov tags: trunk
2012-02-28
19:16
Слиты изменения эксперементальной ветки default-macros (http://snegopat.ru/forum/viewtopic.php?f=1&t=123). check-in: 2f64ae860e user: kuntashov tags: kuntashov-develop

Changes to DevTools/immediate.js.

47
48
49
50
51
52
53







54
55
56
57
58
59
60
    }
}

function macrosЗапуститьОтладчикСкриптов()
{
    runDebugger();
}








/*
 *    Обработчики событий формы
 */
function ОбновлениеОтображения()
{
    // Если надо восстановить положение курсора, сделаем это






>
>
>
>
>
>
>







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    }
}

function macrosЗапуститьОтладчикСкриптов()
{
    runDebugger();
}

/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'ОткрытьОкно';
}


/*
 *    Обработчики событий формы
 */
function ОбновлениеОтображения()
{
    // Если надо восстановить положение курсора, сделаем это

Changes to DevTools/pflview.js.

57
58
59
60
61
62
63






64
65
66
67
68
69
70
    if(!form)
    {
        form = loadScriptForm(SelfScript.fullPath.replace(/js$/i, 'ssf'), SelfScript.self)
        walkProfile(profileRoot, form.ProfileTree)
    }
    form.Открыть()
}







function КоманднаяПанельРазвернутьВсеГруппы(Кнопка)
{
    for(var rowsArray = new Enumerator(form.ProfileTree.Строки);
        !rowsArray.atEnd(); rowsArray.moveNext())
    {
        var row = rowsArray.item();






>
>
>
>
>
>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    if(!form)
    {
        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())
    {
        var row = rowsArray.item();

Changes to DevTools/scriptdev.js.

69
70
71
72
73
74
75







76
77
78
79
80
81
82
    jsCode = jsCode.replace(/КонецПроцедуры/ig, "}");
    
    stdcommands.Frntend.ClearMessageWindow.send(); // Очистить окно сообщений.
    Message(jsCode);
    
    return true;
}







 
/* **********************************************************
 *  Реализация функционала скрипта.
 * ********************************************************* */

// Пути хранения настроек скрипта в профайле.
var pflPaths = {






>
>
>
>
>
>
>







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
    jsCode = jsCode.replace(/КонецПроцедуры/ig, "}");
    
    stdcommands.Frntend.ClearMessageWindow.send(); // Очистить окно сообщений.
    Message(jsCode);
    
    return true;
}
 
/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'Настройка';
}

 
/* **********************************************************
 *  Реализация функционала скрипта.
 * ********************************************************* */

// Пути хранения настроек скрипта в профайле.
var pflPaths = {

Changes to DevTools/testrunner.js.

28
29
30
31
32
33
34







35
36
37
38
39
40
41
    GetTestRunner().Show();
}

function macrosСкрыть()
{
    GetTestRunner().Close();
}







//}

////////////////////////////////////////////////////////////////////////////////////////
////{ TestRunner
////

function TestRunner()






>
>
>
>
>
>
>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    GetTestRunner().Show();
}

function macrosСкрыть()
{
    GetTestRunner().Close();
}

/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'Показать';
}

//}

////////////////////////////////////////////////////////////////////////////////////////
////{ TestRunner
////

function TestRunner()

Changes to RegExpEditor.js.

21
22
23
24
25
26
27






28
29
30
31
32
33
34
...
344
345
346
347
348
349
350
351
352
////

SelfScript.Self['macros������������� ���������� ���������'] = function () {
    var reEditor = CreateRegExpEditor();
    reEditor.setTextWindow(GetTextWindow());    
    reEditor.open();
}







////} �������

////////////////////////////////////////////////////////////////////////////////////////
////{ RegExpEditor
////

................................................................................
    this.form.RegExSource = this.form.RegExSource.replace(/""/g, '"');
}

_RegExpEditor.prototype.CmdBarRemoveNewLines = function (������) {
    this.form.RegExSource = this.form.RegExSource.replace(/\r|\n/g, '');
}
////} RegExpEditor - ����������� ������� �����








>
>
>
>
>
>







 







<
<
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
...
350
351
352
353
354
355
356


////

SelfScript.Self['macros������������� ���������� ���������'] = function () {
    var reEditor = CreateRegExpEditor();
    reEditor.setTextWindow(GetTextWindow());    
    reEditor.open();
}

/* ���������� �������� ������� �� ��������� - ����������, ����� ������������ 
������ ������� ����� �� �������� ������� � ���� ���������. */
function getDefaultMacros() {
    return '������������� ���������� ���������';
}

////} �������

////////////////////////////////////////////////////////////////////////////////////////
////{ RegExpEditor
////

................................................................................
    this.form.RegExSource = this.form.RegExSource.replace(/""/g, '"');
}

_RegExpEditor.prototype.CmdBarRemoveNewLines = function (������) {
    this.form.RegExSource = this.form.RegExSource.replace(/\r|\n/g, '');
}
////} RegExpEditor - ����������� ������� �����


Changes to author.js.

35
36
37
38
39
40
41






42
43
44
45
46
47
48
SelfScript.self['macrosНастройка'] = function() {
    // form - неявно определяемая глобальная переменная.
    form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), SelfScript.self);
    form.DoModal();
    form = null;
}







////} Макросы

var MarkerTypes = {
    ADDED: "МаркерДобавлено",
    REMOVED: "МаркерУдалено",
    CHANGED:"МаркерИзменено"






>
>
>
>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
SelfScript.self['macrosНастройка'] = function() {
    // form - неявно определяемая глобальная переменная.
    form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), SelfScript.self);
    form.DoModal();
    form = null;
}

/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'Настройка';
}

////} Макросы

var MarkerTypes = {
    ADDED: "МаркерДобавлено",
    REMOVED: "МаркерУдалено",
    CHANGED:"МаркерИзменено"

Changes to autosave.js.

48
49
50
51
52
53
54






55
56
57
58
59
60
61
    // Обработку событий формы привяжем к самому скрипту
    form = loadScriptForm(pathToForm, SelfScript.self)
    form.Включить = enabled
    form.Интервал = interval
    form.ОткрытьМодально()
    form = null
}







// Обработчики нажатий кнопок в форме
function ОкНажатие(Элемент)
{
    // Прочитаем значения из формы и если они изменились, сохраним их
    if(form.Включить != enabled)
    {






>
>
>
>
>
>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    // Обработку событий формы привяжем к самому скрипту
    form = loadScriptForm(pathToForm, SelfScript.self)
    form.Включить = enabled
    form.Интервал = interval
    form.ОткрытьМодально()
    form = null
}

/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'НастройкаАвтоСохранения';
}

// Обработчики нажатий кнопок в форме
function ОкНажатие(Элемент)
{
    // Прочитаем значения из формы и если они изменились, сохраним их
    if(form.Включить != enabled)
    {

Changes to configCaption.js.

133
134
135
136
137
138
139






140
141
142
143
144
145
146
147
148
149
150
151
    {
        captionExpr = form.Выражение
        profileRoot.setValue(captionExprPath, captionExpr)
        setCaption(windows.mainTitle, windows.additionalTitle)
    }
    form = null
}







function КоманднаяПанель1Проверить(Кнопка)
{
    var mainTitle = windows.mainTitle, additionalTitle = windows.additionalTitle
    var mainTitleShort = mainTitle.replace(/^Конфигуратор - /, "")
    MessageBox(eval(form.Выражение))
}

function КоманднаяПанель1ОК(Кнопка)
{
    form.Закрыть(true)
}






>
>
>
>
>
>












133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
    {
        captionExpr = form.Выражение
        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(/^Конфигуратор - /, "")
    MessageBox(eval(form.Выражение))
}

function КоманднаяПанель1ОК(Кнопка)
{
    form.Закрыть(true)
}

Changes to extSearch.js.

58
59
60
61
62
63
64






65
66
67
68
69
70
71
}

SelfScript.self['macrosПерейти к предыдущему совпадению'] = function() {
    var es = GetExtSearch();
    es.Show();
    es.moveRowCursor(false);
}







////} Макросы

////////////////////////////////////////////////////////////////////////////////////////
////{ ExtSearch - Расширенный поиск в тексте модуля.
////
function ExtSearch() {






>
>
>
>
>
>







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
}

SelfScript.self['macrosПерейти к предыдущему совпадению'] = function() {
    var es = GetExtSearch();
    es.Show();
    es.moveRowCursor(false);
}

/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'Открыть окно поиска';
}

////} Макросы

////////////////////////////////////////////////////////////////////////////////////////
////{ ExtSearch - Расширенный поиск в тексте модуля.
////
function ExtSearch() {

Changes to extfiles.js.

6
7
8
9
10
11
12
13
14
15
16
17
18


19
20

21
22
23
24
25
26
27
28
29
30



31
32

33
34
35

36
37
38
39

40
41
42
43

44
45











































































































46
47
48
49
50
51
52
53
54
..
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
...
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
...
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
...
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
...
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
...
367
368
369
370
371
372
373
374
375

376
377
378
379
380
381

382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
...
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496





































































































































































































$addin stdlib

/* Скрипт для открытия внешних файлов для Снегопата
 * Автор        : Пушин Владимир, 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 ТзКаталоговИнициализировать(пТзКаталоги)
{
    try{
        пТзКаталоги = ValueFromStringInternal(пТзКаталоги)
    }
    catch(e){
        пТзКаталоги = v8New("ТаблицаЗначений")
    }
    try{ /*тут проверяем не старые ли настройки, раньше хранились в массиве, конвертируем, в будущем удалить*/
................................................................................
        return лТзКаталоги
    }
    catch(e){
    }
    return пТзКаталоги
}

мТзКаталогиОбщие = ТзКаталоговИнициализировать(мТзКаталогиОбщие)
мТзКаталогиБазы = ТзКаталоговИнициализировать(мТзКаталогиБазы)

мФормаСкрипта=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
    
    path = pathToFile.replace("/", "\\")
................................................................................
        return path+"\\"+b
    }
    if (path.substr(path.length-1,1) != "\\" && b.substr(0,1) == "\\") {
        return path+b;
    }
}

function мДобавитьФайлы(пПуть, пУзел)
{
    var лФайлы=FindFiles(пПуть, '*.*', false)
    for (var лИнд=0; лИнд<лФайлы.Количество(); лИнд++)
    {
        лФайл=лФайлы.Получить(лИнд)
        
        if((лФайл.ЭтоКаталог() == false) && (мФормаСкрипта.Фильтр != ''))
            if(лФайл.ИмяБезРасширения.toLowerCase().search(мФормаСкрипта.Фильтр.toLowerCase()) == -1) continue
................................................................................
            мДобавитьФайлы(лФайл.ПолноеИмя, лСтрокаДереваФайлов)
        }
        else
            лСтрокаДереваФайлов.Тип=лФайл.Расширение.substr(1)
    }
}

function ДобавитьКаталоги(пТзКаталоги)
{
    var mainFolder = profileRoot.getValue("Snegopat/MainFolder")
    try {
        var fso = new ActiveXObject ("Scripting.FileSystemObject")
    }
    catch (er) {
        var fso = null
    }
................................................................................
        
        мДобавитьФайлы(лКаталог, лСтрокаДереваФайлов)
        лСтрокаДереваФайлов.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true)
    }
    мФормаСкрипта.ДеревоФайлов.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true)
}

function мОбновитьФайлы()
{
    лТекСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока
    
    // Запомним текущую строку
    лИмяФайлаТекСтроки=""
    if(лТекСтрока!=undefined) лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла
    
    мФормаСкрипта.ДеревоФайлов.Строки.Очистить()
................................................................................
    if(лИмяФайлаТекСтроки != ""){
        лСтрокаНайденная=мФормаСкрипта.ДеревоФайлов.Строки.Найти(лИмяФайлаТекСтроки, "ИмяФайла", true)
        if(лСтрокаНайденная != undefined)
            мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=лСтрокаНайденная
    }
}

function мОбновитьФайлыТекущейВетки()
{
    лТекСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока
    if(лТекСтрока==undefined) return
    
    // Запомним текущую строку
    лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла
    
    while(лТекСтрока.Родитель != undefined) лТекСтрока=лТекСтрока.Родитель
................................................................................
    
    // Восстановим текущую строку
    лСтрокаНайденная=мФормаСкрипта.ДеревоФайлов.Строки.Найти(лИмяФайлаТекСтроки, "ИмяФайла", 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 СформироватьТзРасширенияФайловПоУмолчанию() 
{
    var ТЗ = v8New("ТаблицаЗначений");
    ТЗ.Колонки.Добавить("Расширение");

    function Расш(расширение) { ТЗ.Добавить().Расширение = расширение; }
    
    // Стандартные файлы 1С:Предприятия 8.
    Расш("txt"); Расш("bmp"); Расш("dib"); Расш("png"); Расш("rle"); 
................................................................................

    // Файлы Снегопата.
    Расш("ssf"); Расш("js"); Расш("vbs");
    
    return ТЗ;
}

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');
    }
    
    return RE_EXTENSIONS.test(ИмяФайла);
}












































































































































































































|

|
|
<
<
>
>
|
<
>

|
|
|
|
|
<
|
<
<
>
>
>
|
<
>
|
<
|
>
|
|
|
<
>
|
|
<
|
>
|

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|







 







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|







 







|
|







 







|
|







 







|
<







 







|
|







 







|
<
>
|


|
<
<
>


<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|







 







|
<






|





>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
6
7
8
9
10
11
12
13
14
15
16


17
18
19

20
21
22
23
24
25
26

27


28
29
30
31

32
33

34
35
36
37
38

39
40
41

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
...
173
174
175
176
177
178
179



































































































180
181
182
183
184
185
186
187
188
...
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
...
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
...
329
330
331
332
333
334
335
336

337
338
339
340
341
342
343
...
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
...
374
375
376
377
378
379
380
381

382
383
384
385
386


387
388
389
















































































390
391
392
393
394
395
396
397
398
...
402
403
404
405
406
407
408
409

410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
$addin stdlib

/* Скрипт для открытия внешних файлов для Снегопата
 * Автор        : Пушин Владимир, vladnet@gmail.com
 * Дата создания: 24.08.2011
 * Описание     : Добавляет окно из которого можно открывать внешние файлы
 */
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("ТаблицаЗначений")
    }
    try{ /*тут проверяем не старые ли настройки, раньше хранились в массиве, конвертируем, в будущем удалить*/
................................................................................
        return лТзКаталоги
    }
    catch(e){
    }
    return пТзКаталоги
}




































































































function GetAbsolutePathName(pathToFile) {

    if (pathToFile.length == 0) return pathToFile
    //код взят из python для определеня abspath
    debugger; 
    backslash = "\\"
    if (pathToFile.substr(0,4)=='\\\\.\\' ||  pathToFile.substr(0,4)=='\\\\?\\') return pathToFile
    
    path = pathToFile.replace("/", "\\")
................................................................................
        return path+"\\"+b
    }
    if (path.substr(path.length-1,1) != "\\" && b.substr(0,1) == "\\") {
        return path+b;
    }
}

function мДобавитьФайлы(пПуть, пУзел) {

    var лФайлы=FindFiles(пПуть, '*.*', false)
    for (var лИнд=0; лИнд<лФайлы.Количество(); лИнд++)
    {
        лФайл=лФайлы.Получить(лИнд)
        
        if((лФайл.ЭтоКаталог() == false) && (мФормаСкрипта.Фильтр != ''))
            if(лФайл.ИмяБезРасширения.toLowerCase().search(мФормаСкрипта.Фильтр.toLowerCase()) == -1) continue
................................................................................
            мДобавитьФайлы(лФайл.ПолноеИмя, лСтрокаДереваФайлов)
        }
        else
            лСтрокаДереваФайлов.Тип=лФайл.Расширение.substr(1)
    }
}

function ДобавитьКаталоги(пТзКаталоги) {

    var mainFolder = profileRoot.getValue("Snegopat/MainFolder")
    try {
        var fso = new ActiveXObject ("Scripting.FileSystemObject")
    }
    catch (er) {
        var fso = null
    }
................................................................................
        
        мДобавитьФайлы(лКаталог, лСтрокаДереваФайлов)
        лСтрокаДереваФайлов.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true)
    }
    мФормаСкрипта.ДеревоФайлов.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true)
}

function мОбновитьФайлы() {

    лТекСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока
    
    // Запомним текущую строку
    лИмяФайлаТекСтроки=""
    if(лТекСтрока!=undefined) лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла
    
    мФормаСкрипта.ДеревоФайлов.Строки.Очистить()
................................................................................
    if(лИмяФайлаТекСтроки != ""){
        лСтрокаНайденная=мФормаСкрипта.ДеревоФайлов.Строки.Найти(лИмяФайлаТекСтроки, "ИмяФайла", true)
        if(лСтрокаНайденная != undefined)
            мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=лСтрокаНайденная
    }
}

function мОбновитьФайлыТекущейВетки() {

    лТекСтрока=мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока
    if(лТекСтрока==undefined) return
    
    // Запомним текущую строку
    лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла
    
    while(лТекСтрока.Родитель != undefined) лТекСтрока=лТекСтрока.Родитель
................................................................................
    
    // Восстановим текущую строку
    лСтрокаНайденная=мФормаСкрипта.ДеревоФайлов.Строки.Найти(лИмяФайлаТекСтроки, "ИмяФайла", true)
    if(лСтрокаНайденная != undefined)
        мФормаСкрипта.ЭлементыФормы.ДеревоФайлов.ТекущаяСтрока=лСтрокаНайденная
}

function ПолучитьКаталогСтрокиДерева(СтрокаДерева) {

    var Файл = v8New('Файл', СтрокаДерева.ИмяФайла);
    return Файл.ЭтоФайл() ? Файл.Путь : Файл.ПолноеИмя;
}

function ПолучитьКомандуЗапускаКонсоли(Каталог) {


    return мКомандаЗапускаКонсоли.replace(/%1/, Каталог);
}

















































































function СформироватьТзРасширенияФайловПоУмолчанию() {

    var ТЗ = v8New("ТаблицаЗначений");
    ТЗ.Колонки.Добавить("Расширение");

    function Расш(расширение) { ТЗ.Добавить().Расширение = расширение; }
    
    // Стандартные файлы 1С:Предприятия 8.
    Расш("txt"); Расш("bmp"); Расш("dib"); Расш("png"); Расш("rle"); 
................................................................................

    // Файлы Снегопата.
    Расш("ssf"); Расш("js"); Расш("vbs");
    
    return ТЗ;
}

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');
    }
    
    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ОткрытьОкноВнешнихФайлов()

////} Инициализация скрипта


Changes to extfiles.ssf.

cannot compute difference between binary files

Changes to extfilesparam.ssf.

cannot compute difference between binary files

Changes to mdNavigator.js.

367
368
369
370
371
372
373
374






    var n = Кнопка.val.Name
    doAction(function(mdObj){mdObj.editProperty(n)})
}
// Двойной щелчок по таблице
function ТаблицаМетаданныхВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
{
    doAction(function(mdObj){mdObj.activateInTree()})
}













>
>
>
>
>
>
367
368
369
370
371
372
373
374
375
376
377
378
379
380
    var n = Кнопка.val.Name
    doAction(function(mdObj){mdObj.editProperty(n)})
}
// Двойной щелчок по таблице
function ТаблицаМетаданныхВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
{
    doAction(function(mdObj){mdObj.activateInTree()})
}
/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros()
{
    return 'Открыть объект метаданных';
}

Changes to query_colors.js.

14
15
16
17
18
19
20






21
22
23
24
25
26
27
function macrosОткрытьОкно()
{
    form = loadScriptForm(SelfScript.fullPath.replace(/js$/i, 'ssf'), SelfScript.self)
    form.ОткрытьМодально()
    form = null
}







function ПриОткрытии()
{
    var qec = profileRoot.getFolder("SelectColorCategory")
    for(var i = 0, c = qec.valuesCount; i < c; i++)
    {
        var row = form.Категории.Добавить()






>
>
>
>
>
>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function macrosОткрытьОкно()
{
    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++)
    {
        var row = form.Категории.Добавить()

Changes to snippets.js.

51
52
53
54
55
56
57






58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
...
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558









559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578












579
580
581
582
583
584
585
...
599
600
601
602
603
604
605






























606
607
608
609
610
611
612
613
614




615
616
617
618
    var sm = GetSnippetsManager();
    var params = sm.paramsManager.getAllParams();
    
    var selParam = sm.selectValue(params);
    if (selParam)
        w.SetSelectedText('<%' + selParam + '>');    
}







////} Макросы

////////////////////////////////////////////////////////////////////////////////////////
////{ SnippetsManager
////

function SnippetsManager() {

    SnippetsManager._instance = this;

    this.settings = SettingsManagement.CreateManager(SelfScript.uniqueName, {'TemplateFilesList':v8New('ValueList')});
    this.settings.LoadSettings();    
    
    this._snippets = {};
    this._snippetNames = new Array();
    
    this.paramsManager = new SnippetParametersManager();         
    
................................................................................
    this.form.Close();
}

SettingsManagerDialog.prototype.CmdBarAbout = function (button) {
    RunApp('http://snegopat.ru/scripts/wiki?name=snippets.js');
}

SettingsManagerDialog.prototype.CmdBarStListAddStFile = function (button) {
    
    var dlg = v8New('FileDialog',  FileDialogMode.Open);
    dlg.Multiselect = true;
    dlg.CheckFileExist = true;
    dlg.Filter = "Файлы шаблонов (*.st)|*.st|Все файлы|*";
    
    if (dlg.Choose())









    {
        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);
        }
    }
}

SettingsManagerDialog.prototype.CmdBarStListDeleteStFile = function (button) {
    var curRow = this.form.Controls.TemplateFilesList.CurrentRow;
    if (curRow)
    {
        this.form.TemplateFilesList.Delete(curRow);
        this.form.Modified = true;        
    }
}













SettingsManagerDialog.prototype.OnOpen = function() {
}

SettingsManagerDialog.prototype.BeforeClose = function(Cancel, StandardHandler) {

    StandardHandler.val = false;
................................................................................
    }	
    
    Cancel.val = false;
}

////} SettingsManagerDialog 































////////////////////////////////////////////////////////////////////////////////////////
////{ Startup
////
function GetSnippetsManager() {
    if (!SnippetsManager._instance)
        new SnippetsManager();
        
    return SnippetsManager._instance;
}





events.connect(snegopat, "onProcessTemplate", GetSnippetsManager());

////} Startup 






>
>
>
>
>
>











|







 







|
|

|




>
>
>
>
>
>
>
>
>



|
<
<
<
|
<











>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>









>
>
>
>




51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
...
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577



578

579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
...
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
    var sm = GetSnippetsManager();
    var params = sm.paramsManager.getAllParams();
    
    var selParam = sm.selectValue(params);
    if (selParam)
        w.SetSelectedText('<%' + selParam + '>');    
}

/* Возвращает название макроса по умолчанию - вызывается, когда пользователь 
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
    return 'ОткрытьНастройкиСкрипта';
}

////} Макросы

////////////////////////////////////////////////////////////////////////////////////////
////{ SnippetsManager
////

function SnippetsManager() {

    SnippetsManager._instance = this;

    this.settings = SettingsManagement.CreateManager(SelfScript.uniqueName, {'TemplateFilesList':getDefaultTemplatesList()});
    this.settings.LoadSettings();    
    
    this._snippets = {};
    this._snippetNames = new Array();
    
    this.paramsManager = new SnippetParametersManager();         
    
................................................................................
    this.form.Close();
}

SettingsManagerDialog.prototype.CmdBarAbout = function (button) {
    RunApp('http://snegopat.ru/scripts/wiki?name=snippets.js');
}

SettingsManagerDialog.prototype.selectTemplateFiles = function (multiselect) {

    var dlg = v8New('FileDialog',  FileDialogMode.Open);
    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<selected.Count(); i++)



            this.form.TemplateFilesList.Add().Value = selected.Get(i);

    }
}

SettingsManagerDialog.prototype.CmdBarStListDeleteStFile = function (button) {
    var curRow = this.form.Controls.TemplateFilesList.CurrentRow;
    if (curRow)
    {
        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) {

    StandardHandler.val = false;
................................................................................
    }	
    
    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 

Changes to snippets.settings.ssf.

cannot compute difference between binary files