Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Apr 06, 2020 8:43 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 16 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Sat Jul 18, 2015 2:08 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 262
Здесь буду выслушивать идеи/рекомендации/баги элементов


Top
   
PostPosted: Sat Jul 18, 2015 2:21 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 262
?


Attachments:
File comment: Как вам такая кнопка и события?
example [7.93 KiB]
Downloaded 81 times
Top
   
PostPosted: Sat Jul 18, 2015 2:36 am 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 262
инициализация в Си
button b;
b.click = #onMouseClick;
b.up = #onMouseUp;
b.down = #onMouseDown;
b.move = #onMouseMove;
b.caption = "test";
b.style = "width:150;height:20;top:30;left:30;";
b.create();


Top
   
PostPosted: Sat Jul 18, 2015 8:04 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1266
Можешь ещё скрины выкладывать. В меню, в категории разное есть screenShooter.


Top
   
 Post subject:
PostPosted: Sat Jul 18, 2015 10:54 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1152
Внешний вид сейчас не самое критичное, главное архитектурно все сделать правильно. Можешь следующим меню сделать? Я бы начал в деле обкатывать сие творение, во время рвботы над читалкой.

_________________
я лишь учусь


Top
   
PostPosted: Sat Jul 18, 2015 1:03 pm 
Offline
User avatar

Joined: Sat Sep 27, 2014 2:59 pm
Posts: 102
Дожили... Простое окно, с простой кнопкой - 8kb весит! :roll:


Attachments:
Screenshot.png
Screenshot.png [ 20.18 KiB | Viewed 2623 times ]
Top
   
PostPosted: Sat Jul 18, 2015 1:17 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 262
Yason wrote:
Дожили... Простое окно, с простой кнопкой - 8kb весит! :roll:

я из исходника лексер не убрал, + парсер css. И еще много чего. И без сжатия kpack


Top
   
PostPosted: Sat Jul 18, 2015 10:45 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5110
Вполне приемлимо.

_________________
Через тернии к звездам


Top
   
PostPosted: Mon Jul 27, 2015 4:07 pm 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
Дабы не разводить лишние темы, пример реализации контекстного меню. Есть какие-нибудь замечания?

P.S.
Добавил вариант ввиде obj-библиотеки.

Как использовать
1) Вызываем kmenu_init и передаем ей структуру полученную через 48.3 (позже изменю архитектуру)
2) Создаем используя функцию ksubmenu_new нужное количество объектов меню.
3) Создаем и добавляем к меню новые элементы используя ksubmenu_add в паре с kmenuitem_new.
Функция kmenuitem_new понимает три типа элементов:
KMENUITEM_NORMAL - обычный пункт меню, третьим параметром kmenuitem_new примет ID кнопки, который потом пришлет библиотека по клику на этот пункт меню
KMENUITEM_SEPARATOR - рисуется разделитель
KMENUITEM_SUBMENU - пункт меню указывающий на вложенное меню, третьим параметром kmenuitem_new примет указатель на ksubmenu_t*
4) Для отображения меню вызвать функцию ksubmenu_draw, указав ей какое меню и в каких координатах вывести. Последний параметр всегда 0.

Code:
// код инициализации из примера
kmenu_init(&theme);
   
   menu = ksubmenu_new();
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
   
   submenu1 = ksubmenu_new();
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
   
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu1));
   
   submenu2 = ksubmenu_new();
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
   
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu2));


Для изменения состояния пунктов меню можно изменять параметры is_enabled и is_visible объекта kmenuitem_t.
Также можно назначить свою функцию отрисовки элементов меню, изменив указатель paint объекта kmenuitem_t

Управление мышкой и клавишами курсора + esc/enter


Attachments:
libkmenu.zip [7.91 KiB]
Downloaded 68 times
menu [25 KiB]
Downloaded 62 times


Last edited by Veliant on Mon Jul 27, 2015 6:29 pm, edited 6 times in total.
Top
   
PostPosted: Mon Jul 27, 2015 4:22 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5110
Годно.

_________________
Через тернии к звездам


Top
   
PostPosted: Mon Jul 27, 2015 9:37 pm 
Offline
User avatar

Joined: Wed Apr 15, 2015 11:13 pm
Posts: 262
Veliant wrote:
Дабы не разводить лишние темы, пример реализации контекстного меню. Есть какие-нибудь замечания?

P.S.
Добавил вариант ввиде obj-библиотеки.

Как использовать
1) Вызываем kmenu_init и передаем ей структуру полученную через 48.3 (позже изменю архитектуру)
2) Создаем используя функцию ksubmenu_new нужное количество объектов меню.
3) Создаем и добавляем к меню новые элементы используя ksubmenu_add в паре с kmenuitem_new.
Функция kmenuitem_new понимает три типа элементов:
KMENUITEM_NORMAL - обычный пункт меню, третьим параметром kmenuitem_new примет ID кнопки, который потом пришлет библиотека по клику на этот пункт меню
KMENUITEM_SEPARATOR - рисуется разделитель
KMENUITEM_SUBMENU - пункт меню указывающий на вложенное меню, третьим параметром kmenuitem_new примет указатель на ksubmenu_t*
4) Для отображения меню вызвать функцию ksubmenu_draw, указав ей какое меню и в каких координатах вывести. Последний параметр всегда 0.

Code:
// код инициализации из примера
kmenu_init(&theme);
   
   menu = ksubmenu_new();
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
   
   submenu1 = ksubmenu_new();
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
   
   ksubmenu_add(menu, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu1));
   
   submenu2 = ksubmenu_new();
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 3", KMENUITEM_ID(3)));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 4", KMENUITEM_ID(4)));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, NULL));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 5", KMENUITEM_ID(5)));
   ksubmenu_add(submenu2, kmenuitem_new(KMENUITEM_NORMAL, "ButtonID 6", KMENUITEM_ID(6)));
   
   ksubmenu_add(submenu1, kmenuitem_new(KMENUITEM_SUBMENU, "submenu", submenu2));


Для изменения состояния пунктов меню можно изменять параметры is_enabled и is_visible объекта kmenuitem_t.
Также можно назначить свою функцию отрисовки элементов меню, изменив указатель paint объекта kmenuitem_t

Управление мышкой и клавишами курсора + esc/enter

Не плохо, может лучше меню без создания нового процесса, а с помощью прорисовки?


Top
   
PostPosted: Fri Jul 31, 2015 12:37 pm 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
Попытка реализации главного меню окна


Attachments:
menu [29 KiB]
Downloaded 69 times
Top
   
PostPosted: Fri Jul 31, 2015 1:32 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5110
Вах! Тоже годно :)

Заголовок мелькает. Неплохо бы текст заголовка окна рисовать в картинку скина.

_________________
Через тернии к звездам


Top
   
PostPosted: Fri Jul 31, 2015 1:48 pm 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
Для этих целей было бы удобно, чтоб система позволяла создавать окна, которые не отображались бы на панели задач, и не переводили бы фокус на себя. А при потере фокуса происходило бы закрытие окна.
Тогда будет удобно рисовать меню, всплывающие подсказки, выпадающие списки


Top
   
PostPosted: Sun Aug 02, 2015 11:57 am 
Offline

Joined: Sat Oct 11, 2014 6:06 pm
Posts: 67
pavelyakov wrote:
инициализация в Си
button b;
b.click = #onMouseClick;
b.up = #onMouseUp;
b.down = #onMouseDown;
b.move = #onMouseMove;
b.caption = "test";
b.style = "width:150;height:20;top:30;left:30;";
b.create();


где можно найти код этих классов?

_________________
Чудеса случаются! Это вам любой программист скажет! :)


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 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited