Artifact 5f53b1f1c728c7ba4be3884c49e0a11d9c6bc78b:
- File ModuleComment.js — part of check-in [b0b83dad7b] at 2012-03-30 10:18:00 on branch trunk — исправлена ошибка с неправильной кодировкой текста скрипта (user: vsuh size: 6604) [more...]
$engine JScript $uname ModuleComment $dname Описание модуля $addin global $addin stdlib stdlib.require("TextWindow.js", SelfScript); global.connectGlobals(SelfScript); //////////////////////////////////////////////////////////////////////////////////////// ////{ Cкрипт "Заголовок общего модуля" (ModuleComment.js) для проекта "Снегопат" //// //// Описание: Выводит заголовок модуля с его описанием и сведениями об авторе //// //// Автор: Сухих В.Ю. по мотивам скрипта author.js Александра Кунташова //// <kuntashov@gmail.com>, http://compaud.ru/blog //// 29.03.2012 Список отображаемых в форме конфигураций настраивается в Списке значений дляКонфигурации //// для включения возможности удалите комментарии "//ft" ////} //////////////////////////////////////////////////////////////////////////////////////// var doOK = false; //ft var дляКонфигурации = v8New("СписокЗначений"); //ft дляКонфигурации.Add( "АСБНУ 1.3" ); //ft дляКонфигурации.Add( "ЗУП 2.5.48" ); //ft дляКонфигурации.Add( "УПП 1.2 (рзп)" ); //ft дляКонфигурации.Add( "УАТ" ); //ft дляКонфигурации.Add( "Для всех конфигураций"); //////////////////////////////////////////////////////////////////////////////////////// ////{ Макросы //// SelfScript.self['macrosМаркер "Вставить"'] = function() { form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), SelfScript.self); //ft form.ЭлементыФормы.Назначение.СписокВыбора = дляКонфигурации; form.DoModal(); form = null; if (doOK) addMarker(MarkerTypes.INSERT); } /* Возвращает название макроса по умолчанию - вызывается, когда пользователь дважды щелкает мышью по названию скрипта в окне Снегопата. */ function getDefaultMacros() { return 'Маркер "Вставить"'; } ////} Макросы var MarkerTypes = { INSERT:"Вставить" }; var MarkerFormatStringParameters = {}; var pflSuhAuthorJs = 'Заголовок общего модуля 1'; function addMarker(markerType) { var _d = new Date(); var dtNow = _d.getDate()+"."+(_d.getMonth()+1)+"."+_d.getFullYear()+" "+_d.getHours()+":"+_d.getMinutes()+""; var w = snegopat.activeTextWindow(); if (!w) return; bFreeW = (w.mdProp == null); if (!bFreeW) { if (w.mdProp.name(1) == "Форма") { var md = w.mdObj.parent; try { md.editProperty("МодульОбъекта"); }catch(e){} } } var w = GetTextWindow(); if (!w) return; var intLastStrCommentAlready = CheckForDescription(w); if (intLastStrCommentAlready != 1) { w.textWindow.SetSelection(1, 1, intLastStrCommentAlready, 90); w.textWindow.SelectedText = ""; } var synonym = Метаданные.Синоним; w.SetCaretPos(1, 1); w.InsertLine(1, ""+ "//****************************************//_\\\\\n"+ "// Описание программы от " + dtNow +" /{"+ "\n// ___" + strct1C_Description.ТипПрограммы + "___\n// предназначено для [" + strct1C_Description.Назначение + "]\n" + strct1C_Description.Описание.replace(/(^.*)/mg, "//>> $1") + "\n// " + strct1C_Description.Автор + "\n// Создан в " + synonym + "\n" + "//***************************************//}}\n"); } function parseTpl() { var a = []; for (var i=0; i<arguments.length; i++) a.push(arguments[i]); return snegopat.parseTemplateString('<?"", ' + a.join(',') + '>'); } function getSettingsStructure() { var s = v8New("Структура"); s.Вставить("Автор", ""); s.Вставить("Назначение", ""); s.Вставить("ТипПрограммы", ""); s.Вставить("Описание", ""); profileRoot.createValue(pflSuhAuthorJs, s, pflSnegopat) s = profileRoot.getValue(pflSuhAuthorJs); return s; } //{ Обработчики элементов управления формы function ПриОткрытии () { ЗаполнитьЗначенияСвойств(form, strct1C_Description); form['Описание'] = ""; } function КнопкаОкНажатие (Элемент) { ЗаполнитьЗначенияСвойств(strct1C_Description, form); profileRoot.setValue(pflSuhAuthorJs, strct1C_Description); doOK = true; form.Close(); } function КнопкаОтменаНажатие (Элемент) { doOK = false; form.Close(); } //} Обработчики элементов управления формы //{ Вернем последнюю строку описания модуля, если есть иначе 0 function CheckForDescription(wnd) { var txtText = wnd.ПолучитьТекст(); if(wnd.LinesCount == 0) return 0; var arrLines = wnd.GetLines(); if (arrLines[0].search(/\*\/\/\_\\\\/) == -1) return 0; for (var ln in arrLines) { if (arrLines[ln].search(/\/\/\}\}/) > 0) return (parseInt(ln) + 1); if (arrLines[ln].search(/^\s*\/\//) == -1) return 0; } return 0; } //} CheckForDescription //{ Горячие клавиши по умолчанию. function getPredefinedHotkeys(predef) { predef.setVersion(2.2); predef.add('Маркер "Вставить"', "Alt + Z"); } //} Горячие клавиши по умолчанию. var strct1C_Description = getSettingsStructure();