PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Quotation - цитатник


Quotation - цитатник

Сообщений 1 страница 9 из 9

1

Quotation - цитатник

Скачать: yandex upload.ee
(на яндексе версия новей, так как легче обновлять)

Назначение
Быстро сохраняет выделенные тексты.

Использование
1. Запуск проги, иконка будет в трее, создаётся файл TXT возле исполняемого EXE для сохранения цитат.
2.  Выделяем текст и жмём Ctrl+J, можно переназначить на другую клавишу, при этом текст пишется в конец TXT-файла с указанием даты и времени.
3. ini-файл создаётся в "AppData\Roaming". Если его создать в папке программы, то будет использоваться он и не создастся в "AppData\Roaming".

Обновления
Добавлен второй режим сохранения и выбор в какой раздел сохранять (на данный момент обязателен Preview = 1)

план
На данный момент файл каждый раз открывается для записи, возможно не стоит закрывать, чтобы не перемещать указатель в конец файла каждый раз.
Добавить разный способ добавления цитат: в один файл с разделением или каждая в отдельный файл в папку.
Добавить максимальный размер файла, чтобы записывать цитаты в следующий файл, если превышение размера файла. Но не при запуске, а во время работы тоже.
Добавить заголовок цитаты в виде даты или для имени файла, или добавить форматированную строку для имени файла или заголовка
Добавить предпросмотр добавляемой цитаты, чтобы отслеживать 100% правильный захват. Или добавить предпросмотр в виде всплывающей подсказки на пару секунд, без необходимости подтверждения с Enter. При больших текстах показ начала и конца, а не всего файла.
Добавить выбор раздела или пути для файла, чтобы цитаты попадали не в общую кучу, а сортировались по содержимому, например ссылки в свой раздел, куски кода в свой раздел, информационные тексты в свой и т.д.

Отредактировано AZJIO (20.08.2022 13:05:25)

0

2

не знаю зачем это нужно, но тебе наверно надо
писать в конец очень просто, но очень неудобно потом читать, надо в начало добавлять
посмотри не множатся ли у тебя в конце пустые строки

0

3

newJS написал(а):

не знаю зачем это нужно, но тебе наверно надо

http://forum.ru-board.com/topic.cgi?for … rt=3040#13

newJS написал(а):

посмотри не множатся ли у тебя в конце пустые строки

разделитель задаётся в ini-файле.

newJS написал(а):

писать в конец очень просто, но очень неудобно потом читать, надо в начало добавлять

если просто, не значит что надо делать наоборот. В начало файла писать это переписывать файл каждый раз. Была идея в отдельные файлы писать, как я у себя куски кода по папкам "2022.08" раскладываю и т.д.

0

4

AZJIO написал(а):

В начало файла писать это переписывать файл каждый раз.

ну да, зато ты видишь последнее, а не старое, а к новому ещё прокручивать надо, неудобно же
что за проблема добавлять в начало

AZJIO написал(а):

разделитель задаётся в ini-файле.

ты не понял, пустые строки образуются от многократного переписывания файла, сталкивался с такой бедой

0

5

newJS написал(а):

пустые строки образуются от многократного переписывания файла

Можешь объяснить как? PureBasic не пишет в файл что-либо самостоятельно. Сколько я задал переносов строк в разделителе, столько и запишет, не больше и не меньше. Сама команда записывает один перенос. Возможно ты писал пустые строки, а функция на каждый вызов заканчивает переносом строки и поэтому туда записалось куча переносов, а у меня то не так, если отказался делать запись, то пустой вызов не происходит, а только когда согласился.

Я ещё не выкладывал, но уже исходник увеличился в полтора раза. Сделал окно предпросмотра с ListViewGadget для выбора типа сохранения, сейчас прописываю режим сохранения отдельных файлов в папку заданную в FormatDate(), так что вроде получается то что я хотел.

0

6

По поводу кода. Я бы этот фрагмент оформил бы в виде структуры

Код:
Global ini_PathQuoteTxt$ = GetPathPart(ProgramFilename()) + GetFilePart(ProgramFilename(), #PB_FileSystem_NoExtension) + ".txt"
Global ini_HotkeyCode.l = 586
Global ini_MaxSize.l = 500
Global ini_Preview = 1
Global ini_Clipboard = 0
Global ini_Separator$ = "\n\n=== %d %t ====\n\n"

Будет только одна глобальная переменная-экземпляр структуры - ini.

Код:
Structure ini
  PathQuoteTxt$
  HotkeyCode.l
  MaxSize.i
  Preview.i
  Clipboard.i
  Separator$
EndStructure

Global gIni.ini

Потому что как известно чем меньше глобальных переменных тем лучше.

Код:
hHotkey = CreateWindowEx_(0, #HOTKEY_CLASS, 0, #WS_CHILD | #WS_VISIBLE | #WS_TABSTOP, 10, 10, 200, 25, hWnd_0, 0, 0, 0)

В PB есть ShortcutGadget.

Код:
If OpenWindow(0, 0, 0, 240, 70, "ShortcutGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ShortcutGadget(0, 20, 20, 200, 25, #PB_Shortcut_Control | #PB_Shortcut_A)
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  EndIf

При клике по пункту меню "Показать настройки" окно не появляется. Нужно в обработчик меню #mShow добавить

Код:
HideWindow(#WindowSet, #False)

0

7

Обновление
Добавлено изменение размера окна предпросмотра
Добавлен пункт "Открыть в ini"
Добавлен цвет в ini-файл
Добавлено закрытие окна после "Применить" хоткей, а также показ реального хоткея из ini-файла
"Enter" - применить выбор если фокус в списке (в предпросмотре)
"Esc" - отменить сохранение (в предпросмотре) и "закрыть" окно.

У кого не работает, обновить ini (удалить или взять из \Source\sample.ini). Имя файла сохранения зависит от имени EXE-файла (x86 и x64 из-за префикса не будут работать в один файл)

Пётр написал(а):

В PB есть ShortcutGadget.

Как то пробовал и у меня была проблема с вводом символов кроме букв и я использовал такой способ, а потом снова пробую и работает, так и остался у меня старый пример и взял с него. Переделал, вроде работает.

Пётр написал(а):

Нужно в обработчик меню #mShow добавить

там было по-другому и у меня работало

Код:
SetWindowState(#WindowSet, #PB_Window_Normal)

но сделал HideWindow(), тем более он у меня везде по коду.

Пётр написал(а):

Я бы этот фрагмент оформил бы в виде структуры

Всё ни как не могу привыкнут и пишу по старому. Наверно надо будет переделать.

Отредактировано AZJIO (21.08.2022 19:33:04)

0

8

AZJIO написал(а):

Всё ни как не могу привыкнуть и пишу по старому

Для небольших программ это не столь важно и можно оставить как есть, но по мере увеличения объема кода (или его повторного использования в других программах), глобальные переменные могут добавить сложностей.

0

9

Обновление
Добавлен параметр "Signal = ", чтобы воспроизводить звук при успешной записи, полезно при Preview = 0, когда можно недонажать хоткей и не знать об отсутствии записи.
Добавил справку - chm-файл
Добавлен параметр "bom = ", для указания добавлять ли метку BOM.
Добавлен параметр "wstr = ", для указания кодировки файла сохранения, по умолчанию UTF-8.
Добавлен параметр "separator = ", для индивидуального выбора.
Добавлен параметр "edit = ", позволяющий править фрагмент в окне предпросмотра.
Добавлен параметр "genname = 1", который в режиме mode=2 генерирует имя файла из даты (1) или индекса (2). При 0 (запрос, по умолчанию) добавлен проверка что файл не существует, иначе добавляет суффикс-индек "_1", "_2" и т.д.

Отредактировано AZJIO (22.08.2022 18:32:15)

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Quotation - цитатник