babaduk пишет:

Автор ты жив?

Жив, просто на основной работе охренеть как занят. Что хотел?

Нам бы тут на основе дерева знания объединять научиться.

Инсталлятор планируется, но в очень, очень дальней перспективе. Связано это с тем, что программа кроссплатформенная, и для разных систем инсталляторы должны быть разными.

Я планирую делать отдельный сайт для 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, но когда руки дойдут до реализации - не знаю.


> Раз уж ветки и метки в чем-то родственные, есть ли смысл организовывать метки в иерархию. Поможет ли это поиску нужной информации?

Не знаю, по мне так это было бы неудобно. Метки-это "горизонтальные" связи, и потому они равнозначны.

chadwick пишет:

Заметил, что по дереву можно перемещаться клавишами Up, Down, PgUp, PgDn, сворачивать/разворачивать ветки клавишами <Left> и <Right> соответственно, перейти в область записей выбранной ветки можно нажав <Tab>. Если это возможно, сделайте так чтобы повторным нажатием <Tab> можно было перейти из области записей в редактор, а обратно например по <Shift-Tab>. То есть <Tab> перемещает по часовой стрелке, <Shift-Tab> - против. В некоторых qt-приложениях я встречал такой вариант навигации.

С табами есть проблема: как только курсор попадает в виджет, который по-своему трактует реакцию на TAB, то клавиатурой выйти из него невозможно. Например, это виджет таблицы, который используется в списке записей и в списке найденных записей. Это стандартное поведение, хотя его и можно изменить.

В любом случае, все хотелки по настройке горячих клавиш и навигации клавиатурой будут реализовываться только после того, как появится подсистема настроек клавиатуры, а с ней не все однозначно, потому что есть вся программа, а есть редактор в программе. И Их надо доуг с другом как-то состыковывать.

Soxsten пишет:

К функционалу программы есть пожелания, а именно:

Часть этих хотелок планируется добавлять в следующую десктопную версию.

pipitos пишет:

Возможно не плохо будет сделать что-то подобное в дистрибутиве.

Поместил в задачи на GitHub.

https://github.com/xintrea/mytetra_dev/issues/58

GoodMorning пишет:

Сегодня нашёл небольшой баг

Записал себе.


GoodMorning пишет:

И последний, только на этот раз уже более неприятный.
У меня программа и база лежат на флешке, чтобы можно было пользоваться базой как дома, так и на работе (на которой с интернетом как-то не очень хорошо). Не знаю, имеет ли это смысл, но в один момент нужно было вытащить флешку на пару минут.

Эээ, ну это довольно странно - требовать от программы чтобы она запустилась с диска, неважно какого, потом вытащить его, поработать с другим, потом снова всунуть прежний... Может быть лучше купить маленький настольный USB-хаб? Он копейки стоит.

dzuvogdao пишет:
xintrea пишет:

Если нужно сделать вложенный - просто меняете отступы.

Тогда и нумерация переносится с отступом. Если же поменять вложенный список с нумерованного на буллеты, а при отступе обратно опять сделать нумерацию, то она начнется с единицы, а не с последнего номера.

Проверил, если в html делать вложенные <ol>, <ul> то тогда в самом редакторе вложенность работает как надо.
Еще желательно больше видов списков, чем буллеты и нумерованный. Опять же в html это можно проставить, и тогда в самом редакторе оно работает.

Может просто по нажатию таба обрамлять текщий пункт <ol> или <ul> и тогда оно будет работать?

Я пытался это реализовать, но была какая-то проблема. Вроде вложенность не добавлялась, а просто шло форматирование в нужный список. Там во внутрях вовсе не HTML, а структура документа. С HTML тоже можно работать, но очень криво.

dzuvogdao пишет:

5. Сделать возможность скрывать табы с деревом и записями, то есть чтобы показывался один редактор. Типа как в любой IDE.

Кнопка "Распахнуть область редактирования" - это не то?

dzuvogdao пишет:

Заметил что цвет текста не поменять из UI, только через html:
6. Добавить компонент для выбора цвета текста

Такая возможность есть, но она скрыта и недоделана немного.
http://webhamster.ru/site/page/index/ar … ctcode/143
Раздел "Скрытые возможности"

hugarin пишет:

Подробности такие. Время синхронизировано на Линуск и Виндовс машине. Различия увидел такие.

Рассмотрим только Виндовс машину. Когда база лежит в папке программы, то при редактировании у файла дерева меняются атрибуты изменен и открыт, но не меняется атрибут создан. Когда мы кладем базу на сетевой диск, то при редактировании меняются все три атрибута одним временем. И программа каждые 10 секунд выдает сообщение о изменении данных сторонней программой. Причем больше никаких копий Тетры не запускали.

Не понятно, что за атрибуты " у файла дерева меняются атрибуты изменен и открыт"? Запустите Peower Shell, и в каталоге с mytetra.xml выполните команду:

dir . -Filter mytetra.xml | Format-Table Fullname,CreationTime,LastAccessTime,LastWriteTime

отредактируйте файл, и дайте команду снова. Вывод сюда покажите. Сделать это нужно для файла на локальном диске, и для файла на шаре.

GoodMorning пишет:

К странице можно подключить внешние стили, но потом оказывается, что из них подхватывается лишь цвет текста, его фон и атрибуты текста вроде шрифта, его размера и жирности (думал написать себе оформление фрагментов кода, одного лишь моноширинного шрифта немного недостаточно, но, в принципе, не критично).

В Qt с CSS в просто беда. Я в самом начале планировал делать WISYWING редактор на основе стилей, чтоб не шрифт и размер выбирать, а иметь набор стилей, и выбирать для текста нужный стиль. И иметь один *.css файл на все записи. Он по-моему даже все еще лежит в моей базе знаний в каталоге base. Я попробовал прикрутить этот файл к тексту записи, но оказалось, что базовый компонент QTextEdit не понимает даже простые атрибуты стилей. И мне пришлось на это дело забить, и сделать просто выбор шрифта, размера и отступов, хотя я очень не хотел этого делать. Ну вот как-то так.

avcarch пишет:

Компонент, который отображает HTML заметку, так сильно ограничен, что не может без переделки под себя показать HTML страницу?

Именно так. Причем делает он это дело самостоятельно и нет никакой возможности повлиять на то, чтобы он оставлял нужный HTML-код. Таков компонент QTextEdit, так он работает, а методы, переопределяющие его работу закрытые. Это нужно все переделывать на уровне самого Qt. Или писать полностью свой редактор с нуля.

GoodMorning пишет:

Если уж говорить по делу, то сегодня при сортировке записей (точнее при их перетаскивании между разделами) я обнаружил, что у меня все записи в категориях оказались совсем не те. Позже я понял, что это не я такой невнимательный, а просто drag'n'drop работает странно (по крайней мере под виндой). Если взять запись и начать перемещать её не строго в сторону, а вверх/вниз/по диагонали, то есть шанс что фокус переключится на другую запись и, соответственно, в другую категорию переместится совсем не то (гифка).

Да, есть такой баг, тоже сейчас его заметил. Это, видимо, регрессия в QTableView, раньше такого небыло, а в моем коде такого поведения не прописывалось никогда, все системное.

Дома проверю на линухе, таких проблем не замечал но надо проверить еще раз.

Записываю в баги, надо на проффорумах поспрашивать.