diff --git a/выбор-файла|file-selection.js b/выбор-файла|file-selection.js index bbaf35d..e69de29 100644 --- a/выбор-файла|file-selection.js +++ b/выбор-файла|file-selection.js @@ -1,67 +0,0 @@ - - -ЗадатьУказанныйФайл = function(мир) -{ - мир.файл = мир.файлы[мир.номерВыбранногоФайла]; -}; - - -// // // // - - -НеОтслеживатьРедактирование = function(мир) -{ - мир.отслеживатьРедактирование = false; -}; - - -// // // // - - -ОтслеживатьРедактирование = function(мир) -{ - мир.отслеживатьРедактирование = true; -}; - - -// // // // - - -ЗадатьПараметрФайла = function(мир) -{ - var файл = мир.файлы[мир.номерВыбранногоФайла]; - задатьПараметрВСтрокеПоиска("📁", файл); -}; - - -// // // // - - -ОтобразитьСодержимоеВыбранногоФайла = function(мир) -{ - var файл = мир.файлы[мир.номерВыбранногоФайла]; - var содержимое = мир.временноеСодержимое[файл]; - if (!содержимое) - { - содержимое = мир.редактируемыйМодуль.содержимое[файл]; - }; - мир.редактор.session.setValue(содержимое); -}; - - -// // // // - - -ОтобразитьВыборФайла = function(мир) -{ - var id = мир.макет.константы.файл; - // Очищаем выбор. - for (var номер in мир.файлы) - { - $(`#${id}-${номер}-элемент`).removeClass("uk-active"); - } - // Отображаем выбор. - $(`#${id}-${мир.номерВыбранногоФайла}-элемент`).addClass("uk-active"); -}; - - diff --git a/выбор-файла|file-selection.череда b/выбор-файла|file-selection.череда index 74fb91e..e69de29 100644 --- a/выбор-файла|file-selection.череда +++ b/выбор-файла|file-selection.череда @@ -1,7 +0,0 @@ -выбрали файл - задать указанный файл - не отслеживать редактирование - отобразить выбор файла - отобразить содержимое выбранного файла - задать параметр файла - отслеживать редактирование diff --git a/загрузка|load.js b/загрузка|load.js index 2ef13a3..dd29470 100644 --- a/загрузка|load.js +++ b/загрузка|load.js @@ -10,9 +10,9 @@ const ИМЯ = "Главред | Glavred"; var модуль = мир.модули.модульПоИмени(ИМЯ); var составляющие = [ "/пуск|run", - "/выбор-файла|file-selection", - "/редактирование|editing", - "/сохранение|saving", +// "/выбор-файла|file-selection", +// "/редактирование|editing", +// "/сохранение|saving", ]; for (var номер in составляющие) { diff --git a/пуск|run.js b/пуск|run.js index d317f6f..79f5fc9 100644 --- a/пуск|run.js +++ b/пуск|run.js @@ -1,353 +1,10 @@ -const ИМЯ = "Главред | Glavred"; - - -// // // // - - -ЗадатьВременноеСодержимое = function(мир) -{ - мир.временноеСодержимое = {}; -}; - - -// // // // - - -ЗадатьКнопкуСохранения = function(мир) -{ - var кнопка = мир.макет.элементы.действие - .replace("${название}", "💾") - .replace(/\$\{id\}/g, `${мир.макет.константы.сохранить}`) - ; - $(`#${мир.макет.константы.действия}`).append(кнопка); - $(`#${мир.макет.константы.сохранить}-ссылка`).click(function() { - мир.уведомить("выбрали сохранить"); - }); -}; - - -// // // // - - -НастроитьОтслеживаниеРедактирования = function(мир) -{ - мир.отслеживатьРедактирование = true; - - мир.редактор.session.on("change", function(delta) { - if (мир.отслеживатьРедактирование) - { - мир.уведомить("редактирование"); - } - }); -}; - - -// // // // - - -ВыбратьУказанныйФайл = function(мир) -{ - мир.номерВыбранногоФайла = мир.файлы.indexOf(мир.файл); - мир.уведомить("выбрали файл"); -} - - -// // // // - - -ВыбратьПервыйФайл = function(мир) -{ - мир.номерВыбранногоФайла = 0; - мир.уведомить("выбрали файл"); -} - - -// // // // - - -ПроверитьНаличиеУказанногоФайла = function(мир) -{ - if ( - мир.файл && - мир.файлы.includes(мир.файл) - ) { - мир.уведомить("указанный файл существует"); - } - else - { - мир.уведомить("указанный файл не существует"); - } -}; - // // // // -НастроитьAce = function(мир) +ВывестиПриветствиеОтГлавреда = мир => { - мир.редактор = window.ace.edit("редактор"); - мир.редактор.session.setMode("ace/mode/javascript"); + console.debug("Привет от Главреда"); }; - -// // // // - - -ОтслеживатьВыборФайла = function(мир) -{ - var id = мир.макет.константы.файл; - for (var номер in мир.файлы) - { - const номерФайла = номер; - $(`#${id}-${номер}-ссылка`).click(function() { - мир.номерВыбранногоФайла = номерФайла; - мир.уведомить("выбрали файл"); - }); - } -}; - - -// // // // - - -ЗадатьСписокФайлов = function(мир) -{ - var м = мир.редактируемыйМодуль; - мир.файлы = Object.keys(м.структура).sort(); - - var содержимое = ""; - - var заголовок = мир.макет.элементы.заголовокМеню.replace("${название}", "📦 " + м.имя); - содержимое += заголовок; - var id = мир.макет.константы.файл; - for (var номер in мир.файлы) - { - var файл = мир.файлы[номер]; - содержимое += мир.макет.элементы.пунктМеню - .replace("${название}", файл) - .replace(/\$\{id\}/g, `${id}-${номер}`) - ; - } - - $(`#${мир.макет.константы.меню}`).html(содержимое); -}; - - -// // // // - - -УведомитьОбОшибкеЗагрузкиСодержимогоРедактируемогоМодуля = function(мир) -{ - var сообщение = "ОШИБКА Не удалось загрузить редактируемый модуль из хранилища бразуера | ERROR The module to be edited couldn't be loaded from the browser's storage"; - console.error(сообщение); - console.error(мир.указатель); - $(`#${мир.макет.константы.содержимое}`).html(` -
-

