Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс окт 22, 2017 4:38 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 240 сообщений ]  На страницу Пред. 110 11 12 13 1416 След.
Автор Сообщение
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Вс окт 21, 2007 9:18 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 4:16 pm
Сообщения: 426
> Как более правильно назвать эту функцию ?
Могу предложить такой вариант:
ПожалуйстаЕслиВасНеЗатруднитПереместитеЭтотКомпонентВУказаннуюМноюПозициюСпасибо().

..bw


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пн окт 22, 2007 10:13 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Хм... Библиотека использует старую версию EditBox, следовательно работа EditBox не корректна. Есть баги, при выделении текста в боксе, и при выходе курсора мыши за пределы окна программы, выделение становиться не корректным, в дальнейшем программа зависает :(. При одновременном вводе с клавиатуры значений и выделение мышкой текста, программа падает. Т.к. в коде представленном в библиотеке LibGui нет блокировки на это событие, в последней версии Edit_box этот баг поправлен. В моем примере библиотеки данных багов нет. Может стоит придти к определенному соглашению ?
English:
So, the library use old version of the module Edit_Box, consequently functioning of the module Edit_Box is not correct now. I find the bugs! If you will be select a text in the component and your cursor of mouse will out the window of the example program, work of the programm will be not correct. If you select the text and type any key you can receive a bug. Because in the code of library LibGui content not blocking of the event in source code. I fixed this bugs in my module of Edit_Box. You can see source in my example Library. Url is http://www.lrz.land.ru/dowload/BOX_LIB.7z.
In source of my library is not this bugs. Maybe can come we to an agreement?
P.S I'm sorry for my poor English.


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пн окт 22, 2007 12:24 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Цитата:
Хм... Библиотека использует старую версию EditBox, следовательно работа EditBox не корректна. Есть баги, при выделении текста в боксе, и при выходе курсора мыши за пределы окна программы, выделение становиться не корректным, в дальнейшем программа зависает :(. При одновременном вводе с клавиатуры значений и выделение мышкой текста, программа падает. Т.к. в коде представленном в библиотеке LibGui нет блокировки на это событие, в последней версии Edit_box этот баг поправлен. В моем примере библиотеки данных багов нет. Может стоит придти к определенному соглашению ?


Правильно, среди описанных изменений в libGUI нет нового EditBox-а. Алексей(<Lrz>), я же вам в письме написал:

Цитата:
Встраивать компонент EditBox я буду несколько позже.Так как через месяц экзамены, а потом писать диплом.Вот после экзаменов наверное и займусь встраиванием компонента.

Вы читали письмо ?
У меня в начале ноября экзамены. Сейчас готовлюсь к зачётам и экзаменам.

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пн окт 22, 2007 1:19 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Ах да, значит я уже заработался, sorry. Я не внимателен. Я хочу уточнить каким образом мы придем к соглашению по обработчику мышки. Если ты будешь передавать координаты мышки в Editbox, то они должны учитывать глобальные координаты т.е. координаты относительно всего экрана. Если это не сделать, то выделять можно будет только в пределах активного окна, и при выходе за пределы выделение не будет работать.

Translate to English:
Oh, I'm sorry, I was innattentiveness. I want more precise. Why will be we to co-ordinate consensus about the handler of mouse? If you will pass the handler of mouse in the module Editbox, then it will take a global handler of screen. If you don't it, then you can select text only active window's example of the program and no select text if your cursor of mouse out of windows of the example module. Therefore work of the program will be not correct.
If you don't understand me, you can ask me again.
If you find any mistakes, please correct me.


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Сб фев 09, 2008 5:05 am 
Не в сети

Зарегистрирован: Пн май 01, 2006 10:12 pm
Сообщения: 349
Небольшая цитатка.. эту тему я уже правда поднимал
Цитата:
[04:45] <Kohlrak_afk> note to self: Writer of libGUI can't spell create
[04:53] <mikedld> "crate"? :)
[04:54] <Kohlrak_afk> no'
[04:55] <Kohlrak_afk> Craete XD
[04:55] <Kohlrak_afk> same pronunciation XD
[04:56] <mikedld> heh
[04:56] <mikedld> it was "crate" some time ago :))
[04:56] <Kohlrak_afk> XD
[04:56] <Kohlrak_afk> should i even bother using this as is, or should i just wait till some one fixes the typo? XD

