Page 1 of 2
Neon - текстовый редактор.
Posted: Tue Jun 19, 2018 1:04 am
by JohnXenox
Делаю удобный текстовый редактор. Но, как я написал в чатике - прошу не обнадёживаться (не уверен, что осилю).
Писать тестовый редактор очень сложно, когда толком не знаешь язык, да и опыта нет, практически никакого.
Редактор пишу на языке С.
Уже сделал кое-какие шаги, но ещё много чего не сделано, поэтому показывать нечего.
Есть только, разрозненный рабочий код и простой абстракный граф. концепт (см. рисунок).
Концепт не окончательный, и возможно, что программа, когда выйдет в альфу, будет выглядеть немного по-другому или совсем по-другому.
Вообще, я нацеливаюсь сделать, что-то на подобии: Visual Studio Code, Geany, Sublime или что-то среднее (эти редакторы, как образец, не более), но пока до этого очень далеко и возможно, что этого никогда не случится.
Рисунок концепта.
Список дел:
- Дописать минимально необходимые граф. элементы для комфортного управления редактором.
- Отрефакторить текстовое поле.
- Сделать текстовое поле редактируемым.
- Разработать концепцию общей схемы подсветки синтаксиса.
- Написать схему подсветки синтаксиса для языка С.
- Написать код обработки для схемы.
- Скомпоновать все элементы в единую программу.
Re: Neon - текстовый редактор (пока только концепт).
Posted: Sat Jun 23, 2018 1:36 am
by paulcodeman
попробуй подцепить kf шрифты
Re: Neon - текстовый редактор (пока только концепт).
Posted: Tue Jun 26, 2018 11:19 pm
by JohnXenox
pavelyakov wrote:попробуй подцепить kf шрифты
Я б сделал бы, но пока знаний не хватает.
Re: Neon - текстовый редактор (пока только концепт).
Posted: Thu Jun 28, 2018 9:35 pm
by GerdtR
Пишешь на С? Компилятор какой?
upd: KTCC, увидел уже
Re: Neon - текстовый редактор (пока только концепт).
Posted: Wed Mar 25, 2020 3:00 pm
by JohnXenox
Текстовый редактор я пока не осилил полностью. Он работает, но очень хреново.
Пока времени нет им заниматься. Очень с ним намучился, даже не знаю, буду ли продолжать им заниматься дальше. Но, как будет время выложу.
Что сделано:
* Вывод и редактирование текста (пока только Клавой);
* Поддержка кодировок (UTF-16LE (основная), UTF-8 (не полностью), cp866, cp1251);
* Подсветка синтаксиса (C, C++, C--, Oberon07, FASM и др.);
* Открытие текстового файла через командную строку. Как сделать через opendial - пока не знаю.
Re: Neon - текстовый редактор (пока только концепт).
Posted: Wed Mar 25, 2020 3:53 pm
by Leency
Ммм
C--...
Выкладывай
Как сделать через opendial - пока не знаю.
Очень просто
Code: Select all
RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
См.
http://board.kolibrios.org/viewtopic.ph ... 86&p=53443
Re: Neon - текстовый редактор (пока только концепт).
Posted: Sat Apr 11, 2020 3:33 pm
by JohnXenox
Спс.
Попробую прикрутить, как будет свободное время.
Re: Neon - текстовый редактор (пока только концепт).
Posted: Mon Apr 27, 2020 3:58 pm
by JohnXenox
Neon - Alpha 1 (NON-STABLE!)
Neon - простой текстовый редактор с подсветкой синтаксиса.
ВНИМАНИЕ! Программа очень сильно грузит ЦПУ(на больших файлах). Плохо работает с большим текстом. Использовать осторожно!
Что сделано:
* dom и двойная буферизация.
* покадровый вывод текста.
* открытие, вывод, редактирование (только клавишами) и сохранение текста;
* подсветка синтаксиса (Bash, Fasm, C, C++, C--, Forth, Java, JavaScript, Oberon07, PHP, Python, Ruby, SQL);
* открытия файла через командную строку;
* открытие файла через OpenDialog;
* кодировка в UTF-16LE, UTF-8 (чтение), CP866, CP1251.
* оповещение через @notify.
* поддержка файла .ini.
* добавлен toolbar.
Горячие клавиши:
CTRL + O - открыть файл.
CTRL + S - сохранить файл.
CTRL + X - вырезать текст.
CTRL + C - копировать текст.
CTRL + V - вставить текст.
CTRL + A - выделить весь текст.
SHIFT + ARROW - выделить символ.
BACKSPACE - удалить символ слева.
DELETE - удалить символ справа.
TAB - вставить таб.
ARROWS (UP, DOWN, LEFT, RIGHT) - перемещение курсора (вверх, вниз, влево, вправо).
Re: Neon - текстовый редактор.
Posted: Mon Apr 27, 2020 8:56 pm
by Leency
Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.
Re: Neon - текстовый редактор.
Posted: Tue Apr 28, 2020 4:22 pm
by JohnXenox
Leency wrote:Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.
Поторопился немного. Уже поправил. Перезалил в посте выше. А шрифт раздвинул на пиксель, чтобы с курсором не сливался.
Исправил баг с функцией движения курсора клавишами стрелками.
Добавил ввод русских символов.
Добавил запуск командных строк клавишами:
CTRL + 1, CTRL + 2, CTRL + 3, CTRL + 4, CTRL + 5.
Re: Neon - текстовый редактор.
Posted: Tue Apr 28, 2020 5:16 pm
by rgimad
Респект автору за проделанную работу. Подстветка просто супер!
Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
Re: Neon - текстовый редактор.
Posted: Tue Apr 28, 2020 5:27 pm
by JohnXenox
rgimad wrote:Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
Принял.
Re: Neon - текстовый редактор.
Posted: Tue Apr 28, 2020 6:31 pm
by JohnXenox
Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
-Какой функцией можно убить родительское окно?
Re: Neon - текстовый редактор.
Posted: Tue Apr 28, 2020 6:37 pm
by Leency
1. Попроще - никак. Не попроще
Spoiler:
Code: Select all
struct od_filter
{
dword size; //size = len(#ext) + sizeof(dword)
char ext[25];
};
proc_info pr_inf;
char opendir_path[3072];
char openfile_path[4096];
char filename_area[1024];
opendialog o_dialog = {
0,
#pr_inf,
#communication_area_name,
0,
#opendir_path,
#default_dir,
#open_dialog_path,
#draw_window,
0,
#openfile_path,
#filename_area,
#filter2,
420,
200,
320,
120
};
ДЛЯ СОХРАНИЯ
struct od_filter
{
dword size; //size = len(#ext) + sizeof(dword)
char ext[25];
};
proc_info pr_inf;
char opendir_path[3072];
char openfile_path[4096];
char filename_area[1024];
opendialog o_dialog = {
0,
#pr_inf,
#communication_area_name,
0,
#opendir_path,
#default_dir,
#open_dialog_path,
#draw_window,
0,
#openfile_path,
#filename_area,
#filter2,
420,
200,
320,
120
};
2.
Code: Select all
inline fastcall int KillProcess( ECX) // ECX = process id from ProcInfo structure
{
$mov eax,18;
$mov ebx,18;
$int 0x40
}
Re: Neon - текстовый редактор.
Posted: Tue Apr 28, 2020 6:59 pm
by punk_joker
JohnXenox wrote:Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
Посмотри C Layer, там вроде есть обертка