Pull to refresh

Desktop приложение для хранения текстовой информации

Level of difficultyEasy
Reading time4 min
Views14K

Всем привет! Меня зовут Алексей, я являюсь .NET разработчиком. Это моя первая статья на Хабре. Время от времени возникает необходимость где-то записывать различные вырезки из статей, инструкции, сниппеты с кодом и т. д. Раньше приходилось хранить все это в отдельных файлах в системе, но со временем их становилось все больше, и я начал забывать, что и где находится. Однажды возникла идея разработки Desktop приложения на WPF для удобного хранения текстовой информации в одном месте, чтобы можно было ее систематизировать и быстро находить.

Начал разработку в 2022 г. и продолжаю ее по сей день в свободное от основной работы время. На данный момент приложение имеет довольно неплохой функционал, оно получилось удобным и удалось реализовать практически все что требовалось на момент задумки. Приложение называется Data Organizer и предназначено для работы в ОС Windows.

Интерфейс

Интерфейс выполнен по принципу Master–detail, где в левой части экрана находится иерархический список папок и документов, напоминающий проводник в ОС Windows, а в правой, представление выбранного в списке документа. В данный момент реализованы следующие типы документов:

  • Простой текст - обычный текстовый документ с возможностью подсветки синтаксиса;

  • Форматированный текст - аналог документа docx;

  • Электронная таблица - аналог документа xlsx;

  • Набор данных - документ в виде набора карточек, позволяющих разделять информацию по категориям с порциями текста.

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

Главное окно приложения - редактор
Главное окно приложения - редактор

В настройках можно изменить параметры цветовой темы приложения, выбрать русский или английский язык интерфейса.

Настройки приложения
Настройки приложения

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

Возможности

Есть возможность перетаскивать объекты в любое место в списке с помощью Drag-and-drop, а также с помощью клавиатуры комбинациями Alt+Up/Down в пределах папки.

Реализован поиск объектов как по названиям и тэгам (тэги служат для обобщения объектов в списке), так и по содержимому документов (в данный момент поиск по содержимому применяется к документам с простым и форматированным текстом).

Есть возможность экспорта всех данных в один XML или JSON файл, или в физические файлы, где каждому документу соответствует один файл на диске с учетом иерархии папок в списке. По такому же принципу реализован и импорт данных в приложение.

Присутствует история просмотров содержимого документов и история копирования содержимого.

Предусмотрена возможность шифрования содержимого папки в редакторе с помощью контекстного меню. Чтобы иметь данную возможность, необходимо вначале установить мастер-ключ с помощью диалога "Шифрование" в главном меню редактора. Мастер-ключ сохраняется в системе, в пользовательской переменной окружения и используется для смешивания с введенным пользователем паролем при шифровании и дешифровании. При шифровании содержимого папки, введенный пользователем пароль хешируется с помощью библиотеки bcrypt. Алгоритм шифрования AES, взят отсюда https://tomrucki.com/posts/aes-encryption-in-csharp/. Я нахожусь в поиске наиболее надежного, комплексного механизма шифрования с учетом особенностей разработки под Desktop, поэтому в будущем буду дорабатывать, изменять эти механизмы в приложении. Если у Вас имеется недоверие к шифрованию чувствительных данных в приложении Data Organizer, лучше их там не шифровать и не хранить.

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

Режим «Избранное». Специальный режим работы, в котором приложение имеет минималистичный интерфейс для показа только избранных документов с простым текстом. Данный режим служит для быстрого нахождения и копирования в системный буфер обмена наиболее часто используемых порций текста. Режим становится доступным в меню, если в главном списке редактора есть избранные документы, которые назначаются с помощью контекстного меню нажатием на правую кнопку мыши. Так же в данном режиме есть просмотр истории копирования содержимого, для еще более быстрого повторного копирования текста.

Режим «Избранное»
Режим «Избранное»

Хранение данных

По умолчанию приложение использует для хранения данных локальную базу данных SQLite, создаваемую и находящуюся рядом с исполняемым файлом, но есть возможность подключения через специальный диалог к другой базе SQLite а так же к MySQL, Oracle, PostgreSQL, SQLServer.

Подключение к базе данных
Подключение к базе данных

Публикация

Приложение компилируется в портативную сборку x64, включающую в себя целевую платформу .NET 8, для удобства переноски на съемном носителе. Систему своими файлами не засоряет, все необходимые для работы файлы, создает в папке рядом с исполняемым.

Заключение

Я хочу поделиться своим приложением бесплатно со всеми желающими. Возможно, кому-то оно будет так же полезным. Так как занимаюсь его разработкой в одиночку, я был бы очень благодарен за обратную связь (для этого можно использовать диалог «Техническая поддержка» в самом приложении). Буду рад предложениям по доработкам, улучшению, замечаниям, добавлению новых функций, выявленным багам и т.д.

Приложение находится в открытой папке на Яндекс диске и доступно по ссылке: https://disk.yandex.ru/d/jeUJ8m7PJYRu4g или qr-коду:

Ссылка на открытую папку с приложением
Ссылка на открытую папку с приложением

Я пытался найти действующий, не заблокированный на территории России ресурс для размещения скомпилированной сборки Data Organizer, но не удалось, если кто-нибудь сможет подсказать о существовании такого, буду очень благодарен.

Tags:
Hubs:
+11
Comments81

Articles