_________________
Изображение


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пт фев 22, 2008 11:50 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Существующая версия libGUI очень даже ничего. Спасибо разработчикам. :D
Другое дело, что из документации я половину текста вообще не понял, потому как с ассемблером почти не разобрался.. Очень хотелось бы объяснение всего более простыми словами на каком-нибудь совсем элементарном примере. И еще очень интересно, как можно использовать libGUI вместе с существующими компиляторами - PPro,FreePascal, C-- и т.д.


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пт фев 22, 2008 1:03 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Цитата:
И еще очень интересно, как можно использовать libGUI вместе с существующими компиляторами - PPro,FreePascal, C-- и т.д.


Использовать libGUI в Pascal без надстройки на ассемблере неполучится. Дело в том, что libGUI использует конвенцию stdcall для передачи параметров. Согласно stdcall-у параметры, передаваемые функции, заносятся в стек в обратном порядке, а значения, возвращаемые функцией , передаются через регистр eax. Тоесть:

function(parametr a, parameter b, parameter c)

в стек заносются так(псевдо ассемблер)

push c
push b
push a

Конвенцию stdcall поддерживают например C и C++, а вот Pascal использует прямой способ передачи параметров. И параметры для вешеприведённой функции он занесёт в стек так:

push a
push b
push c

Поэтому надо надстойку на ассемблере, которая будет "переворачивать" порядок передачи аргументов.

А вот насчёт C-- незнаю. Наверное он поддерживает stdcall. Тут нужно уточнять у знатоков C--.
Sorcerer, есть пример на C. Он немного подустарел, но если нужно, я могу сделать новый простой пример по использованию libGUI в С. Там главное понять принцип работы с ней, а GUI компоненты различаются только содержимым структур. Сам принцип работы одинаков для всех компонентов.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пт фев 22, 2008 3:17 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Цитата:
Он немного подустарел, но если нужно, я могу сделать новый простой пример по использованию libGUI в С. Там главное понять принцип работы с ней, а GUI компоненты различаются только содержимым структур. Сам принцип работы одинаков для всех компонентов.

очень хотелось бы понять. Заранее благодарен


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пт фев 22, 2008 6:14 pm 
Не в сети

Зарегистрирован: Пн май 01, 2006 10:12 pm
Сообщения: 349
Не проще ли использовать ключевое слово stdcall ?

_________________
Изображение


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Пт фев 22, 2008 10:55 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Цитата:
Не проще ли использовать ключевое слово stdcall ?


Ты о чём?
Если ты думаеш, что я не использую ключевое слово stdcall в программах на C, то посмотри SDK для libGUI (на SVN).
Кстати, в разных компиляторах это ключевое слово несколько поразному пишется, и даже имеет несколько разный синтаксис в оформлении функций, определённых через этот stdcall.
Например в линукс версии GCC(в MinGW непроверял) это слово пишется как stdcall, а в OpenWatcom и MSVC _stdcall.
Для OpenWatcom и MSVC функции libGUI оформлены так:
Код:
void   (_stdcall *ResizeComponent)(void *Control,int new_sizex,int new_sizey);


А для GCC так:
Код:
void   stdcall (*ResizeComponent)(void *Control,int new_sizex,int new_sizey);

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Вт фев 26, 2008 7:27 pm 
Не в сети

Зарегистрирован: Пн май 01, 2006 10:12 pm
Сообщения: 349
сколько лишней инфы. ты о чем вообще?
Цитата:
Использовать libGUI в Pascal без надстройки на ассемблере неполучится. Дело в том, что libGUI использует конвенцию stdcall для передачи

в паскале тоже бывает ключевое слово stdcall и не нужны за этой причиной асм-вставки

_________________
Изображение


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Чт сен 18, 2008 1:20 pm 
Не в сети

Зарегистрирован: Пн янв 07, 2008 11:39 am
Сообщения: 22
чёта я LibGUI скачать не могу. 550 ошибка. И ещё. Мне andrew_programmer давно обещал оформить примерчики на С++ для LibGUI. Думаю все бы захотели посмотреть эти примеры.


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Чт сен 18, 2008 4:31 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
В настоящий момент LibGUI имеет баги, автора данной либы давно не видно, вообще либа доступна на SVN


Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Чт сен 10, 2009 11:26 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Наконец после долгого простоя проекта представляю вам новую библиотеку libGUI.
Сразу скажу, что в ней ещё много чего нужно сделать. Некоторые вещи реализованы в
начальной стадии, а некоторые реализованы пока что только у меня в голове :) .
Но предыдущая ассемблерная libGUI по сравнению с текущей libGUI на С - это игрушка.
Библиотека libGUI похожа на GTK+, но есть и значительные отличия.Для установки
библиотеки её нужно положить в дирикторию /sys/lib/. Перед запуском демок откройте
доску отладки на вкладке user. Туда некоторые демки выводят информацию о поведении
контролов.
Просьба к дизайнерам. Разработайте пожалуйста дизайн для GUI компонентов libGUI,а я
его запрограммирую.
Вот пример простейшей демки на C использующей libGUI:
Код:
/*
   hello world example
*/

#include "libGUI.h"

#define TRUE      1
#define FALSE      0

void   callback_func_delete_window(header_t *control,void *data)
{
   QuitLibGUI((parent_t*)control);
}

int main(int argc, char *argv[])
{
   parent_t      *window;
   gui_text_data_t   txtdata;
   gui_text_t      *text;

   //load libGUI library
   LoadLibGUI(NULL);//load library from default system path
   //create main window
   window=CreateWindow();
   //change size of window
   SetWindowSizeRequest(window,92,46);
   //set callback function for button close window
   SetCallbackFunction(window,DELETE_EVENT,&callback_func_delete_window,NULL);
   //create control text
   txtdata.x=5;
   txtdata.y=5;
   txtdata.font=NULL;//use default system libGUI font
   txtdata.background=TRUE;//use background for text
   txtdata.color=0xffffff;//text color
   txtdata.background_color=0xff8000;//background color
   txtdata.text="Hello world!";
   text=CreateText(&txtdata);
   
   //pack control text in window
   PackControls(window,text);

   //start libGUI main loop
   LibGUImain(window);
}

Есть SDK на С. SDK для Assembler-а я ещё не успел сделать. Документацию пока что не успел написать, но постараюсь как можно быстрее сделать.
Вот список доступных функций библиотеки:
Код:
DWORD stdcall (*LibGUIversion)(void);

char  stdcall (*InitLibGUI)(void);
void  stdcall (*LibGUImain)(parent_t *WindowParent);
void  stdcall (*QuitLibGUI)(parent_t *window);
void* stdcall (*CreateWindow)(void);
void  stdcall (*SetWindowSizeRequest)(parent_t *WindowParent,int size_x,int size_y);
void  stdcall (*PackControls)(void *Parent,void *control);
void  stdcall (*DestroyControl)(void *control);
void  stdcall (*SetControlSizeRequest)(void *Control,int new_size_x,int new_size_y);
int   stdcall (*GetControlSizeX)(void *Control);
int   stdcall (*GetControlSizeY)(void *Control);
void  stdcall (*SetControlNewPosition)(void *Control,int new_x,int new_y);
int   stdcall (*GetControlPositionX)(void *Control);
int   stdcall (*GetControlPositionY)(void *Control);
void* stdcall (*SetFocuse)(void *Control);
void  stdcall (*RedrawControl)(void *Control);
void  stdcall (*SpecialRedrawControl)(void *Control);
gui_callback_t* stdcall (*SetCallbackFunction)(void *Control,
               int event_name,void *callback_func,
               void *callback_func_data);
