Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Jun 05, 2020 12:58 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 16 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Tue Jun 19, 2018 1:04 am 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
Делаю удобный текстовый редактор. Но, как я написал в чатике - прошу не обнадёживаться (не уверен, что осилю).
Писать тестовый редактор очень сложно, когда толком не знаешь язык, да и опыта нет, практически никакого.
Редактор пишу на языке С.

Уже сделал кое-какие шаги, но ещё много чего не сделано, поэтому показывать нечего.
Есть только, разрозненный рабочий код и простой абстракный граф. концепт (см. рисунок).
Концепт не окончательный, и возможно, что программа, когда выйдет в альфу, будет выглядеть немного по-другому или совсем по-другому.
Вообще, я нацеливаюсь сделать, что-то на подобии: Visual Studio Code, Geany, Sublime или что-то среднее (эти редакторы, как образец, не более), но пока до этого очень далеко и возможно, что этого никогда не случится.

Рисунок концепта.

Image

Список дел:
- Дописать минимально необходимые граф. элементы для комфортного управления редактором.
- Отрефакторить текстовое поле.
- Сделать текстовое поле редактируемым.
- Разработать концепцию общей схемы подсветки синтаксиса.
- Написать схему подсветки синтаксиса для языка С.
- Написать код обработки для схемы.
- Скомпоновать все элементы в единую программу.

_________________
The Glass is Always Half Full! :mrgreen:


Last edited by JohnXenox on Mon Apr 27, 2020 4:48 pm, edited 1 time in total.

Top
   
PostPosted: Sat Jun 23, 2018 1:36 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 263
попробуй подцепить kf шрифты


Top
   
PostPosted: Tue Jun 26, 2018 11:19 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
pavelyakov wrote:
попробуй подцепить kf шрифты
Я б сделал бы, но пока знаний не хватает. :mrgreen:

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Thu Jun 28, 2018 9:35 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 459
Пишешь на С? Компилятор какой?
upd: KTCC, увидел уже :)

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Wed Mar 25, 2020 3:00 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
Текстовый редактор я пока не осилил полностью. Он работает, но очень хреново.
Пока времени нет им заниматься. Очень с ним намучился, даже не знаю, буду ли продолжать им заниматься дальше. Но, как будет время выложу.

Что сделано:
* Вывод и редактирование текста (пока только Клавой);
* Поддержка кодировок (UTF-16LE (основная), UTF-8 (не полностью), cp866, cp1251);
* Подсветка синтаксиса (C, C++, C--, Oberon07, FASM и др.);
* Открытие текстового файла через командную строку. Как сделать через opendial - пока не знаю.

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Wed Mar 25, 2020 3:53 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
Ммм C--...
Выкладывай :)

Quote:
Как сделать через opendial - пока не знаю.
Очень просто
Code:
RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
См. viewtopic.php?f=9&t=2486&p=53443

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Sat Apr 11, 2020 3:33 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
Leency wrote:
Quote:
Как сделать через opendial - пока не знаю.
Очень просто
Code:
RunApp("/sys/lod", "*cpp,txt* /path/to/your/app");
См. viewtopic.php?f=9&t=2486&p=53443
Спс. :D Попробую прикрутить, как будет свободное время.

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Mon Apr 27, 2020 3:58 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
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) - перемещение курсора (вверх, вниз, влево, вправо).


Attachments:
Neon.png
Neon.png [ 14.59 KiB | Viewed 396 times ]
Neon_2020.04.28_Alpha_1_(NON-STABLE).zip [39.92 KiB]
Downloaded 17 times

_________________
The Glass is Always Half Full! :mrgreen:


Last edited by JohnXenox on Tue Apr 28, 2020 4:16 pm, edited 1 time in total.
Top
   
PostPosted: Mon Apr 27, 2020 8:56 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Tue Apr 28, 2020 4:22 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
Leency wrote:
Круто. Права у меня при перемещении курсора еще печатаются символы. Хоткеи не работают. Шрифт разрежен на 1 пиксель.
Поторопился немного. Уже поправил. Перезалил в посте выше. А шрифт раздвинул на пиксель, чтобы с курсором не сливался.

Исправил баг с функцией движения курсора клавишами стрелками.
Добавил ввод русских символов.
Добавил запуск командных строк клавишами:
CTRL + 1, CTRL + 2, CTRL + 3, CTRL + 4, CTRL + 5.

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Tue Apr 28, 2020 5:16 pm 
Offline
User avatar

Joined: Mon Apr 06, 2020 1:09 pm
Posts: 38
Респект автору за проделанную работу. Подстветка просто супер!

Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает

_________________
The best way to predict the future is to create it.


Top
   
PostPosted: Tue Apr 28, 2020 5:27 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
rgimad wrote:
Теперь о багах и недоработках:
- не удаляется выделенный через ctrl+a текст, например выделяю все и нажимаю del/bksp но удаляется только последний символ
- нет скролл бара
- нет выделения мышью
- курсор не мигает
Принял.

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Tue Apr 28, 2020 6:31 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 196
Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.
-Какой функцией можно убить родительское окно?

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Tue Apr 28, 2020 6:37 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5278
1. Попроще - никак. Не попроще
Spoiler: Show
Code:
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:
inline fastcall int KillProcess( ECX) // ECX = process id from ProcInfo structure
{
   $mov eax,18;
   $mov ebx,18;
   $int 0x40
}

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Tue Apr 28, 2020 6:59 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1163
JohnXenox wrote:
Есть 2 вопроса:
-Как сохранить файл через opendialog? Способ желательно попроще.

Посмотри C Layer, там вроде есть обертка

_________________
я лишь учусь


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 16 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited