On-line: AndreyZh, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
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)

Если есть идеи для реализации - буду рад услышать.

Спасибо: 0 
Профиль
Ответов - 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,*
В диалоги поиска и поиска/замены подставляются предыдущие значения.
В меню/списки добавлена поддержка мышиного колеса.
Запоминается последний каталог при открытии файла.

Спасибо: 0 
Профиль
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)

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1233
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.05.19 15:10. Заголовок: SergKis пишет: Рабо..


SergKis пишет:

 цитата:
Рабочие клавиши в редакторах


Знаю, а еще в Windows-редакторах для поиска используется обычно Ctrl-F, а не F7.
Я думал на эту тему, но, в конце концов, решил приберечь эти клавиши (Ctrl-N и пр.) для чего-нибудь более полезного.
А за основу я брал Far и mc. Там, и не только там, сохранение именно по F2 - и ничего, мы с этим живем).
Хотелось бы, конечно, чтобы набор клавиш был максимально знакомым, но сохранить совместимость со всеми редакторами нельзя - просто потому, что они разные.

Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
SergKis



Пост N: 2494
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.19 17:28. Заголовок: alkresin пишет Знаю,..


alkresin пишет
 цитата:
Знаю, а еще в Windows-редакторах для поиска используется обычно Ctrl-F, а не F7


Еще Ctrl+R и перечисленные выше - это рабочие клавиши. Linuks и Mac (еще можно встретить) в нашей нет от слова совсем. С Far редактором не работают (кроме нескольких человек). Показал hbedit 2м людям - полный ступор, как работать

Спасибо: 0 
Профиль
SergKis



Пост N: 2495
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.19 17:30. Заголовок: PS в нашей деревне ..


PS
в нашей деревне нет от слова совсем.

Спасибо: 0 
Профиль
SergKis



Пост N: 2496
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.19 19:27. Заголовок: SergKis пишет Не уви..


SergKis пишет
 цитата:
Не увидел, как сделать вариант New file при загруженном уже др. файле.


УПС.
Нашел Shift+F4

Спасибо: 0 
Профиль
SergKis



Пост N: 2497
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.19 22:50. Заголовок: alkresin Товарищ со..


alkresin
Товарищ собрал пробный вид, куда хотелось бы встроить hbedit. Тут https://TransFiles.ru/kvd95
Как это правильно сделать ?

Спасибо: 0 
Профиль
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-режим был ыключен по умолчанию, а так - жми на клавиши и вводи себе текст, как во всех редакторах...

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 1235
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.05.19 09:54. Заголовок: SergKis пишет: Това..


SergKis пишет:

 цитата:
Товарищ собрал пробный вид, куда хотелось бы встроить hbedit.


Я не знаком с синтаксисом wvt_AppendMenu(), что-то не нашел этой функции нигде в Harbour. Где там указывается действие, соответствующее пункту меню?

Спасибо: 0 
Профиль
SergKis



Пост N: 2498
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.19 10:07. Заголовок: alkresin пишет Я не ..


alkresin пишет
 цитата:
Я не знаком с синтаксисом wvt_AppendMenu(), что-то не нашел этой функции нигде в Harbour. Где там указывается действие, соответствующее пункту меню?


Описание своих ф-и wvt (товарищ дорабатывал gtwvt еще в hb 2.0) Скрытый текст


Спасибо: 0 
Профиль
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
...

что то в таком духе, наверно

Спасибо: 0 
Профиль
SergKis



Пост N: 2500
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.19 10:40. Заголовок: alkresin пишет lTopP..


alkresin пишет
 цитата:
lTopPane должен быть .F.


Спасибо, нашел.

 цитата:
И что же там может повергнуть в ступор?


Интерфейс, такого нет уже очень давно.
Работа все время через несколько клавиш, т.е.
- F9, 9, 0
- F11, 0
- частичное соответствие комбинациям клавиш windows (сбиваются), т.е. все действия получаются через F9

Спасибо: 0 
Профиль
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() именно эти коды.

Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
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
}

получил Скрытый текст

на меню не реагирует

Спасибо: 0 
Профиль
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() обратно на простые (не расширенные) ?

Спасибо: 0 
Профиль
SergKis



Пост N: 2504
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.19 16:55. Заголовок: alkresin пишет Кстат..


alkresin пишет
 цитата:
Кстати, вы вернули коды в wvt_AppendMenu() обратно на простые (не расширенные) ?


Нет, стоят расширенные.
Но они через меню не пройдут, как выяснилось (поговорил с товарищем), ограничения win api на число в 2а байта.
А тут четыре, т.е. расширенные из меню не пройдут. Посмотрел в более спокойной обстановке - это так.

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 678
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет