RDT1C/DataProcessors/ирОболочкаПолеТекста/Ext/ObjectModule.bsl
Администратор 3cce84a591 .
2021-05-16 23:46:43 +03:00

292 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//ирПортативный Перем ирПортативный Экспорт;
//ирПортативный Перем ирОбщий Экспорт;
//ирПортативный Перем ирСервер Экспорт;
//ирПортативный Перем ирКэш Экспорт;
//ирПортативный Перем ирПривилегированный Экспорт;
Перем РедакторHTML; // Кэш
Перем НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка;
Функция РедакторHTML() Экспорт
Если Истина
И РедакторHTML = Неопределено
И ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента")
Тогда
РедакторHTML = ЭлементФормы.Документ.defaultView;
Если РедакторHTML <> Неопределено И Не ЗначениеЗаполнено(РедакторHTML.version1C) Тогда
РедакторHTML = Неопределено;
КонецЕсли;
КонецЕсли;
Возврат РедакторHTML;
КонецФункции
Процедура УстановитьГраницыВыделения(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция, КонечнаяСтрока = Неопределено, КонечнаяКолонка = Неопределено) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
Если КонечнаяСтрока = Неопределено Тогда
РедакторHTML.setSelectionByLength(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция);
Иначе
РедакторHTML.setSelection(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция, КонечнаяСтрока, КонечнаяКолонка);
КонецЕсли;
Иначе
Если КонечнаяСтрока = Неопределено Тогда
ЭлементФормы.УстановитьГраницыВыделения(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция);
Иначе
ЭлементФормы.УстановитьГраницыВыделения(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция, КонечнаяСтрока, КонечнаяКолонка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
ВыделениеТекста = РедакторHTML.getSelection();
НачальнаяСтрока = ВыделениеТекста.startLineNumber;
НачальнаяКолонка = ВыделениеТекста.startColumn;
КонечнаяСтрока = ВыделениеТекста.endLineNumber;
КонечнаяКолонка = ВыделениеТекста.endColumn;
Иначе
ЭлементФормы.ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
КонецЕсли;
КонецПроцедуры
Функция ПолучитьТекст() Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Текст = РедакторHTML.getText();
ИначеЕсли ТипЗнч(ЭлементФормы) = Тип("ПолеВвода") Тогда
Текст = ЭлементФормы.Значение;
Иначе
Текст = ЭлементФормы.ПолучитьТекст();
КонецЕсли;
Возврат Текст;
КонецФункции
Функция УстановитьТекст(Текст, Активировать = Ложь) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
РедакторHTML.updateText(Текст);
Если Активировать Тогда
РедакторHTML.editor.focus();
КонецЕсли;
ИначеЕсли ТипЗнч(ЭлементФормы) = Тип("ПолеВвода") Тогда
ЭлементФормы.Значение = Текст;
Иначе
ЭлементФормы.УстановитьТекст(Текст);
КонецЕсли;
Возврат Истина;
КонецФункции
Функция ПолучитьСтроку(НомерСтроки) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Текст = РедакторHTML.getLineContent(НомерСтроки);
Иначе
Текст = ЭлементФормы.ПолучитьСтроку(НомерСтроки);
КонецЕсли;
Возврат Текст;
КонецФункции
Функция КоличествоСтрок() Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Текст = РедакторHTML.getLineCount();
Иначе
Текст = ЭлементФормы.КоличествоСтрок();
КонецЕсли;
Возврат Текст;
КонецФункции
Функция ВыделенныйТекст(НовыйТекст = Неопределено) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если НовыйТекст = Неопределено Тогда
Результат = РедакторHTML.selectedText();
Иначе
РедакторHTML.selectedText(НовыйТекст);
//// https://github.com/salexdv/bsl_console/issues/64#issue-873784658
//ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
//УстановитьГраницыВыделения(КонечнаяСтрока, КонечнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
КонецЕсли;
Иначе
Если НовыйТекст = Неопределено Тогда
Результат = ЭлементФормы.ВыделенныйТекст;
Иначе
ЭлементФормы.ВыделенныйТекст = НовыйТекст;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ТолькоПросмотр(НовыйРежим = Неопределено) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если НовыйРежим = Неопределено Тогда
Результат = РедакторHTML.getReadOnly();
Иначе
РедакторHTML.setReadOnly(НовыйРежим);
КонецЕсли;
Иначе
Если НовыйРежим = Неопределено Тогда
Результат = ЭлементФормы.ТолькоПросмотр;
Иначе
ЭлементФормы.ТолькоПросмотр = НовыйРежим;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ЗаменитьСтроку(НомерСтроки, Текст) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
РедакторHTML.setLineContent(НомерСтроки, Текст); // https://github.com/salexdv/bsl_console/issues/90
//УстановитьГраницыВыделения(НомерСтроки, 1 , НомерСтроки, СтрДлина(ПолучитьСтроку(НомерСтроки)) + 1);
//ВыделенныйТекст(Текст);
Иначе
ЭлементФормы.ЗаменитьСтроку(НомерСтроки, Текст);
КонецЕсли;
КонецПроцедуры
Процедура ВставитьСтроку(НомерСтроки, Текст) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
РедакторHTML.insertLine(НомерСтроки, Текст); // Не реализован
Иначе
ЭлементФормы.ВставитьСтроку(НомерСтроки, Текст);
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьСтроку(Текст) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
ДлинаТекста = СтрДлина(ПолучитьТекст());
РедакторHTML.setText(Символы.ПС + Текст, ДлинаТекста);
Иначе
ЭлементФормы.ДобавитьСтроку(Текст);
КонецЕсли;
КонецПроцедуры
Процедура Очистить() Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
РедакторHTML.eraseText();
Иначе
ЭлементФормы.Очистить();
КонецЕсли;
КонецПроцедуры
Процедура ПоказатьОшибку(НомерСтроки, НомерКолонки = 1) Экспорт
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
РедакторHTML.markError(НомерСтроки, НомерКолонки);
Иначе
ЭлементФормы.УстановитьГраницыВыделения(НомерСтроки, 1, НомерСтроки, 150);
КонецЕсли;
КонецПроцедуры
Процедура ПолучитьПозициюКаретки(ВКОбщая, Форма, Панель) Экспорт
РедакторHTML = РедакторHTML();
Если РедакторHTML <> Неопределено Тогда
Координаты = РедакторHTML.getPositionOffset();
ВременноеПолеВвода = Форма.ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ыва3т5е4е", Истина, Панель);
ВременноеПолеВвода.Лево = 0;
ВременноеПолеВвода.Верх = 0;
ВременноеПолеВвода.Высота = 20;
ВременноеПолеВвода.Ширина = 1;
Форма.ТекущийЭлемент = ВременноеПолеВвода;
ВКОбщая.ПолучитьПозициюКаретки(Координаты.left, Координаты.top + 8);
Форма.ЭлементыФормы.Удалить(ВременноеПолеВвода);
Иначе
ВКОбщая.ПолучитьПозициюКаретки(0, 0);
КонецЕсли;
КонецПроцедуры
Функция КоординатыКурсора() Экспорт
ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
Результат = Новый Структура("НомерСтроки, НомерКолонки", КонечнаяСтрока, КонечнаяКолонка);
Возврат Результат;
КонецФункции
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
//ирПортативный #Если Клиент Тогда
//ирПортативный Контейнер = Новый Структура();
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
//ирПортативный ирПортативный.Открыть();
//ирПортативный КонецЕсли;
//ирПортативный #Иначе
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
//ирПортативный #КонецЕсли
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");