Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт июн 27, 2017 8:22 am

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




Начать новую тему  Ответить на тему  [ 43 сообщения ]  На страницу Пред. 1 2 3
Автор Сообщение
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср ноя 04, 2015 12:48 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
Если у кого есть желание и возможность помочь прикрутить меню к animage, то вот результат некоторой работы
Вложение:
animage.png
animage.png [ 10.86 КБ | 1785 просмотров ]

Из явных косяков:
-смещены некоторые элементы окна из-за того что в стилях окна теперь прописано рисовать в координатах рабочей области
-отвалился курсор в рабочей области
-при выборе некоторых пунктов меню происходит вылет (например Undo)

P.S. к сожалению код animage сложен для поддержки и дальнейшего развития


Вложения:
animage.zip [49.77 КБ]
21 скачивание
Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср ноя 04, 2015 3:38 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1159
Видимо, ещё один Tinypad...

А по поводу несрабатывания пунктов меню мысли есть?


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Вс ноя 29, 2015 12:22 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Вопрос по меню, какого размера структуру следует давать в функцию kmenu_init ?
Старую на 40 байт или новую на 192 байта? Потому как я заметил что в редакторе t_edit у меня структура старого образца system_colors на 40 байт.


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Пн ноя 30, 2015 12:01 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
Расширенную, на 192 байта. В последней версии библиотеки, можно передать NULL


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Вс фев 14, 2016 11:42 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
rev 6224
Нашел и обновил очень старый пример использования меню (аж со 180-й ревизии не менялся).
Там была на кнопках какая-то непонятная штука похожая на меню. Заменил его на библиотечное kmenu.


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Пт фев 19, 2016 5:15 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
Исправил небольшой баг с мышкой

Цитата:
если запустить техt editor (расположен на боковой панели) и после этого перекрыть его заголовок
заголовком другого приложения (окна), то он всё равно будет выводить выбранные меню при курсоре мыши над ними


Вложения:
kmenu.obj [9.01 КБ]
14 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Пн авг 22, 2016 3:18 am 
В сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1058
Где можно найти объявление типов t_rect и t_font?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Пн авг 22, 2016 11:05 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
В файле api.h (например, здесь).

typedef struct {
uint16_t left, top, right, bottom;
} t_rect;


typedef struct {
int type;
uint32_t color;
union {
uint32_t bgcolor;
void *buffer;
};
} t_font;


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср окт 26, 2016 1:52 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
Исправлена установка маски событий из-за чего родительское окно получало события от мышки даже в неактивном состоянии (http://bugs.kolibri-n.org/index.php?id=1)
Небольшие косметические изменения ввиде увеличенных отступов


Вложения:
kmenu.obj [6.79 КБ]
6 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср окт 26, 2016 3:15 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 247
О, лови разработчика!

Есть баг - подменю _второго уровня_ не работает - и не закрывается вовремя и не срабатывает как событие.

Если надо, выложу собранный пример вечером из c-layer


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср окт 26, 2016 3:55 pm 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
Да, пример хотелось бы взглянуть.

Т.к. в моем демо (прикрепил) вроде нет таких проблем


Вложения:
menu_demo [29 КБ]
7 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср окт 26, 2016 4:42 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4088
Работает, спасибо.

P.S. Во время тестирования меню, приложение один раз вылетело, воспроизвести вылет потом так и не удалось.

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


Вернуться к началу
 Заголовок сообщения: Re: libkmenu
СообщениеДобавлено: Ср окт 26, 2016 6:25 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 247
Siemargl писал(а):
О, лови разработчика!

Есть баг - подменю _второго уровня_ не работает - и не закрывается вовремя и не срабатывает как событие.

Если надо, выложу собранный пример вечером из c-layer

Пока не забыл - пункт Б: если окно приложения не скинованноесоздано без флага "координаты относительно клиентской обл",
то kmenu отрисовывается поверх строки заголовка окна.

Возможно, мы неверно что то используем:
Вот исходник http://websvn.kolibrios.org/filedetails ... _example.c
Структуры тут http://websvn.kolibrios.org/filedetails ... ri_kmenu.h
Спойлер: Показать
Код:
  kmenu_init(NULL);
 
  ksubmenu_t *sub_menu1 = ksubmenu_new();
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Open", 101));
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Save", 102));
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_SEPARATOR, NULL, 0));
  ksubmenu_add(sub_menu1, kmenuitem_new(KMENUITEM_NORMAL, "Exit", 103));
 
  ksubmenu_t *sub_menu2 = ksubmenu_new();
  ksubmenu_add(sub_menu2, kmenuitem_new(KMENUITEM_NORMAL, "Find", 201));
  ksubmenu_add(sub_menu2, kmenuitem_new(KMENUITEM_NORMAL, "Replace", 202));
 
  ksubmenu_t *sub_menu22 = ksubmenu_new();
  ksubmenu_add(sub_menu22, kmenuitem_new(KMENUITEM_NORMAL, "CP1251", 211));
  ksubmenu_add(sub_menu22, kmenuitem_new(KMENUITEM_NORMAL, "UTF-8", 212));
  ksubmenu_add(sub_menu2, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "Encoding", sub_menu22));
 
  ksubmenu_t *main_menu = ksubmenu_new();
  ksubmenu_add(main_menu, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "File", sub_menu1));
  ksubmenu_add(main_menu, kmenuitem__submenu_new(KMENUITEM_SUBMENU, "Edit", sub_menu2));


Здесь kmenuitem_new() и kmenuitem__submenu_new() это одна и та же экспортируемая функция kmenuitem_new, отличается только типом параметра.

Картинка два появляется по щелчку на Encoding, и событий 211, 212 не приходит.

Без исходников не могу поковырять ни пример ни либу (


Вложения:
kmenu2.png
kmenu2.png [ 1.87 КБ | 1208 просмотров ]
kmenu1.png
kmenu1.png [ 1.95 КБ | 1208 просмотров ]
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 43 сообщения ]  На страницу Пред. 1 2 3

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


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

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


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

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