RDT1C/DataProcessors/ирОболочкаПолеТекста/Ext/ObjectModule.bsl
Администратор 9a70e9dec5 .
2021-05-03 23:50:12 +03:00

239 lines
11 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 = ПолеТекста.Документ.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.ReadOnly;
Иначе
РедакторHTML.setReadOnly(НовыйРежим);
КонецЕсли;
Иначе
Если НовыйРежим = Неопределено Тогда
Результат = ПолеТекста.ТолькоПросмотр;
Иначе
ПолеТекста.ТолькоПросмотр = НовыйРежим;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ЗаменитьСтроку(НомерСтроки, Текст) Экспорт
Если ТипЗнч(ПолеТекста) = Тип("ПолеHTMLДокумента") Тогда
РедакторHTML = РедакторHTML();
Если РедакторHTML = Неопределено Тогда
Возврат;
КонецЕсли;
РедакторHTML.setLineContent(НомерСтроки, Текст);
Иначе
ПолеТекста.ЗаменитьСтроку(НомерСтроки, Текст);
КонецЕсли;
КонецПроцедуры
Процедура ВставитьСтроку(НомерСтроки, Текст) Экспорт
Если ТипЗнч(ПолеТекста) = Тип("Поле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);
КонецЕсли;
КонецПроцедуры