${сообщение}

-

${мир.указатель}

-
- `); -}; - - -// // // // - - -ЗагрузитьСодержимоеРедактируемогоМодуля = function(мир) -{ - // Пропускаем загрузку, если содержимое уже присутствует. - if (мир.редактируемыйМодуль.содержимое) - { - мир.уведомить("загрузили содержимое"); - return; - } - - // Загружаем содержимое. - мир.модули.загрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { - мир.уведомить("загрузили содержимое"); - }); - мир.модули.неЗагрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { - мир.уведомить("не загрузили содержимое"); - }); - мир.модули.загрузитьСодержимоеСохранённогоМодуля(мир.указатель); -}; - - -// // // // - - -ПродолжитьЗагрузку = мир => -{ - мир.уведомить("загрузили содержимое"); -}; - - -// // // // - - -ЗадатьПараметрМодуляРедактором = function(мир) -{ - задатьПараметрВСтрокеПоиска("📦", мир.редактируемыйМодуль.указатель); -}; - - -// // // // - - -НазначитьРедактируемымМодульРедактора = function(мир) -{ - мир.редактируемыйМодуль = мир.модули.модульПоИмени(ИМЯ); -}; - - -// // // // - - -ПроверитьНаличиеРедактируемогоМодуля = function(мир) -{ - мир.редактируемыйМодуль = мир.модули.модульПоУказателю(мир.указатель); - if (мир.редактируемыйМодуль) - { - мир.уведомить("редактируемый модуль существует"); - } - else - { - мир.уведомить("редактируемый модуль не существует"); - } -}; - - -// // // // - - -ЗадатьЗаголовокИВерсию = function(мир) -{ - var м = мир.ведущийМодуль; - $(`#${мир.макет.константы.заголовок}`).text(м.имя); - $(`#${мир.макет.константы.версия}`).text(м.версия); -}; - - -// // // // - - -ОчиститьМакетОтЗаглушек = function(мир) -{ - $(`#${мир.макет.константы.заголовок}`).text(""); - $(`#${мир.макет.константы.версия}`).text(""); - $(`#${мир.макет.константы.действия}`).text(""); - $(`#${мир.макет.константы.меню}`).text(""); -}; - - -// // // // - - -УстановитьМакет = function(мир) -{ - document.body.innerHTML = мир.макет.структура; - - var вид = document.createElement("style"); - document.head.appendChild(вид); - вид.innerHTML = мир.макет.вид; -}; - - -// // // // - - -НастроитьМакет = function(мир) -{ - // Вырезаем тело из макета. - var html = мир.макет.структура; - var начало = html.indexOf(""); - var конец = html.indexOf(""); - html = html.substring(начало, конец); - - var название = "редактор"; - мир.макет.константы = { - "заголовок": `${название}-макет-шапка-заголовок`, - "версия": `${название}-макет-шапка-версия`, - "действия": `${название}-макет-шапка-действия`, - "меню": `${название}-макет-меню`, - "файл": `${название}-макет-меню-файл`, - "содержимое": "редактор", - "сохранить": `${название}-макет-сохранить`, - }; - // Заменяем константы в макете. - for (var константа in мир.макет.константы) - { - var старое = "${" + константа + "}"; - var новое = мир.макет.константы[константа]; - html = html.replace(старое, новое); - } - - мир.макет.структура = html; -}; - - -// // // // - - -ЗагрузитьМакет = function(мир) -{ - var м = мир.ведущийМодуль; - var json = JSON.parse(м.содержимое["/макет|template.json"]); - мир.макет = { - "структура": м.содержимое["/макет|template.html"], - "вид": м.содержимое["/макет|template.css"], - "элементы": json, - }; -}; - - -// // // // - - -ЗадатьВедущийМодуль = function(мир) -{ - // Редактор является ведущим модулем. - мир.ведущийМодуль = мир.модули.модульПоИмени(ИМЯ); -}; - - -// // // // - - -РазобратьПараметры = function(мир) -{ - мир.указатель = null; - мир.файл = null; - - var параметры = new URLSearchParams(window.location.search); - for (var имя of параметры.keys()) - { - var значение = decodeURI(параметры.get(имя)); - var имя = decodeURI(имя); - if (имя == "📦") - { - мир.указатель = значение; - } - else if (имя == "📁") - { - мир.файл = значение; - } - } -}; - - -// // // // - - -ВывестиРазобранныеПараметры = function(мир) -{ - console.debug(` -Разобранные параметры редактора: - -* 📦: '${мир.указатель}' -* 📁: '${мир.файл}' - `); -}; - - diff --git a/пуск|run.череда b/пуск|run.череда index a72b8af..a8f98d4 100644 --- a/пуск|run.череда +++ b/пуск|run.череда @@ -1,30 +1,2 @@ пуск редактора - разобрать параметры - вывести разобранные параметры - задать ведущий модуль - загрузить макет - настроить макет - установить макет - очистить макет от заглушек - задать заголовок и версию - проверить наличие редактируемого модуля -редактируемый модуль не существует - назначить редактируемым модуль редактора - задать параметр модуля редактором - продолжить загрузку -редактируемый модуль существует - загрузить содержимое редактируемого модуля -не загрузили содержимое - уведомить об ошибке загрузки содержимого редактируемого модуля -загрузили содержимое - настроить Ace - настроить отслеживание редактирования - задать кнопку сохранения - задать временное содержимое - задать список файлов - отслеживать выбор файла - проверить наличие указанного файла -указанный файл не существует - выбрать первый файл -указанный файл существует - выбрать указанный файл + вывести приветствие от главреда \ No newline at end of file diff --git a/редактирование|editing.js b/редактирование|editing.js index 601b7c2..e69de29 100644 --- a/редактирование|editing.js +++ b/редактирование|editing.js @@ -1,28 +0,0 @@ - - -СохранитьВременноеСодержимоеРедактируемогоФайла = function(мир) -{ - var файл = мир.файлы[мир.номерВыбранногоФайла]; - var содержимое = мир.редактор.session.getValue(); - мир.временноеСодержимое[файл] = содержимое; -}; - - -// // // // - - -ПометитьВыбранныйФайлКакИзменённый = function(мир) -{ - $(`#${мир.макет.константы.файл}-${мир.номерВыбранногоФайла}-изменение`).removeAttr("hidden"); -}; - - -// // // // - - -ВывестиРедактирование = function(мир) -{ - console.debug("Редактирование"); -}; - - diff --git a/редактирование|editing.череда b/редактирование|editing.череда index a188b43..e69de29 100644 --- a/редактирование|editing.череда +++ b/редактирование|editing.череда @@ -1,4 +0,0 @@ -редактирование -# вывести редактирование - пометить выбранный файл как изменённый - сохранить временное содержимое редактируемого файла diff --git a/сохранение|saving.js b/сохранение|saving.js index 7ad542a..10ba2c3 100644 --- a/сохранение|saving.js +++ b/сохранение|saving.js @@ -1,4 +1,472 @@ +/* + * ВЫБОР ФАЙЛА + */ + +/* +ЗадатьУказанныйФайл = function(мир) +{ + мир.файл = мир.файлы[мир.номерВыбранногоФайла]; +}; + + +// // // // + + +НеОтслеживатьРедактирование = function(мир) +{ + мир.отслеживатьРедактирование = false; +}; + + +// // // // + + +ОтслеживатьРедактирование = function(мир) +{ + мир.отслеживатьРедактирование = true; +}; + + +// // // // + + +ЗадатьПараметрФайла = function(мир) +{ + var файл = мир.файлы[мир.номерВыбранногоФайла]; + задатьПараметрВСтрокеПоиска("📁", файл); +}; + + +// // // // + + +ОтобразитьСодержимоеВыбранногоФайла = function(мир) +{ + var файл = мир.файлы[мир.номерВыбранногоФайла]; + var содержимое = мир.временноеСодержимое[файл]; + if (!содержимое) + { + содержимое = мир.редактируемыйМодуль.содержимое[файл]; + }; + мир.редактор.session.setValue(содержимое); +}; + + +// // // // + + +ОтобразитьВыборФайла = function(мир) +{ + var id = мир.макет.константы.файл; + // Очищаем выбор. + for (var номер in мир.файлы) + { + $(`#${id}-${номер}-элемент`).removeClass("uk-active"); + } + // Отображаем выбор. + $(`#${id}-${мир.номерВыбранногоФайла}-элемент`).addClass("uk-active"); +}; + +*/ + +/* + * ПУСК + */ + +/* + +const ИМЯ = "Главред | Glavred"; + + +// // // // + + +ЗадатьВременноеСодержимое = function(мир) +{ + мир.временноеСодержимое = {}; +}; + + +// // // // + + +ЗадатьКнопкуСохранения = function(мир) +{ + var кнопка = мир.макет.элементы.действие + .replace("${название}", "💾") + .replace(/\$\{id\}/g, `${мир.макет.константы.сохранить}`) + ; + $(`#${мир.макет.константы.действия}`).append(кнопка); + $(`#${мир.макет.константы.сохранить}-ссылка`).click(function() { + мир.уведомить("выбрали сохранить"); + }); +}; + + +// // // // + + +НастроитьОтслеживаниеРедактирования = function(мир) +{ + мир.отслеживатьРедактирование = true; + + мир.редактор.session.on("change", function(delta) { + if (мир.отслеживатьРедактирование) + { + мир.уведомить("редактирование"); + } + }); +}; + + +// // // // + + +ВыбратьУказанныйФайл = function(мир) +{ + мир.номерВыбранногоФайла = мир.файлы.indexOf(мир.файл); + мир.уведомить("выбрали файл"); +} + + +// // // // + + +ВыбратьПервыйФайл = function(мир) +{ + мир.номерВыбранногоФайла = 0; + мир.уведомить("выбрали файл"); +} + + +// // // // + + +ПроверитьНаличиеУказанногоФайла = function(мир) +{ + if ( + мир.файл && + мир.файлы.includes(мир.файл) + ) { + мир.уведомить("указанный файл существует"); + } + else + { + мир.уведомить("указанный файл не существует"); + } +}; + + +// // // // + + +НастроитьAce = function(мир) +{ + мир.редактор = window.ace.edit("редактор"); + мир.редактор.session.setMode("ace/mode/javascript"); +}; + + +// // // // + + +ОтслеживатьВыборФайла = function(мир) +{ + var id = мир.макет.константы.файл; + for (var номер in мир.файлы) + { + const номерФайла = номер; + $(`#${id}-${номер}-ссылка`).click(function() { + мир.номерВыбранногоФайла = номерФайла; + мир.уведомить("выбрали файл"); + }); + } +}; + + +// // // // + + +ЗадатьСписокФайлов = function(мир) +{ + var м = мир.редактируемыйМодуль; + мир.файлы = Object.keys(м.структура).sort(); + + var содержимое = ""; + + var заголовок = мир.макет.элементы.заголовокМеню.replace("${название}", "📦 " + м.имя); + содержимое += заголовок; + var id = мир.макет.константы.файл; + for (var номер in мир.файлы) + { + var файл = мир.файлы[номер]; + содержимое += мир.макет.элементы.пунктМеню + .replace("${название}", файл) + .replace(/\$\{id\}/g, `${id}-${номер}`) + ; + } + + $(`#${мир.макет.константы.меню}`).html(содержимое); +}; + + +// // // // + + +УведомитьОбОшибкеЗагрузкиСодержимогоРедактируемогоМодуля = function(мир) +{ + var сообщение = "ОШИБКА Не удалось загрузить редактируемый модуль из хранилища бразуера | ERROR The module to be edited couldn't be loaded from the browser's storage"; + console.error(сообщение); + console.error(мир.указатель); + $(`#${мир.макет.константы.содержимое}`).html(` +
+