void  stdcall (*BlockCallbackFunction)(void *Control,gui_callback_t *callback_ID);
void  stdcall (*UnblockCallbackFunction)(void *Control,gui_callback_t *callback_ID);
void  stdcall (*SetIDL_Function)(parent_t *Parent,void *function,void *function_data);
void  stdcall (*DestroyIDL_Function)(parent_t *Parent);
gui_timer_t* stdcall (*SetTimerCallbackForFunction)(parent_t *parent_window,
               int time_tick,void *func,void *func_data);
void stdcall (*DestroyTimerCallbackForFunction)(gui_timer_t *timer);
gui_callbackevent_t* stdcall (*SetCallbackFunctionForEvent)(parent_t *parent_window,
               int event_type,void *func,void *func_data);
void stdcall (*DestroyCallbackFunctionForEvent)(gui_callbackevent_t *callback_event);
gui_button_t* stdcall (*CreateButton)(gui_button_data_t *info_for_control);
gui_button_t*   stdcall (*CreateButtonWithText)(gui_button_data_t *info,char *txt);
gui_progress_bar_t* stdcall (*CreateProgressBar)(gui_progress_bar_data_t *info_for_control);
void stdcall (*SetProgressBarPulse)(gui_progress_bar_t *ProgressBar,int time_update);
void stdcall (*ProgressBarSetText)(gui_progress_bar_t *pbar,char *txt);
char* stdcall (*ProgressBarGetText)(gui_progress_bar_t *pbar);
gui_scroll_bar_t* stdcall (*CreateHorizontalScrollBar)(gui_scroll_bar_data_t *info_for_control);
gui_scroll_bar_t* stdcall (*CreateVerticalScrollBar)(gui_scroll_bar_data_t *info_for_control);
gui_scrolled_window_t* stdcall (*CreateScrolledWindow)(gui_scrolled_window_data_t *info_for_control);
void stdcall (*ScrolledWindowPackControls)(gui_scrolled_window_t *parent,void *Control);
gui_image_t* stdcall (*CreateImage)(gui_image_data_t *info_for_control);
gui_text_t* stdcall (*CreateText)(gui_text_data_t *info_for_control);
void stdcall (*TextBackgroundOn)(gui_text_t *Text);
void stdcall (*TextBackgroundOff)(gui_text_t *Text);
font_t* stdcall (*LoadFont)(char *fullfontname);
void stdcall (*FreeFont)(font_t *font);


Если не у кого нет возражений, то залью библиотеку на SVN.


Вложения:
Комментарий к файлу: screenshoot of some demos
SCREEN1.jpg
SCREEN1.jpg [ 95.24 КБ | 2095 просмотров ]
Комментарий к файлу: New libGUI library written an pure C with inline assembler.
libGUI_C.7z [78.38 КБ]
73 скачивания

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!
Вернуться к началу
 Заголовок сообщения: Re: libGUI
СообщениеДобавлено: Чт сен 10, 2009 11:45 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Хочу добавит, что переключение по TAB контролов, поддерживающих фокус ввода с клавиатуры, частично работает(демка main). Не доделано пока только для случая, когда есть 1 дочерний контрол окна, поддерживающий фокус ввода, и когда у этого контрола много потомков тоже поддерживающих фокус ввода.

Кто нибудь знает готовые алгоритмы выделения кучи малого размера по 48-128 байт?
А то сейчас под структуры в 20-140 байт выделяется одна страница в 4096 байт. Это расточительство.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 240 сообщений ]  На страницу Пред. 110 11 12 13 1416 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB