Board.KolibriOS.org
http://board.kolibrios.org/

Редактор TextEdit
http://board.kolibrios.org/viewtopic.php?f=46&t=1222
Страница 1 из 17

Автор:  IgorA [ Пт фев 13, 2009 11:33 pm ]
Заголовок сообщения:  Редактор TextEdit

Решил создать программу для работы с текстовыми файлами.
Думаю, что будет как альтернативная программа к TinyPad.

Преимущество по сравнению с TinyPad в том что есть многократный Повтор/Отмена действий.

Можно работать с файлами больше 65 Кб. Скроллинга пока нет так что на большие файлы можно не надеяться. Недостатков пока намного больше, потому что многое не сделано. Версия тестовая, так что просьба с "серйозными" файлами пока не работать.

Автор:  Gluk [ Пт фев 13, 2009 11:37 pm ]
Заголовок сообщения:  Re: текстовый редактор

здОрово) конкуренция нужная вещь) // [offtop]Leency, а может и сделаю браузер ;) не знаю пока.[/offtop]

Автор:  Veliant [ Пт фев 13, 2009 11:47 pm ]
Заголовок сообщения:  Re: текстовый редактор

Это конечно хорошо, но хочу немного критики.. вынеси элементы в разные процедуры и например по нажатию клавиши перерисовывай не все окно а только вызывай нужную функцию и тогда перерисовку почти не будет видно)

Автор:  IgorA [ Сб фев 14, 2009 12:55 am ]
Заголовок сообщения:  Re: текстовый редактор

Veliant
Цитата:
по нажатию клавиши перерисовывай не все окно а только вызывай нужную функцию и тогда перерисовку почти не будет видно

На форуме я подобные предложения видел, но пока перерисовать часть окна у меня почему-то не удавалось. Может я что-то еще не знаю об работе системы :(
Например я пишу процедуру:
Код:
Red_MainWnd:
  push eax ebx
  mcall 12,1 ;готовлюсь к рисованию

  xor eax,eax
  mov ebx,10*65536+460
  mov ecx,10*65536+230
  mov edx,[sc.work]
  or  edx,0x73000000
  mov edi,hed
  mcall ;прорисовываю контур окна

  call draw_main_win ;прорисовываю в отдельной функции измененную часть окна

  mcall 12,2 ;кидаю из контекста на экран
  pop ebx eax
  ret ;возвращаюсь обратно в вызвавшую функцию

И оно не работает. По идее, на сколько я понимаю должно работать, или я что-то упустил ?

Автор:  Heavyiron [ Сб фев 14, 2009 6:16 am ]
Заголовок сообщения:  Re: текстовый редактор

То, что ты выложил - это только начало, гораздо важнее при изменении какой-то области вызывать не полностью Red_MainWnd, а, например, ту самую draw_main_win, в которой не рисуется ничего лишнего, а только то, что нужно в данный момент, причем чем больше таких подфункций, тем меньшие участки можно перерисовывать. Вообще функцию Red_MainWnd стоит вызывать только при старте программы и как реакцию на системную перерисовку окна, во всех остальных случаях использовать подфункции.

Автор:  IgorA [ Сб фев 14, 2009 12:30 pm ]
Заголовок сообщения:  Re: текстовый редактор

Понял я в чем была проблема. Дополнительную функцию перерисовки я поставил сразу за основной, перед входом в главный цикл, потому и глючило. А я подумал что может как в Виндовсе контекст какой для рисования нужно готовить, а оказывается все проще чем я думал, сразу рисую что надо ... :D .

Мигать стало меньше.

Автор:  mike.dld [ Сб фев 14, 2009 1:37 pm ]
Заголовок сообщения:  Re: текстовый редактор

IgorA писал(а):
можно работать с файлами больше 65 Кб

Только что открыл файл размером 700КБ (12000+ строк). Что я делаю не так? Или это замечание к Tinypad'у не относится?..

P.S.: Кроме undo/redo я пока что не вижу причин начинать что-то новое (легче добавить в Tinypad). Есть что-то ещё, о чём ты не говоришь?

Автор:  IgorA [ Сб фев 14, 2009 2:35 pm ]
Заголовок сообщения:  Re: текстовый редактор

Дело в том что один файл у меня есть 360Кб, при открытии которого у меня глючит ОС.
Раз дело не в размере, то я подправлю свое сообщение.

Автор:  diamond [ Сб фев 14, 2009 2:47 pm ]
Заголовок сообщения:  Re: текстовый редактор

Цитата:
Дело в том что один файл у меня есть 360Кб, при открытии которого у меня глючит ОС.

Даже на легендарном ЛОРе телепатов никому не удаётся заставить работать, они постоянно в отпуске, а здесь их вообще отродясь не было...
В последнем дистре это проявляется? Скопировать файл в файловых менеджерах удаётся (желательно попробовать все)? Как именно начинает глючить? Глючит только tinypad или kfar'овский редактор тоже?

Автор:  mike.dld [ Сб фев 14, 2009 2:51 pm ]
Заголовок сообщения:  Re: текстовый редактор

Напиши в личку, что значит "глючит ОС", разберёмся...

Автор:  IgorA [ Пн фев 16, 2009 4:51 pm ]
Заголовок сообщения:  Re: текстовый редактор

diamond
Глюк был в том что при открытии этого файла пропадал курсор, и я не мог двигать окна без курсора. Повторить глюк у меня не получилось, но раньше он несколько раз был.
Файл копируется удачно, думаю наверно что-то было не то в системе, TinyPad тут не причем, а я подумал на него потому что при открытии файла глючило. Наверное какая-нибудь программа портила память, как результат на других программах вылазило.

Немного обновил TextEdit
1) мерцать стало меньше, но все же еще можно оптимизировать
2) добавил прокрутку по строкам (для вертикального скролинга заготовил 2 кнопки, а так по клавиатуре PageUp PageDown)
3) меняются размеры окна с текстом в зависимости от procinfo.client_box
4) убрал один глюк