${сообщение}

+

${мир.указатель}

+
+ `); +}; + + +// // // // + + +ЗагрузитьСодержимоеРедактируемогоМодуля = function(мир) +{ + // Пропускаем загрузку, если содержимое уже присутствует. + if (мир.редактируемыйМодуль.содержимое) + { + мир.уведомить("загрузили содержимое"); + return; + } + + // Загружаем содержимое. + мир.модули.загрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { + мир.уведомить("загрузили содержимое"); + }); + мир.модули.неЗагрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { + мир.уведомить("не загрузили содержимое"); + }); + мир.модули.загрузитьСодержимоеСохранённогоМодуля(мир.указатель); +}; + + +// // // // + + +ПродолжитьЗагрузку = мир => +{ + мир.уведомить("загрузили содержимое"); +}; + + +// // // // + + +ЗадатьПараметрМодуляРедактором = function(мир) +{ + задатьПараметрВСтрокеПоиска("📦", мир.редактируемыйМодуль.указатель); +}; + + +// // // // + + +НазначитьРедактируемымМодульРедактора = function(мир) +{ + мир.редактируемыйМодуль = мир.модули.модульПоИмени(ИМЯ); +}; + + +// // // // + + +ПроверитьНаличиеРедактируемогоМодуля = function(мир) +{ + мир.редактируемыйМодуль = мир.модули.модульПоУказателю(мир.указатель); + if (мир.редактируемыйМодуль) + { + мир.уведомить("редактируемый модуль существует"); + } + else + { + мир.уведомить("редактируемый модуль не существует"); + } +}; + + +// // // // + + +ЗадатьЗаголовокИВерсию = function(мир) +{ + var м = мир.ведущийМодуль; + $(`#${мир.макет.константы.заголовок}`).text(м.имя); + $(`#${мир.макет.константы.версия}`).text(м.версия); +}; + + +// // // // + + +ОчиститьМакетОтЗаглушек = function(мир) +{ + $(`#${мир.макет.константы.заголовок}`).text(""); + $(`#${мир.макет.константы.версия}`).text(""); + $(`#${мир.макет.константы.действия}`).text(""); + $(`#${мир.макет.константы.меню}`).text(""); +}; + + +// // // // + + +УстановитьМакет = function(мир) +{ + document.body.innerHTML = мир.макет.структура; + + var вид = document.createElement("style"); + document.head.appendChild(вид); + вид.innerHTML = мир.макет.вид; +}; + + +// // // // + + +НастроитьМакет = function(мир) +{ + // Вырезаем тело из макета. + var html = мир.макет.структура; + var начало = html.indexOf(""); + var конец = html.indexOf(""); + html = html.substring(начало, конец); + + var название = "редактор"; + мир.макет.константы = { + "заголовок": `${название}-макет-шапка-заголовок`, + "версия": `${название}-макет-шапка-версия`, + "действия": `${название}-макет-шапка-действия`, + "меню": `${название}-макет-меню`, + "файл": `${название}-макет-меню-файл`, + "содержимое": "редактор", + "сохранить": `${название}-макет-сохранить`, + }; + // Заменяем константы в макете. + for (var константа in мир.макет.константы) + { + var старое = "${" + константа + "}"; + var новое = мир.макет.константы[константа]; + html = html.replace(старое, новое); + } + + мир.макет.структура = html; +}; + + +// // // // + + +ЗагрузитьМакет = function(мир) +{ + var м = мир.ведущийМодуль; + var json = JSON.parse(м.содержимое["/макет|template.json"]); + мир.макет = { + "структура": м.содержимое["/макет|template.html"], + "вид": м.содержимое["/макет|template.css"], + "элементы": json, + }; +}; + + +// // // // + + +ЗадатьВедущийМодуль = function(мир) +{ + // Редактор является ведущим модулем. + мир.ведущийМодуль = мир.модули.модульПоИмени(ИМЯ); +}; + + +// // // // + + +РазобратьПараметры = function(мир) +{ + мир.указатель = null; + мир.файл = null; + + var параметры = new URLSearchParams(window.location.search); + for (var имя of параметры.keys()) + { + var значение = decodeURI(параметры.get(имя)); + var имя = decodeURI(имя); + if (имя == "📦") + { + мир.указатель = значение; + } + else if (имя == "📁") + { + мир.файл = значение; + } + } +}; + + +// // // // + + +ВывестиРазобранныеПараметры = function(мир) +{ + console.debug(` +Разобранные параметры редактора: + +* 📦: '${мир.указатель}' +* 📁: '${мир.файл}' + `); +}; + +*/ + +/* + * РЕДАКТИРОВАНИЕ + */ + +/* + +СохранитьВременноеСодержимоеРедактируемогоФайла = function(мир) +{ + var файл = мир.файлы[мир.номерВыбранногоФайла]; + var содержимое = мир.редактор.session.getValue(); + мир.временноеСодержимое[файл] = содержимое; +}; + + +// // // // + + +ПометитьВыбранныйФайлКакИзменённый = function(мир) +{ + $(`#${мир.макет.константы.файл}-${мир.номерВыбранногоФайла}-изменение`).removeAttr("hidden"); +}; + + +// // // // + + +ВывестиРедактирование = function(мир) +{ + console.debug("Редактирование"); +}; + +*/ + +/* + * СОХРАНЕНИЕ + */ + +/* УведомитьОНеудачномСохраненииИзменений = function(мир) { @@ -39,4 +507,4 @@ мир.модули.сохранить(мир.редактируемыйМодуль.указатель); }; - +*/ diff --git a/сохранение|saving.череда b/сохранение|saving.череда index 87429c9..81a874b 100644 --- a/сохранение|saving.череда +++ b/сохранение|saving.череда @@ -1,9 +1,67 @@ -выбрали сохранить - сохранить изменения -не сохранили изменения - уведомить о неудачном сохранении изменений -сохранили изменения - уведомить об успешном сохранении изменений - задать список файлов - отслеживать выбор файла - выбрать указанный файл +# ВЫБОР ФАЙЛА + +#выбрали файл +# задать указанный файл +# не отслеживать редактирование +# отобразить выбор файла +# отобразить содержимое выбранного файла +# задать параметр файла +# отслеживать редактирование + + + +# ПУСК + +#пуск редактора +# разобрать параметры +# вывести разобранные параметры +# задать ведущий модуль +# загрузить макет +# настроить макет +# установить макет +# очистить макет от заглушек +# задать заголовок и версию +# проверить наличие редактируемого модуля +#редактируемый модуль не существует +# назначить редактируемым модуль редактора +# задать параметр модуля редактором +# продолжить загрузку +#редактируемый модуль существует +# загрузить содержимое редактируемого модуля +#не загрузили содержимое +# уведомить об ошибке загрузки содержимого редактируемого модуля +#загрузили содержимое +# настроить Ace +# настроить отслеживание редактирования +# задать кнопку сохранения +# задать временное содержимое +# задать список файлов +# отслеживать выбор файла +# проверить наличие указанного файла +#указанный файл не существует +# выбрать первый файл +#указанный файл существует +# выбрать указанный файл + + + +# РЕДАКТИРОВАНИЕ + +#редактирование +## вывести редактирование +# пометить выбранный файл как изменённый +# сохранить временное содержимое редактируемого файла + + + +# СОХРАНЕНИЕ + +#выбрали сохранить +# сохранить изменения +#не сохранили изменения +# уведомить о неудачном сохранении изменений +#сохранили изменения +# уведомить об успешном сохранении изменений +# задать список файлов +# отслеживать выбор файла +# выбрать указанный файл