Board.KolibriOS.org

Official KolibriOS board
It is currently Sun May 19, 2019 10:19 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 44 posts ]  Go to page Previous 1 2 3 Next
Author Message
PostPosted: Sun Jun 08, 2008 11:30 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Круто (про mgtk, хотя рисовался тоже крута ;))
Насколько mgtk реализует функционал gtk ?

_________________
Image


Top
   
PostPosted: Mon Jun 09, 2008 6:39 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
В mgtk под Менуэт (да, именно под Менуэт!) реализовано всё, что нужно для построения простого интерфейса. Отличие от GTK - использование классов. А так есть классы приложения, виджета в общем, а также конкретно битмапа, кнопки (как обычной, так и радио или чекбокса), события, пера, слайдера, текста (ну и может ещё какие-то классы добавились - я библиотеку пол года назад скачивал).


Top
   
PostPosted: Mon Jun 09, 2008 7:05 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Версия 0.4.
Исправлены указанные баги, улучшена работа с памятью.
Пока приостанавливаю разработку этого приложения, переключаюсь на панель задач (viewtopic.php?f=9&t=809&start=15).

Albom, mgtk полезная библиотека, но в прилагавшемся примере у меня не работает GInputLine (возможно, потому что пример скомпилен под Menuet, а не под Koilibri?).


Attachments:
File comment: скомпиленная прога, исходник, файлы данных
graph-0.4.7z [27.54 KiB]
Downloaded 366 times
Top
   
PostPosted: Tue Jun 10, 2008 1:16 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
to barsuk
Я ради интереса скачал mgtk и потестил. В общем фишка такая: текстовое поле воспринимает только латинские буквы и цифры, в общем-то всё кроме кириллицы. Этот контрол (элемент) надо переделать, т.к. работа с клавиатурой в Менуэте и Колибри отличается, да и сам контрол реализован ч\ж.


Top
   
PostPosted: Wed Jun 11, 2008 6:49 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Quote:
контрол реализован ч\ж

как и многое в этой (да и не только этой) ОС! :)

Quote:
текстовое поле воспринимает только латинские буквы и цифры, в общем-то всё кроме кириллицы

а зачем больше? для ввода формул сойдёт!


Top
   
PostPosted: Thu Oct 23, 2008 9:56 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Наконец сумел прикрутить edit_box от <Lrz>. В честь этого версия 0.5.
И добавил кнопку "Edit", которая открывает указанный файл в tinypad для редактирования.


Attachments:
graph-0.5.7z [18.05 KiB]
Downloaded 160 times
Top
   
PostPosted: Fri Oct 24, 2008 7:31 am 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
Что-то я компонента не наблюдаю в программе при запуске. В самом бинарнике есть обширные области инициализированные как 0х0 О_о . Если нужен кусок памяти, можно попросить у системы выделить его, в крайнем случае инициализировать область в конце программы. К примеру, так:
- иницализация массива из 500 байт в конце программы

Code:
use32                ; транслятор, использующий 32 разрядных команды
    org 0x0                 ; базовый адрес кода, всегда 0x0
    db 'MENUET01'           ; идентификатор исполняемого файла (8 байт)
    dd 0x1                  ; версия формата заголовка исполняемого файла
    dd start                ; адрес, на который система передаёт управление
                            ; после загрузки приложения в память
    dd i_end      ; размер приложения
    dd i_end      ; Объем используемой памяти, для стека отведем 0х100 байт
    dd i_end      ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
    dd 0x0,0x0                ; указатель на строку с параметрами.

start:
.....
array_of_500:
rb 500 ; резервирует 500 байт
align 16
rb 0x100 ; это место для стека
i_end:

Вот такая последовательность обеспечит инициализацию 500 байт за кодом приложения и без включения кода типа 0x0 в бинарник. Конечно, перед использованием, нужно очистить массив.


Last edited by <Lrz> on Fri Oct 24, 2008 10:39 am, edited 1 time in total.

Top
   
PostPosted: Fri Oct 24, 2008 10:30 am 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
А я что-то так и не понял, что в архиве: graph.kex (от 23.10), которая не запускается и просто graph, которая запускается нормально, но это версия от 16.06


Top
   
PostPosted: Fri Oct 24, 2008 12:35 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
<Lrz>, а чем плох такой подход: выделять массив как придется, а затем сжимать kpack'ом, и все нули сожмутся в несколько байт?

Heavyiron wrote:
А я что-то так и не понял, что в архиве: graph.kex (от 23.10), которая не запускается и просто graph, которая запускается нормально, но это версия от 16.06

Просто graph попал по ошибке, это старая версия. Новая - graph.kex. Для запуска необходим box_lib.obj. Если используется эмулятор KlbrInWin, box_lib.obj нужно поместить на рамдиск.


Attachments:
File comment: вот так это выглядит
graph0.5.PNG
graph0.5.PNG [ 5.93 KiB | Viewed 4041 times ]
Top
   
PostPosted: Fri Oct 24, 2008 12:47 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
barsuk
1. Если нет kpack, то размер приложения увеличивается.
2. Если тебе нужен массив данных, то его можно выделять в стеке, или как я предложил (для небольших данных). Твой подход, не совсем правильный, т.к. пользователь не всегда использует kpaсk.
Все это имхо. Я не использую области в коде, когда мне нужно выделить значительные участки памяти.


Top
   
PostPosted: Fri Oct 24, 2008 1:11 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
barsuk

Если надо динамически выделять память то смотри ф. 68.11 68.12 68.13
P.S. Эту память не надо обнулять.


Top
   
PostPosted: Fri Oct 24, 2008 2:20 pm 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
Пример, когда не нужно объявлять данные посреди кода прост: может случиться так, что в результате недостаточности проверок, данные затрут код. Утверждение, конечно же, не относится к константным инициализированным данным.

_________________
in code we trust


Top
   
PostPosted: Fri Oct 24, 2008 4:31 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
<Lrz>, расположение данных за кодом просто осуществить в FASM и непонятно как в Visual C++, так что использую динамическую память (но для буфера для параметров вызова приложения этот способ не годится).
Serge, в модулях Колибри для С++ была реализация malloc/free через функцию 64. Я переписал их под 68.11/68.12 (раз они предпочтительнее для использования).
mike.dld, если объявить данные после кода, они в такой ситуации выйдут за границы выделенной памяти или затрут другие данные... Проверки важны в любом случае, но затирание кода, имхо, легче заметить (по падению приложения), чем затирание других данных.


Top
   
PostPosted: Sat Oct 25, 2008 9:57 am 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
barsuk wrote:
Для запуска необходим box_lib.obj. Если используется эмулятор KlbrInWin, box_lib.obj нужно поместить на рамдиск.

Так он есть в папке sys/lib, или у тебя какая-то своя версия? Если такая же, как в eolite и htmlview, то ИМХО не нужно городить огород из бокс-либов в каждой папке, а прописать в программе путь к /rd/1/lib/box_lib.obj. К тому же программа перестала понимать параметры запуска - если запускать из eolite файлы *.cvs, то открывается пустое окно программы, типа файл не загружен.


Top
   
PostPosted: Sat Oct 25, 2008 4:39 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Теперь box_lib.obj берется из /sys/lib/. Годится любая версия, но я тестировал с последней (29.09.2008).
С параметрами запуска был баг. Теперь они работают как нужно.


Attachments:
graph-0.51.7z [7.84 KiB]
Downloaded 170 times
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 44 posts ]  Go to page Previous 1 2 3 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


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