Автор | Сообщение |
alkresin
|
| moderator
|
Пост N: 1174
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.04.19 14:37. Заголовок: Hbedit - текстовый редактор
Довел, наконец, свой текстовый редактор до того состояния, когда можно показать его общественности. Я начал писать его сначала как замену Memoedit(), но потом увлекся) и решил сделать что-то помощнее, как нормальный редактор для повседневного использования. Мне приходится в течение дня работать и под виндами, и под Линуксом - использую Far и mc, соответственно. Иногда Vim - но к некоторым вещам в нем так и не привык. Но хочется иметь что-то одно для всех платформ - не слишком навороченный, но чтоб было все что надо. Сегодня выложил на github: https://github.com/alkresin/hbedit. F9 (или мышкой по соответствующей надписи) - главное меню. В ближайших планах: - Lower/Upper для utf8 - новые режимы подсветки ( директивы препроцессора и пр. ) - скобки - подсветка парных и переход на парные - undo - решить проблемы с табуляцие - сохранение истории открытых файлов, поиска - написать help (hbedit.help) Если есть идеи для реализации - буду рад услышать.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
alkresin
|
| moderator
|
Пост N: 1232
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.05.19 09:53. Заголовок: Обновлен hbedit. Доб..
Обновлен hbedit. Добавлены команды Vim-mode: f,F,* В диалоги поиска и поиска/замены подставляются предыдущие значения. В меню/списки добавлена поддержка мышиного колеса. Запоминается последний каталог при открытии файла.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2492
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.19 14:00. Заголовок: alkresin Рабочие кл..
alkresin Рабочие клавиши в редакторах Ctrl+N - New file edit (чистое\новое окно редактора, как запуск hbedit без параметра имя файла) Ctrl+O - Open file (запрос на файл F4 в F9) Ctrl+S - Save file (альтернатива F2 в F9)
|
|
|
alkresin
|
| moderator
|
Пост N: 1233
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.05.19 15:10. Заголовок: SergKis пишет: Рабо..
SergKis пишет: цитата: | Рабочие клавиши в редакторах |
| Знаю, а еще в Windows-редакторах для поиска используется обычно Ctrl-F, а не F7. Я думал на эту тему, но, в конце концов, решил приберечь эти клавиши (Ctrl-N и пр.) для чего-нибудь более полезного. А за основу я брал Far и mc. Там, и не только там, сохранение именно по F2 - и ничего, мы с этим живем). Хотелось бы, конечно, чтобы набор клавиш был максимально знакомым, но сохранить совместимость со всеми редакторами нельзя - просто потому, что они разные.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2493
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.19 16:40. Заголовок: alkresin пишет Там, ..
alkresin пишет цитата: | Там, и не только там, сохранение именно по F2 - и ничего, мы с этим живем). |
| Живем, но кто то привык к др. комбинациям клавиш, к примеру, F3 - Save и т.д. Может сделать таблицу ключа и выполнения, что бы набрать удобную, под себя, комбинацию. Возможность отключить Vim, никогда не использовался и не будет в силу привычки. Не увидел, как сделать вариант New file при загруженном уже др. файле. Как убрать строку меню (без нее), нажимая кл. F9. Попросил товарища собрать для меня (давно не работал) gtwvt вариант сборки с Main menu и StatusBar и пытаться встроить в окно hbedit
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2494
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.19 17:28. Заголовок: alkresin пишет Знаю,..
alkresin пишет цитата: | Знаю, а еще в Windows-редакторах для поиска используется обычно Ctrl-F, а не F7 |
| Еще Ctrl+R и перечисленные выше - это рабочие клавиши. Linuks и Mac (еще можно встретить) в нашей нет от слова совсем. С Far редактором не работают (кроме нескольких человек). Показал hbedit 2м людям - полный ступор, как работать
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2495
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.19 17:30. Заголовок: PS в нашей деревне ..
PS в нашей деревне нет от слова совсем.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2496
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.19 19:27. Заголовок: SergKis пишет Не уви..
SergKis пишет цитата: | Не увидел, как сделать вариант New file при загруженном уже др. файле. |
| УПС. Нашел Shift+F4
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2497
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.05.19 22:50. Заголовок: alkresin Товарищ со..
|
|
|
alkresin
|
| moderator
|
Пост N: 1234
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.05.19 09:48. Заголовок: SergKis пишет: Може..
SergKis пишет: цитата: | Может сделать таблицу ключа и выполнения, что бы набрать удобную, под себя, комбинацию. |
| Может быть, подумываю об этом. цитата: | Возможность отключить Vim, никогда не использовался и не будет в силу привычки. |
| Да, имеет смысл, чтоб не пугать условных менеджеров/экономистов - они, действительно, вряд ли будут когда-нибудь его использовать. цитата: | Как убрать строку меню (без нее), нажимая кл. F9. |
| Вы имеете ввиду верхнюю строку, панель статуса? Программно она отключается при вызове TEdit():New(cText, cFileName, y1, x1, y2, x2, cColor, lTopPane) - lTopPane должен быть .F. цитата: | Показал hbedit 2м людям - полный ступор, как работать |
| И что же там может повергнуть в ступор? Я понимаю, если бы Vim-режим был ыключен по умолчанию, а так - жми на клавиши и вводи себе текст, как во всех редакторах...
|
|
|
alkresin
|
| moderator
|
Пост N: 1235
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.05.19 09:54. Заголовок: SergKis пишет: Това..
SergKis пишет: цитата: | Товарищ собрал пробный вид, куда хотелось бы встроить hbedit. |
| Я не знаком с синтаксисом wvt_AppendMenu(), что-то не нашел этой функции нигде в Harbour. Где там указывается действие, соответствующее пункту меню?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2498
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 10:07. Заголовок: alkresin пишет Я не ..
alkresin пишет цитата: | Я не знаком с синтаксисом wvt_AppendMenu(), что-то не нашел этой функции нигде в Harbour. Где там указывается действие, соответствующее пункту меню? |
| Описание своих ф-и wvt (товарищ дорабатывал gtwvt еще в hb 2.0) Скрытый текст
wvt_CreateStatusBar() создает статусбар wvt_SBSetText(Text, [part]) wvt_SetProgress( 2, 2048) - Поставить градусник на размер inem StatusBar wvt_SetProgress( 2 ) - Удалить градусник wvt_SetProgress() - Продвинуть на шаг wvt_CreateMenu( [lMain] ) -> hMenu Создаем пустое меню lMain - TRUE создать главное меню для програмы FALSE создать PopUpMenu - подключаемое или отдельное ( Default ) wvt_CreatePopUpMenu() -> hMenu2 ??? Создаем пустое подключаемое меню wvt_AppendMenu(hMenu, cCaption, nKey, [cFlags] ) Добавить пункт в меню cCaption - Текст меню В тексте работает символ Chr(9) nKey - Этот код будет послан в очередь (обработка в SetKey(nKey, {||...}) ) cFlag - строка символов в любой комбинации регистр не имеет значение 'B' - Bold выделеный пункт меню 'C' - Cheked Помечен галочкой 'D' - Disable Серый не работающий 'N' - Начинается новая колонка 'H' - При первом открытии меню курсор стоит на этой позиции wvt_AppendMenu( hMenu ) Добавить разделителseparator wvt_SetMenu( hMenu ) -> .T./.F. Установить меню в окно wvt_SetPopUpMenu( hMenu, hMenu2, "Заголовок") -> .T./.F. Подключить к меню подменю wvt_DeleteMenu( hMenu, nPos) -> .T./.F. Удалить меню в позиции Если это подменю то оно уничтожается а Handler освободается. wvt_DestroyMenu( hMenu ) -> .T./.F. Удаляет меню и освобождает память занимаемую меню wvt_TrackPopupMenu( hMenu ) -> nKey Показать подготовленое меню как PopUp
|
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2499
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 10:29. Заголовок: PS обработчик ставит..
PS обработчик ставится на SetKey() или ловится в nKey := inkey(0, ..._ALL) По StatusBar METHOD WriteTopPane( lClear ) CLASS TEdit ... IF HB_ISBLOCK(::WriteTopPane) EVal(::bWriteTopPane, Self) RETURN Nil ENDIF IF ::lTopPane ... что то в таком духе, наверно
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2500
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 10:40. Заголовок: alkresin пишет lTopP..
alkresin пишет Спасибо, нашел. цитата: | И что же там может повергнуть в ступор? |
| Интерфейс, такого нет уже очень давно. Работа все время через несколько клавиш, т.е. - F9, 9, 0 - F11, 0 - частичное соответствие комбинациям клавиш windows (сбиваются), т.е. все действия получаются через F9
|
|
|
alkresin
|
| moderator
|
Пост N: 1236
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.05.19 10:44. Заголовок: SergKis пишет: обра..
SergKis пишет: цитата: | обработчик ставится на SetKey() или ловится в nKey := inkey(0, ..._ALL) |
| Здесь события ловятся Inkey( 0, HB_INKEY_ALL + HB_INKEY_EXT ) - принимаются и обрабатываются расширенные коды. Так, например код F2 не -1, а 0x41000002. Попробуйте использовать в wvt_AppendMenu() именно эти коды.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2501
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 11:55. Заголовок: alkresin пишет Попро..
alkresin пишет цитата: | Попробуйте использовать в wvt_AppendMenu() именно эти коды. |
| Попробовал, не помогло, т.е. wvt_AppendMenu( hMnu1, "Open file " + c9 + "F4", 1090519044 ) wvt_AppendMenu( hMnu1, "Menu " + c9 + "F9", 1090519049 ) ... /* i := 0 j := '' DO WHILE i < 10 k := Inkey( 0, HB_INKEY_ALL + HB_INKEY_EXT ) n := hb_keyStd( k ) i++ ? i, k, n j += hb_ntos(n)+c9+hb_ntos(k) + chr(13)+chr(10) ENDDO hb_memowrit('_.txt', j) */ Если убираю коментарии, то ловятся коды как надо и K_F4 и K_F9
|
|
|
alkresin
|
| moderator
|
Пост N: 1237
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.05.19 12:47. Заголовок: SergKis пишет: Попр..
SergKis пишет: Тогда ставьте bOnkey: oEdit:bOnkey := {|o,n| mykeyhandler( o,n )} и в этом mykeyhandler() можно посмотреть, какие коды (n) приходят при выборе пункта меню. Скорее всего, это будут чистые K_F2 и пр. В этом случае в том же mykeyhandler() их надо подменить на расширенные: IF n == K_F2 RETURN 0x41000002 ELSEIF ... ELSE RETURN 0 ENDIF
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2502
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 13:16. Заголовок: alkresin пишет Тогда..
alkresin пишет цитата: | Тогда ставьте bOnkey: oEdit:bOnkey := {|o,n| mykeyhandler( o,n )} |
| Имеется в виду эти места ? Или другое FOR i := 1 TO Len( aFiles ) TEdit():New( Iif(!Empty(aFiles[ i ]),Memoread(aFiles[ i ]),""), aFiles[ i ], 0, 0, nScreenH-1, nScreenW-1 ) ATail(TEdit():aWindows):bOnkey := {|o,n| mykeyhandler( o,n )} IF lRO ATail(TEdit():aWindows):lReadOnly := .T. ENDIF NEXT IF Empty( TEdit():aWindows ) TEdit():New( "", "", 0, 0, nScreenH-1, nScreenW-1 ) ATail(TEdit():aWindows):bOnkey := {|o,n| mykeyhandler( o,n )} IF lRO ATail(TEdit():aWindows):lReadOnly := .T. ENDIF ENDIF
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2503
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 14:59. Заголовок: alkresin Сделал как..
alkresin Сделал как выше, только вывел в log что приходит bBlk := {|o,n| ToLog(.T., 'nKey =', n, hb_keyStd(n)) Return 0 } получил Скрытый текст
====================== это через меню nKey = 1103 1103 nKey = 1157632005 1001 nKey = 1157627908 1001 nKey = 1157627907 1001 nKey = 1157627906 1001 nKey = 1157640196 1001 nKey = 1157636100 1001 nKey = 1157636099 1001 nKey = 1157627908 1001 nKey = 1157627907 1001 nKey = 1157627906 1001 nKey = 1157640196 1001 nKey = 1157636100 1001 nKey = 1157632005 1001 nKey = 1104 1104 nKey = 1103 1103 nKey = 1157632004 1001 nKey = 1157627907 1001 nKey = 1157627906 1001 nKey = 1157640196 1001 nKey = 1157627907 1001 nKey = 1157627906 1001 nKey = 1157627905 1001 nKey = 1157640195 1001 nKey = 1157636099 1001 nKey = 1157632003 1001 nKey = 1090519065 27 ========================= это по нажатию клавиш F4, Esc, F9, Esc, Esc - выход nKey = 1103 1103 nKey = 1157632003 1001 nKey = 1090519044 -3 nKey = 1090519049 -8 nKey = 1090519065 27
| на меню не реагирует
|
|
|
alkresin
|
| moderator
|
Пост N: 1238
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.05.19 15:15. Заголовок: SergKis пишет: это ..
SergKis пишет: При нажатии одного пункта меню? 1001 - это K_MOUSEMOVE, 1003 - K_LBUTTONUP, 1004 - K_RBUTTONDOWN. Немного непонятно, где K_LBUTTONDOWN и при чем тут K_RBUTTONDOWN, но, в целом, ясно, что вы переместили мышь и щелкнули. Кстати, вы вернули коды в wvt_AppendMenu() обратно на простые (не расширенные) ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2504
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.05.19 16:55. Заголовок: alkresin пишет Кстат..
alkresin пишет цитата: | Кстати, вы вернули коды в wvt_AppendMenu() обратно на простые (не расширенные) ? |
| Нет, стоят расширенные. Но они через меню не пройдут, как выяснилось (поговорил с товарищем), ограничения win api на число в 2а байта. А тут четыре, т.е. расширенные из меню не пройдут. Посмотрел в более спокойной обстановке - это так.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|