Я планирую делать отдельный сайт для MyTetra, так что ссылки появятся когда тематический сайт заработает.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум сайта Webhamster.ru → Сообщения от xintrea
Я планирую делать отдельный сайт для MyTetra, так что ссылки появятся когда тематический сайт заработает.
Корзина в том виде, в котором она есть сейчас - это задел на будущее. Восстановить из нее запись можно вручную, при всяких форсмажорах. В корзину скидываются файлы базы MyTetra перед их перезаписью. То есть, когда файл должен измениться, вначале его копия помещается в корзину, а потом он меняется. И еще в корзину попадают файлы удаленных записей. И при изменении дерева в корзину попадает копия файла делева mytetra.xml. Можете поэкспериментировать: поудалять, поизменять записи, и вы увидите как появляются новые файлы в корзине и удаляются старые.
Имена файлов в корзине генерируются автоматически: "TempUID_имяфайла.расширение". TempUID - это уникальный идентификатор, содержащий в начале себя время UNIX timestamp и случайную строку для избегания коллизий с вероятностью 10^-15 в секунду появления файла. Например, при удалении записи с одной картинкой, в корзине появятся файлы:
14950891894te1zbcsth_mytetra.xml - файл дерева перед удалением записи
1495089189i5ua2dsfjh_text.html - файл текста записи
1495089189cfl7z52n7l_image5288.png - картинка, используемая в записиЕсли удаляемые/изменяемые данные не были зашифрованы, то вручную восстановить запись просто. Во-первых, вы их можете посмотреть чтобы понять, та ли эта запись которая нужна. Во-вторых, вы можете создать пустую запись, найти каталог этой записи (сделать видимым столбец "Имя директории" или нажать в контекстном меню "Скопировать ссылку на запись", в ссылке увидеть идентификатор и по нему найти имя директории в файле mytetra.xml). И вот в этой директории нужно подменить файлы записи (html и png), предварительно переименовав их путем удаления префикса "TempUID_". Название и прочие атрибуты удаленной записи можно найти в файле 14950891894te1zbcsth_mytetra.xml, и потом прописать их в интерфейсе MyTetra или напрямую отредактировать файл mytetra.xml.
Внимание! В момент ручной работы с базой MyTetra должна быть выключена. Или, как минимум, в момент подмены файлов записи, курсор должен стоять на другой записи (если вы только подменяете запись) плюс должна быть включена настройка "Периодическая проверка дерева записей..." если вручную меняете mytetra.xml и у вас при этом MyTetra работает.
Если удалялась зашифрованная запись, то дайствия те же самые, только посмотреть содержание файлов вы не сможете пока не поместите их в MyTetra. Понять какие файлы относятся к удаленной зашифрованной записи можно коственным путем - по времени удаления записи (соответственно по времени создания файла в корзине), по размеру файла ..._text.html (размер зашифрованного файла отличается от нешифрованного только дополнительным размером заголовка в 32 байта плюс несколько байт в хвосте для выравнивания на размер блока). При засовывании зашифрованных файлов вручную обратно в базу надо учесть, что они нормально восстановятся только в случае, если пароль не менялся.
Возможно я когда-нибудь сделаю MyTetra Crypt Tool, чтобы можно было расшифровывать файлы, зная пароль.
Ну а вообще предполагается, что когда-нибудь появится интерфейс для восстановления записей из корзины. Но как-то он оказался особенно не нужен, потому что многие настраивают резервное копирование/синхронизацию данных через системы контроля версий, и в случае проблем могут откатиться с помощью них.
> Можно ли сделать поиск не только по меткам, названиям и текстам заметок, но и по названиям веток и подветок?
Да, в следующих версиях это будет.
> Есть ли возможность увидеть весь список уже имеющихся меток?
Это называется облако меток. Скорее врего будет, но не в приоритете.
> Есть ли возможность при назначении меток, предоставлять выбор из уже имеющегося списка? Просто, чтобы они не разрастались из-за различий в написании.
Эта задача заведена на guthub, но когда руки дойдут до реализации - не знаю.
> Раз уж ветки и метки в чем-то родственные, есть ли смысл организовывать метки в иерархию. Поможет ли это поиску нужной информации?
Не знаю, по мне так это было бы неудобно. Метки-это "горизонтальные" связи, и потому они равнозначны.
Заметил, что по дереву можно перемещаться клавишами Up, Down, PgUp, PgDn, сворачивать/разворачивать ветки клавишами <Left> и <Right> соответственно, перейти в область записей выбранной ветки можно нажав <Tab>. Если это возможно, сделайте так чтобы повторным нажатием <Tab> можно было перейти из области записей в редактор, а обратно например по <Shift-Tab>. То есть <Tab> перемещает по часовой стрелке, <Shift-Tab> - против. В некоторых qt-приложениях я встречал такой вариант навигации.
С табами есть проблема: как только курсор попадает в виджет, который по-своему трактует реакцию на TAB, то клавиатурой выйти из него невозможно. Например, это виджет таблицы, который используется в списке записей и в списке найденных записей. Это стандартное поведение, хотя его и можно изменить.
В любом случае, все хотелки по настройке горячих клавиш и навигации клавиатурой будут реализовываться только после того, как появится подсистема настроек клавиатуры, а с ней не все однозначно, потому что есть вся программа, а есть редактор в программе. И Их надо доуг с другом как-то состыковывать.
К функционалу программы есть пожелания, а именно:
Часть этих хотелок планируется добавлять в следующую десктопную версию.
Возможно не плохо будет сделать что-то подобное в дистрибутиве.
Поместил в задачи на GitHub.
Сегодня нашёл небольшой баг
Записал себе.
И последний, только на этот раз уже более неприятный.
У меня программа и база лежат на флешке, чтобы можно было пользоваться базой как дома, так и на работе (на которой с интернетом как-то не очень хорошо). Не знаю, имеет ли это смысл, но в один момент нужно было вытащить флешку на пару минут.
Эээ, ну это довольно странно - требовать от программы чтобы она запустилась с диска, неважно какого, потом вытащить его, поработать с другим, потом снова всунуть прежний... Может быть лучше купить маленький настольный USB-хаб? Он копейки стоит.
xintrea пишет:Если нужно сделать вложенный - просто меняете отступы.
Тогда и нумерация переносится с отступом. Если же поменять вложенный список с нумерованного на буллеты, а при отступе обратно опять сделать нумерацию, то она начнется с единицы, а не с последнего номера.
Проверил, если в html делать вложенные <ol>, <ul> то тогда в самом редакторе вложенность работает как надо.
Еще желательно больше видов списков, чем буллеты и нумерованный. Опять же в html это можно проставить, и тогда в самом редакторе оно работает.Может просто по нажатию таба обрамлять текщий пункт <ol> или <ul> и тогда оно будет работать?
Я пытался это реализовать, но была какая-то проблема. Вроде вложенность не добавлялась, а просто шло форматирование в нужный список. Там во внутрях вовсе не HTML, а структура документа. С HTML тоже можно работать, но очень криво.
5. Сделать возможность скрывать табы с деревом и записями, то есть чтобы показывался один редактор. Типа как в любой IDE.
Кнопка "Распахнуть область редактирования" - это не то?
Заметил что цвет текста не поменять из UI, только через html:
6. Добавить компонент для выбора цвета текста
Такая возможность есть, но она скрыта и недоделана немного.
http://webhamster.ru/site/page/index/ar … ctcode/143
Раздел "Скрытые возможности"
Подробности такие. Время синхронизировано на Линуск и Виндовс машине. Различия увидел такие.
Рассмотрим только Виндовс машину. Когда база лежит в папке программы, то при редактировании у файла дерева меняются атрибуты изменен и открыт, но не меняется атрибут создан. Когда мы кладем базу на сетевой диск, то при редактировании меняются все три атрибута одним временем. И программа каждые 10 секунд выдает сообщение о изменении данных сторонней программой. Причем больше никаких копий Тетры не запускали.
Не понятно, что за атрибуты " у файла дерева меняются атрибуты изменен и открыт"? Запустите Peower Shell, и в каталоге с mytetra.xml выполните команду:
dir . -Filter mytetra.xml | Format-Table Fullname,CreationTime,LastAccessTime,LastWriteTimeотредактируйте файл, и дайте команду снова. Вывод сюда покажите. Сделать это нужно для файла на локальном диске, и для файла на шаре.
К странице можно подключить внешние стили, но потом оказывается, что из них подхватывается лишь цвет текста, его фон и атрибуты текста вроде шрифта, его размера и жирности (думал написать себе оформление фрагментов кода, одного лишь моноширинного шрифта немного недостаточно, но, в принципе, не критично).
В Qt с CSS в просто беда. Я в самом начале планировал делать WISYWING редактор на основе стилей, чтоб не шрифт и размер выбирать, а иметь набор стилей, и выбирать для текста нужный стиль. И иметь один *.css файл на все записи. Он по-моему даже все еще лежит в моей базе знаний в каталоге base. Я попробовал прикрутить этот файл к тексту записи, но оказалось, что базовый компонент QTextEdit не понимает даже простые атрибуты стилей. И мне пришлось на это дело забить, и сделать просто выбор шрифта, размера и отступов, хотя я очень не хотел этого делать. Ну вот как-то так.
Компонент, который отображает HTML заметку, так сильно ограничен, что не может без переделки под себя показать HTML страницу?
Именно так. Причем делает он это дело самостоятельно и нет никакой возможности повлиять на то, чтобы он оставлял нужный HTML-код. Таков компонент QTextEdit, так он работает, а методы, переопределяющие его работу закрытые. Это нужно все переделывать на уровне самого Qt. Или писать полностью свой редактор с нуля.
Если уж говорить по делу, то сегодня при сортировке записей (точнее при их перетаскивании между разделами) я обнаружил, что у меня все записи в категориях оказались совсем не те. Позже я понял, что это не я такой невнимательный, а просто drag'n'drop работает странно (по крайней мере под виндой). Если взять запись и начать перемещать её не строго в сторону, а вверх/вниз/по диагонали, то есть шанс что фокус переключится на другую запись и, соответственно, в другую категорию переместится совсем не то (гифка).
Да, есть такой баг, тоже сейчас его заметил. Это, видимо, регрессия в QTableView, раньше такого небыло, а в моем коде такого поведения не прописывалось никогда, все системное.
Дома проверю на линухе, таких проблем не замечал но надо проверить еще раз.
Записываю в баги, надо на проффорумах поспрашивать.
1. Вложенные списки. Почему-то этого нет у многих простых редакторов. В MyTetra этого хотя бы можно добиться поправив html код, но хотелось бы работы из редактора. То есть, например, вводя список по пунктам 1,2,3, дальше сдвигаясь внутрь и вводя пару пунктов звездочек, дальше сдвигаясь обратно, надо сразу иметь пункт 4. И как отметили выше, удобнее чтобы пункт 1 списка появлялся сразу после нажатия кнопки, а не после выделения текста.
Работа со списками - это работа со структурой текста, поэтому таких вещей и нет в простых редакторах, только в Word/Libre и т. д. Потому что это и нумерация, и разный вид маркеров на разных уровнях, и прочие прелести.
В MyTetra сделано все по-простому: выделяете абзац, выбираете тип списка. Если нужно сделать вложенный - просто меняете отступы.
2. Кастомная настройка байдингов клавиш ко всем действиям редактора. В одной из программ, что я рассматривал, была такая фича. То есть для тех же списков сделать возможность настроить свое сочетание клавиш. Или для начала, хотя бы захардкодить эти сочетания для всех функций, для списков или таблиц вроде как сейчас сочетания нет вообще. При быстром наборе текста не очень удобно кликать мышкой чтобы вызвать нужную функцию, байдинги удобнее.
Подсистема настройки шорткатов в планах.
3. Проверил фунцию автообновления дерева, само дерево обновляется, но если в стороннем приложении поменять текст заметки, выделенной в редакторе MyTetra, то эти изменения MyTetra не обновляет, пока не переключишся на другую заметку и обратно. Планирую пользоваться яндекс диском для синхронизации заметок между рабочим и домашним компьютером и если забыть, что надо руками переключиться из текущей заметки на другую, чтобы данные обновились, и начать редактировать без этого, то измененные данные просто потеряются.
Тогда подумайто о такой ситуации. Вы начали редактировать заметку. Написали пару абзацев. Тут при синхронизации пришли изменения для этой же заметки. Если обновить текст, то вы потеряете то, что вы только что редактировали.
Это общая проблема синхронизации. Если что-то менятся в двух местах, то всегда что-то будет потеряно, либо первое, либо второе. В лучшем случае человек сам может решить что терять и что оставить. В MyTetra для записей применяется принцип "последние изменения самого пользователя самые правильные".
Я специально проверял - эта же проблема есть и у Evernote. Если одновременно начать редактировать заметку через установленную программу и через Web-клиент, то тоже теряются изменения, причем молча и без предупреждений. Я думаю, что если такая контора как Evernote до сих пор не смогла решить эту проблему, то мне тут ловить тоже нечего.
4. Можно ли менять масштаб документа, как в веб браузере по ctrl+колесико мышки? Иногда глаза устают и хочется видеть весь текст крупнее, просто поменяв масштаб.
Я тоже об этом подумываю. Если в новых версия Qt появится возможность масштабиования для QTextEdit, я ее прикручу, она очень востребована.
Должна быть возможность создать пустую заметку и дальше продолжить её заполнение, так как меню редактирования записи больше и удобней, чем меню создания заметки. Нет смысла в ограничении, что нельзя создать заметку (note в интерфейсе) без текста.
Вы можете поставить галку "Разрешить создавать пустые записи" в настройках "Разное".
Не хватает всплывающих описаний иконок в менюшках. Нет возможности только по картинке понять что делает кнопка с паутинкой или кнопка с ёлкой, а особо желания нажимать на кнопки без понимания, что они делают тоже нет - вдруг она стирает целиком всю запись или ещё что-нибудь в таком духе делает. Открывать документацию ради этих кнопок можно, но не хочется. Дружелюбные интерфейсы прикрепляют к кнопкам всплывающие подсказки (hint) с подробным описанием зачем эта кнопка тут находится и что делает.
Описание что делает каждая кнопка находятся внизу в строке статуса. Дело в том, что у меня описания длинные, и TipTrick -надписи некрасивые получаются. В следующих версиях я включу настройку, чтобы можно было настраивать видимость TipTrick надписей. Видимость регулируется, по сути, одной командой.
Немного непонятно, почему по умолчанию не отображается никакого шрифта в том месте, где выбирается шрифт. Очевидно, что набираемый текст какому-то шрифту соответствует, раз уж он отображается, но шрифта нет. Более того, если часть текста выделить и шрифт "поменять" на Arial, то мы увидим, что текст не изменится (вероятно шрифт по умолчанию - Arial), но у него теперь и впредь будет отображаться шрифт Arial, а вот у остального текста - так и останется безымянный одиночка.
Все ноги растут от объекта QTextEdit, у которого свой особый, уличный HTML. Встраиваемый редактор, по сути, надо по сути с нуля писать. Но я на такой подвиг пойти не могу, потому что тогда не будет MyTetra.
Во первых, если я всё понял верно, единственное, что можно сделать с изображением это изменить его размер. Как мне кажется минимальные требования для такого функционала это кадрирование, ручка, подсветка и ластик. Можно взять за основу стандартный (хоть и не для всех поставок) Snipping Tool в винде. Супер удобно для каждодневной работы, когда надо подстветить кому-то деталь того, что происходит на твоём экране. В Snipping Tool кадрирование можно сказать есть из коробки - само снятие картинки идёт с кадрированием, а дальше до минимального набора дополняют подсветка, ручка, ластик. Вот это вот то, что очень важно, когда прилагается та или иная картинка, поясняющая слова в заметке. То есть на практике чтобы это сделать, приходится делать тот же snipping tool или доставать paint, а это долго и ненужно.
Прикручивать инструменты ривания и правки картинок в ближайшее время не планиру. На десктопе это не проблема - по виндой всегда есть Paint, под Linux - Kolourpaint и проч.
Во вторых, это уже к сложности. Совсем не очевидно и весьма неудобно поведение контекстного меню. Когда пользователь нажимает правой кнопкой мыши (стандарт при вызове контекстного окна) на картинке, он ожидает, что "Edit image properties" относится именно к той самой картинке, на которую он нажимал. Но на самом деле при этом станут изменятся свойства.. картинки, которая непосредственно перед курсором ввода (который к клавиатуре относится, а не к мыши). По сути это означает, что чтобы редактировать свойства картинки на неё надо нажать дважды - сначала левой кнопкой (курсор появляется в нужном месте) и теперь правой. При этом, да, нельзя забывать, что контекстное меню также может вызываться и по кнопке с клавиатуры. Думаю было бы логичным, если бы нажатие правой кнопки мыши по изображению приводило к перестановке курсора клавиатуры в нужное место(сразу за картинкой), а только потом к появлению контекстного меню... Тогда на вызов контекстного меню с клавиатуры это бы не повлияло.
Вообще-то для работы с картинкой, по-хорошему надо ее выделить (она становится серенькой от выдаления), чтобы начать с ней работать. И тогда однозначно идет работа с той картинкой, которую выделили. То что редактирование идет и просто по правому клику мышки - это я удаовлетворял желание пользователей, которые утверждали что так будет удобнее. Но я понимал, что это приведет к описанной вами проблеме.
Возможно, имеет смысл не переставлять курсор, а выделять картинку при правом клике. Надо подумать.
Непонятно как делать и можно ли вообще делать вложенные маркированные списки. Обычно в текстовых редакторах нажатие Tab приводит к переводу на следующий уровень вложенности, тут же при этом только появляется табуляция. В меню я увидел специальную кнопку, которая похоже двигает отступ у элемента списка, вот по Tab на элементе списка должно происходить что-то такое же, только немного подальше и должен меняться маркер...
Во многих текстовых редакторах, что в браузерах, что в средах разработки есть встроенная проверка текста на опечатки, что довольно удобно. В MyTetra этого не хватает.
Спелл-чекинг в планах, но в очень далеких. Как и подсветка синтаксиса.
Очень здорово, что при вставке текста из других источников, форматирование берётся оттуда, но обычно при этом есть возможность сделать обычную вставку - игнорируя форматирование (применяя то, которое уже в заметке используется). А тут приходится вручную потом выставлять такое же, как в остальном тексте.
Есть две кнопки - очистка начертания, и привращение в текст. Возможно, появится команда вставки чистого текста, чтобы сначале не вставля, потом выделять, потом очищать.
И на будущее. Я вижу, что в основном все претензии к текстовому редактору. К сожалению, для Qt нет нормально встраиваемого текстового редактора. Поэтому приходится писать редактор самому. Но в Qt-овском классе QTextEdit, на котором написан редактор обнаружилось столько косяков, недоделок и недокументированных особенностей, что я уже трижды пожалел о том, что начал разработку именно на базе этого класса. Редактор отнимает у меня туеву хучу времени, поэтому я решил, что изменения буду вносить только минимальные и по необходимости.
Форум сайта Webhamster.ru → Сообщения от xintrea
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 2 official extensions. Copyright © 2003–2009 PunBB.
Сгенерировано за 0.053 секунды (82% PHP — 18% БД) 5 запросов к базе данных