Делаю удобный текстовый редактор. Но, как я написал в чатике - прошу не обнадёживаться (не уверен, что осилю).
Писать тестовый редактор очень сложно, когда толком не знаешь язык, да и опыта нет, практически никакого.
Редактор пишу на языке С.
Уже сделал кое-какие шаги, но ещё много чего не сделано, поэтому показывать нечего.
Есть только, разрозненный рабочий код и простой абстракный граф. концепт (см. рисунок).
Концепт не окончательный, и возможно, что программа, когда выйдет в альфу, будет выглядеть немного по-другому или совсем по-другому.
Вообще, я нацеливаюсь сделать, что-то на подобии: Visual Studio Code, Geany, Sublime или что-то среднее (эти редакторы, как образец, не более), но пока до этого очень далеко и возможно, что этого никогда не случится.
Рисунок концепта.
Список дел:
- Дописать минимально необходимые граф. элементы для комфортного управления редактором.
- Отрефакторить текстовое поле.
- Сделать текстовое поле редактируемым.
- Разработать концепцию общей схемы подсветки синтаксиса.
- Написать схему подсветки синтаксиса для языка С.
- Написать код обработки для схемы.
- Скомпоновать все элементы в единую программу.
Neon - текстовый редактор.
-
Last edited by JohnXenox on Mon Apr 27, 2020 4:48 pm, edited 1 time in total.The Glass is Always Half Full!
попробуй подцепить kf шрифты
Технологии меняют мир, а я - меняю технологии.
Я б сделал бы, но пока знаний не хватает.pavelyakov wrote:попробуй подцепить kf шрифты
The Glass is Always Half Full!
Пишешь на С? Компилятор какой?
upd: KTCC, увидел уже
upd: KTCC, увидел уже
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Текстовый редактор я пока не осилил полностью. Он работает, но очень хреново.
Пока времени нет им заниматься. Очень с ним намучился, даже не знаю, буду ли продолжать им заниматься дальше. Но, как будет время выложу.
Что сделано:
* Вывод и редактирование текста (пока только Клавой);
* Поддержка кодировок (UTF-16LE (основная), UTF-8 (не полностью), cp866, cp1251);
* Подсветка синтаксиса (C, C++, C--, Oberon07, FASM и др.);
* Открытие текстового файла через командную строку. Как сделать через opendial - пока не знаю.
Пока времени нет им заниматься. Очень с ним намучился, даже не знаю, буду ли продолжать им заниматься дальше. Но, как будет время выложу.
Что сделано:
* Вывод и редактирование текста (пока только Клавой);
* Поддержка кодировок (UTF-16LE (основная), UTF-8 (не полностью), cp866, cp1251);
* Подсветка синтаксиса (C, C++, C--, Oberon07, FASM и др.);
* Открытие текстового файла через командную строку. Как сделать через opendial - пока не знаю.
The Glass is Always Half Full!
Ммм C--...
Выкладывай
См. http://board.kolibrios.org/viewtopic.ph ... 86&p=53443
Выкладывай
Очень простоКак сделать через opendial - пока не знаю.
Code: Select all
RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
Из хаоса в космос
Спс. Попробую прикрутить, как будет свободное время.Leency wrote:Очень простоКак сделать через opendial - пока не знаю.См. http://board.kolibrios.org/viewtopic.ph ... 86&p=53443Code: Select all
RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
The Glass is Always Half Full!
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) - перемещение курсора (вверх, вниз, влево, вправо).
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) - перемещение курсора (вверх, вниз, влево, вправо).
- Attachments
-
-
Neon.png (14.59 KiB)Viewed 7318 times
-
Neon_2020.04.28_Alpha_1_(NON-STABLE).zip (39.92 KiB)Downloaded 267 times
-
Last edited by JohnXenox on Tue Apr 28, 2020 4:16 pm, edited 1 time in total.
The Glass is Always Half Full!
Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.
Из хаоса в космос
Поторопился немного. Уже поправил. Перезалил в посте выше. А шрифт раздвинул на пиксель, чтобы с курсором не сливался.Leency wrote:Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.
Исправил баг с функцией движения курсора клавишами стрелками.
Добавил ввод русских символов.
Добавил запуск командных строк клавишами:
CTRL + 1, CTRL + 2, CTRL + 3, CTRL + 4, CTRL + 5.
The Glass is Always Half Full!
Респект автору за проделанную работу. Подстветка просто супер!
Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
The best way to predict the future is to create it.
Принял.rgimad wrote:Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
The Glass is Always Half Full!
Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
-Какой функцией можно убить родительское окно?
-Как сохранить файл через opendialog? Способ желательно попроще.
-Какой функцией можно убить родительское окно?
The Glass is Always Half Full!
1. Попроще - никак. Не попроще
2.
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
};
Code: Select all
inline fastcall int KillProcess( ECX) // ECX = process id from ProcInfo structure
{
$mov eax,18;
$mov ebx,18;
$int 0x40
}
Из хаоса в космос
Посмотри C Layer, там вроде есть оберткаJohnXenox wrote:Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
to infinity and beyond
Who is online
Users browsing this forum: No registered users and 2 guests