Начал делать свой outliner
В последнее время здесь в блоге я много писал про разные Outliner’ы и персональные вики. Вроде бы программ такого типа полно, но лично мне в каждой из них чего-то, но не хватало, поэтому решил все-таки делать свой outliner, пусть и не очень навороченный. Года два назад я уже задумывался над этим, но все-таки надеялся найти уже готовую программу, которая меня бы полностью устроила.
В последнее время приступил к написанию своего outliner’а (странно, что для этого термина в русском языке как-то не нашлось даже жаргонного аналога, можно пользоваться выражением «персональная вики», но это не совсем то). Рабочее название проги — OutWiker (от слов outliner и wiki).
В чем же по задумке OutWiker должен отличаться от подобных программ? В принципе, концептуальных отличий пока быть не должно, просто хотелось бы собрать в одной программе некоторые приятные возможности из других программ. Перечислю то, что хотелось бы иметь в программе.
- Каждая страница может быть разного типа (простой текст, HTML, текст в нотации wiki и т.д.).
- Дерево заметок хранится в виде обычных директорий на диске
- Возможность шифрования заметок
- К каждой странице можно прикреплять любое количество файлов, причем для этого достаточно просто скопировать файл в определенную папку
- Список последних измененных страниц (чтобы не искать страницы, с которыми работал в последний раз)
- К каждой заметке можно добавлять теги
- Шаблоны для новых страниц
- И всякие мелочи вроде установки иконок для записей в дереве, возможность редактирования страниц во внешнем редакторе.
- Возможно, что сделаю возможность расширения типов страниц с помощью плагинов, но это не сразу.
Прогу пишу на связке Python + wxPython, чтобы было проще с кроссплатформенностью, прога будет опенсорсная.
В данный момент устаканился формат дерева заметок, я делаю движок для работы с деревом (движок уже умеет создавать страницы, строить дерево заметок и загружать уже готовое дерево), есть грубая заготовка для интерфейса. Как только доделаю в движке обработку событий от страниц, можно будет прицепить интерфейс. Когда будет получаться что-то работоспособное, начну выкладывать прогу или хотя бы скриншоты.
В качестве рендера для страниц хочу использовать движок WebKit в виде компонента wxWebKit.
Пока думаю как быть с шифрованием. Шифроваться будут отдельные страницы, а вот как быть с прикрепленными файлами? Сейчас хочу кидать их в запароленный архив.
И заодно хотелось бы спросить, может вы знаете, где можно скачать бесплатные иконки для кнопок размером 16×16, чтобы меня потом не повесили за нарушение авторских прав? У меня есть коллекция иконок из Eclipse, но, честно говоря, какие-то они страшненькие.
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Mad:
Вот сет «Silk», бесплатный и очень удачный — http://www.famfamfam.com/lab/icons/silk/.
3 апреля 2010, 11:53 дпRenat:
Ждём-с, где можно будет код посмотреть?
3 апреля 2010, 3:03 ппJenyay:
@Mad Спасибо, пожалуй, им и воспользуюсь.
@Renat Я сейчас залил исходники на github, но пока ссылку не даю, хочу более-менее до удобоваримого состояния довести, чтобы были полностью готовы хотя бы простейшие операции с GUI.
3 апреля 2010, 3:16 ппBobrovod:
Давно ищу аутлайнер, с удовольствием читал ваши заметки на эту тему.
5 апреля 2010, 1:08 ппВы уж извините, не удежусь, напишу что я думаю о идеальном для меня оутлайнере. такие хотелки, может и вам интересные
1. редактор текста, мне очень нравится как сделан редактор в notepad++, и подсветка там замечательная, и выделять можно блоками, почти что чудесный доснавигаторовский редактор (а там была возможность рисовать псевдографикой рамки!, но сейчас такое малоактуально)
2. в том же NPP есть удобная штука, когда убирается часть текста отмеченного структурными тегами чкак-бы под кат
а я вижу это, как некие «кармашки», выделил, например, текст, или картинку в заметке, сказал, «скрыть» и оно спряталось в полоску со стрелкой.
3. Интерфейс гибкий, как в foobar2000, и возможность переключения двух видов, один максимальный, когда открыты все панели инструментов и менюшки, а другой — только редактор текста, с минимумом кнопок, чтоб его можно было в углу в четверть экрана пристроить.
4. Возможность открывать сразу несколько проектов, и перенос между ними заметок.
5. Простейшие таблицы, добавление, удаление колонок и строк.
6. Возможность отмечать заметки в календаре, т.е привязывать к дате, как задачи.
7. Еще возможность вести хронологию, когда создана, изменена та или иная заметка. и поиск по этим полям. Тут ещё напрашивается некое повременное представление заметок, таймлайн.
8. Возможность привязки одной заметки к нескольким узлам дерева, или создание линка, виртуальной заметки.
9. Категории заметок, фавориты и тэги.
Вот, пока всё, что вспомнил)
Jenyay:
@Bobrovod Постараюсь учесть Ваши пожелания. Идея с таймлайном мне особенно понравилась.
По поводу 8 и 9: тоже хочу сделать что-то подобное (виртуальные узлы, фавориты и теги).
5 апреля 2010, 5:31 ппRed Fox:
А механизм подключения плагинов планируете встроить? Или расширять функции можно будет только в исходном коде? По-моему возможность подключения плагинов была бы нелишней, все-таки разбираться в большом объеме кода сложнее, чем написать относительно автономную часть. Имея возможность подключать плагины любой сможет создать приложение с разной степенью навороченности.
5 апреля 2010, 6:24 ппЯ тоже перебираю много разных аутлайнеров, идеала пока не нашел, но свой писать не могу, я, к сожалению, не программист. Хотя уже были мысли научиться программировать, потому что перебрав множество аутлайнеров, не нашел подходящего, действительно, прямо хоть сам пиши.
На Python есть проект — KeepNote — http://rasm.ods.org/keepnote/ — пока не особенно много чего умеет, но вроде бы не заброшен. Может с его автором объединить усилия? Или использовать что-то из него?
Jenyay:
@Red Fox В будущем да, но нет особой уверенности, что программа будет особенно раскрученной, чтобы для нее писали плагины. Из того, что хотелось бы переложить на плагины — это разные типы страниц и форматирование страниц в формате вики (в смысле, что плагины могли бы расширять доступное по умолчанию форматирование).
Да, KeepNote я видел, но у меня он не всегда запускается, причем если дома, например, какая-то версия работает, то приношу ее на работу, а там она молча закрывается. Да и еще мне не нравится там то, что диалоги открытия/сохранения оформлены под GTK — очень не удобно.
Мне больше нравится WikidPad, он тоже написан на питоне + wx.
5 апреля 2010, 9:28 ппBobrovod:
Подумал по поводу фаворитных заметок, для них нужно некое поле, например, если Вы собираетесь делать классический дизайн, под деревом оставить место, куда их можно перетягивать мышью, и где они на глазах будут всегда, и ограничить кол-во фаворитов 10-15 штуками (или оставить на откуп пользователю в настройках, но всё равно ограничить, скажем 99).
6 апреля 2010, 2:05 ппЕщё вспомнил, очень бы желательно, чтобы не забывали о горячих клавишах, обычно в работе с тесктом, мышь лишь вспомогательный, вынужденный инструмент, у меня по крайней мере.
и, есть ещё пожелание, все настройки чтобы хранились в папке с программой, для пущей портабельности.
про шифрование, можно шифровать заметку целиком, а можно лишь часть заметки, т.е. шифруется блок информации, но при этом в заметке есть и нешифрованные данные, и отображается в заметке только открытая часть, пока пароль не введешь.
и ещё архинужная вешь — бакапы, достаточно жать всё в zip-архив по крону.
Jenyay:
> Подумал по поводу фаворитных заметок…
Для начала я их собираюсь делать как в браузерах в виде меню.
> Ещё вспомнил, очень бы желательно, чтобы не забывали о горячих клавишах
Обязательно
> все настройки чтобы хранились в папке с программой, для пущей портабельности.
Тоже обязательно. Сам ношу такие заметки на переносном диске.
> про шифрование, можно шифровать заметку целиком, а можно лишь часть заметки, т.е. шифруется блок информации, но при этом в заметке есть и нешифрованные данные, и отображается в заметке только открытая часть, пока пароль не введешь.
На первое время такого не обещаю, но добавлю в ToDoList на всякий случай.
> и ещё архинужная вешь – бакапы, достаточно жать всё в zip-архив по крону.
Согласен.
6 апреля 2010, 2:33 ппanonymous:
Bobrovod, как Вы точно org-mode описали.
12 апреля 2010, 4:05 ппvvi:
прога будет опеРсорсная
23 мая 2022, 12:35 ппJenyay:
@vvi, спасибо, поправил.
24 мая 2022, 8:30 пп