Автор:  Mario [ Пн фев 16, 2009 4:57 pm ]
Заголовок сообщения:  Re: текстовый редактор

IgorA
Весьма рекомендую обратить внимание на тему:
viewtopic.php?f=2&t=1220
То что там заявлено не шутка и если ты не будешь торопится, то немалую часть работы по коду можно будет не делать.
Разумеется это лишь в том случае, если это не очередная поделка на пару недель, а потом забили на это дело...

Автор:  IgorA [ Пн фев 16, 2009 7:26 pm ]
Заголовок сообщения:  Re: текстовый редактор

Mario
В том, что надо стремится все стандартизировать ты прав. Общие компоненты это хорошо.
Но дело в том что скролинги от andrew_programer я не взял по 2 причинам:
1) вертикальный и горизонтальный отличаются по оформлению, не красиво что один будет квадратный а другой скругленный
2) она (библиотека) давно не развивается и вроди не доделана до конца
А компонент EditBox я взял от Lrz. Он говорит, что хочет сделать стандартный скролинг, этого я не знал, спасибо тебе за ссылку.
В любом случае почти во всех программах, которые я видел, скролинги делались через кнопки системной функции 8 у меня пока нет другого выхода :?

Оффтопик: Открой код ZSea и может я из него возьму менюшку :wink: и для Lrz меньше работы будет (меню он тоже хочет добавить в box_lib.obj).

Автор:  Mario [ Пн фев 16, 2009 9:16 pm ]
Заголовок сообщения:  Re: текстовый редактор

IgorA
Вообще то в теме обсуждалась BOX_LIB, а не LIBGUI и соответственно речь о компонентах от andrew_programer не шла.
Код zSea я открывать не буду, но вот макросы компонентов SCROLLBAR, DINAMIC BUTTON и MENU BAR будут интегрированы в BOX_LIB.
Использовать бибилотеку можно даже не имея исходников, но поскольку я не "собака на сене", то исходники данных компонентов будут выложены под лицензией аналогичной BSD.
Цитата:
и для Lrz меньше работы будет

Вообще то открою страшную тайну - речь шла о моих компонентах, поскольку написание аналогичных компонентов в приемлмые сроки для <Lrz> не реально (у него сейчас совсем другие жизненные трудности).

З.Ы. Еще раз повторяю, если плохо понятно - компоненты встроенные в загружаемый модуль (по другому библиотека) можно использовать и не имея исходника - достаточно иметь документацию и/или пример использования. Это замечательно демонстрируется на KFAR_ARC.OBJ и SORT.OBJ которые есть в архиве zSea и к исходникам которых я не притрагивался (да исходники есть, но раз соблюден принцип "черного ящика" то я с таким же успехом мог бы использовать их не имея исходников).

Автор:  IgorA [ Ср фев 18, 2009 10:34 pm ]
Заголовок сообщения:  Re: текстовый редактор

Сделал несколько доработок (версия 18.02.2009):
1) память под файл bmp выделяю через функции, в связи с чем размер программы уменьшился на 19 Кб
но теперь в KlbrInWin вместо кнопок черные квадраты
2) ввел режим замены символа (вкл. кнопкой Ins)
3) уменьшил мерцание (при движении курсора Вверх/Вниз внутри окна), Влево и Вправо - пока мигает
4) вертик. скролинг немного доработал, но скорее всего буду менять его на библиотечный, нижний пока не развиваю, жду готовых примеров использования библиотеки

---
Добавил файл readme, в котором можно еще кое что прочитать, особенно рекомендую прочитать раздел в нем: *** Некоторые недоработки ***
---
Файл ниже, а серое уже исправил ...

Страница 1 из 17 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/