box_lib.obj - библиотека gui компонентов

Discussing libraries simplifying applications development
  • vkos wrote:А KDE зря старый.
    Leency, vkos и все кто еще хочет продолжить оффтоп - просьба здесь не продолжать. Если есть вопрос по теме пишите, все остальное в личку.
  • Mario
    Хорошая работа. У FileBrowser'а достаточно большие иконки, что не может не радовать. Рекомендую оставлять слева от иконки немного свободного места (белого пространства).
  • Сделайте, пожалуйста, пример использования скролла и меню на Си.
    Из хаоса в космос
  • Leency
    Я не достаточно знаю синтаксис Си чтобы писать переходные части, "обертки". Может кто и напишет.
    В принципе оно должно быть аналогично используемым для Editbox, также передается просто указатель на структуру блока данных.
  • Leency wrote:Сделайте, пожалуйста, пример использования скролла и меню на Си.
    Я понимаю нужны обертки для С-- ? Или может Leency переведет свои проекты на MSVC++, или GCC ?
    Я могу постараться и написать обертки для нужного компилятора.
  • Спасибо что откликнулся. Хотя бы для MSVC.
    Из хаоса в космос
  • Моя работа над компонентом FileBrowser близка к завершению, однако хотел поинтересоваться - может кому нужно отображение компонента без подгрузки файла иконок? Т.е. все вместо иконок могут отрисовываться три рисунка: папка, файл, кнопка выхода. Навроде как у Опера под Linux:
    opera10_open_dialog_small.png
    opera10_open_dialog_small.png (30.64 KiB)
    Viewed 7880 times
    Конечно нарисованные с помощью функций Kolibri кнопки будут не так красивы, как натуральные иконки.
    Из плюсов такого подварианта:
    1) Не нужны иконки
    2) Экономия памяти
    3) Теоретически быстрее отрисовка, хотя не сильно.
    4) Не нужно морочиться с дополнительным кодом.

    Спрашиваю потому, что прикручивать вызов LibImg для иконок в примере использования контрола не буду, поскольку пользуюсь своими библиотеками, входящими в состав zSea, а разбираться с неиспользуемой библиотекой имеющей другой RAW формат желания и времени не имею. Если кто захочет использовать LibImg - ему придется прикручивать самому.
    Однако реализовывать лишний код для вывода без картинок, без отсутсвия потребности в нем со стороны других программистов, тоже желания не имею.

    Ну, и на закуску текущий вид компонента. Это не диалоговое окно, окно тоже будет как доделаю компонент.
    boxlib_fb_control_small.png
    boxlib_fb_control_small.png (14.06 KiB)
    Viewed 7883 times
  • PhoSor
    Как мы заботимся о судьбе ближнего своего! (смайлика валяющегося на спине к сожалению на форуме нету)
    Приведи для начала, хоть одну ссылку на такой патент или авторское право зарегистрированное в Российской Федерации.

    Как аргументы:
    1) Иконки идут под лцензией LGPL2.
    2) Мой код для BoxLib идет под лицензией BSD, которая вполне себе совместима с LGPL2.
    3) Если даже возникнут вопросы - кто сказал, что я буду выкладывать код именно с этими иконками

    З.Ы. А если я, не дай Бог, возьму и выложу скриншот с иконками от Виндовс 7 - меня наверное вообще будут пытать перед смертью. О Господи страшно то как! А кстати автор иконок нарушил священное право Мелкософта на их флаг! Нет он сделал хуже - он выложил изображение похожее на их флаг под лицензией LGPL2!!!!! Святотатство!!!!
    И о БОЖЕ они убили Кенни один из логотипов подозрительно похож по оформлению на флаг одной нации, повернутый на 45 градусов... о майн гат! нас засудят!!! ааааа!!!! :mrgreen:

    З.З.Ы. Чето уважемый не похож ты на заинтересованного программиста, скорее на тролля.
  • фиг с ними иконками... можно прикрутить потом...
    а за работу спасибо...

    з.ы. можно примерный эскиз как примерно будет выглядить окончательный вариант FileBrowser???
  • s1n
    FileBrowser это компонент, а не законченная вещь навроде OpenDialog. На основе его можно сделать OpenDialog, SaveDialog, применить для построения файлового менеджера. Компонент обрабатывает события перерисовки, мышки и клавиатуры.
    В текущем виде это прямоугольник (как на скришоте) со списком файлов и иконками. Практически все размеры регулируются, кроме разве размеров шрифта, но когда будет закончена Font_Lib от <Lrz>, со временем прикручу, так что шрифты тоже будут меняться.
    Пока вид только такой как на скришоте (один столбец файлов), со временем можно сделать отображение в несколько столбцов (как в стандартных Виндовс и Линукс диалогах открытия и сохранения). Много опционально и многое настравиваемо:
    Вот текущий блок данных:

    Code: Select all

    macro	use_file_browser
    {
    file_browser:
    fb_type				equ dword [edi]		;dword
    fb_size_x			equ [edi+4]		;word
    fb_start_x			equ [edi+6]		;word
    fb_size_y			equ [edi+8]		;word
    fb_start_y			equ [edi+10]		;word
    fb_icon_size_y			equ word [edi+12]	;word
    fb_icon_size_x			equ word [edi+14]	;word
    fb_line_size_x			equ word [edi+16]	;word
    fb_line_size_y			equ word [edi+18]	;word
    fb_type_size_x			equ word [edi+20]	;word
    fb_size_size_x			equ word [edi+22]	;word
    fb_date_size_x			equ word [edi+24]	;word
    fb_attributes_size_x		equ word [edi+26]	;word
    fb_icon_assoc_area		equ dword [edi+28]	;dword
    fb_icon_raw_area		equ dword [edi+32]	;dword
    fb_resolution_raw		equ dword [edi+36]	;dword
    fb_palette_raw			equ dword [edi+40]	;dword
    fb_directory_path_area		equ dword [edi+44]	;dword
    fb_file_name_area		equ dword [edi+48]	;dword
    fb_select_flag			equ dword [edi+52]	;dword
    fb_background_color		equ dword [edi+56]	;dword
    fb_select_color			equ dword [edi+60]	;dword
    fb_seclect_text_color		equ dword [edi+64]	;dword
    fb_text_color			equ dword [edi+68]	;dword
    fb_reduct_text_color		equ dword [edi+72]	;dword
    fb_marked_text_color		equ dword [edi+76]	;dword
    fb_max_panel_line		equ dword [edi+80]	;dword
    fb_select_panel_counter		equ dword [edi+84]	;dword
    fb_folder_block			equ dword [edi+88]	;dword
    fb_start_draw_line		equ dword [edi+92]	;dword
    fb_start_draw_cursor_line	equ word [edi+96]	;word
    fb_folder_data			equ dword [edi+98]	;dword
    fb_temp_counter			equ dword [edi+102]	;dword
    fb_file_name_length		equ dword [edi+106]	;dword
    fb_marked_file			equ dword [edi+110]	;dword
    fb_extension_size		equ dword [edi+114]	;dword
    fb_extension_start		equ dword [edi+118]	;dword
    fb_type_table			equ dword [edi+122]	;dword
    fb_ini_file_start		equ dword [edi+126]	;dword
    fb_ini_file_end			equ dword [edi+130]	;dword
    fb_draw_scroll_bar		equ dword [edi+134]	;dword
    fb_font_size			equ word [edi+138]	;dword
    fb_mouse_keys			equ dword [edi+140]	;dword
    fb_mouse_keys_old		equ dword [edi+144]	;dword
    fb_mouse_pos			equ dword [edi+148]	;dword
    fb_mouse_keys_delta		equ dword [edi+152]	;dword
    fb_mouse_key_delay		equ dword [edi+156]	;dword
    fb_mouse_keys_tick		equ dword [edi+160]	;dword
    fb_start_draw_cursor_line_2	equ word [edi+164]	;dword
    fb_all_redraw			equ dword [edi+166]	;dword
    fb_selected_BDVK_adress		equ dword [edi+170]	;dword
    fb_key_action			equ dword [edi+174]	;dword
    ;---------------------------------------------------------------------
    и т.д.
  • В опен и сейв диалогах может пригодиться такая функциональность файл-браузера, как отображение определенного списка расширений, т.е файлов только с этими расширениями. Например графическому просмотрщику и редактору совершенно неинтересны, например, исполнимые файлы. Также этот список может меняться во время работы компонента - во многих вендовых прогах есть отдельный селект со списком поддерживаемых форматов (на самом деле это очень удобно в случаях когда прога поддерживает кучу форматов, и куча же файлов разных форматов в папке лежит. но это уже оффтоп наверное).
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Mario
    понятно все.. а скроллинг есть??
    з.ы. фильтр по имени и правда очень полезная штука..
  • s1n: "а скроллинг есть??"
    - судя по строчке
    "fb_draw_scroll_bar equ dword [edi+134] ;dword"
    либо есть, либо планируется
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Мде... чувствуется мало кто, кроме меня и Алексея, понял идеологию BoxLib.

    Gluk
    Задача FileBrowser как компонента - отображать информацию полученную в формате функции 70.1, с какого по какой слот, каким шрифтом, какими размерами, а уж что в ней будет не его забота - это забота дополнительного кода, подать то что нужно. Это задача макроса, через который будет реализован OpenDialog, или просто файла подключаемого через include 'xxxxx'. Также как подготовить область с иконками, загружать выбираемые папки через функцию 70.1, выделять и освобождать память, запихивать в блок данных нужные параметры.
    Однако согласен функциональность полезная и реализовать предстоит еще дохрена и больше. ;-)

    s1n
    а скроллинг есть??
    Есть возможность отобразить с определенного слота БДВК по определенный слот БДВК, структуру данных полученную в формате функции 70.1, а выводить скроллбар или не выводить решает дополнительный код который будет связывать между собой компонеты FileBrowser и ScrollBar и который находится за пределами библиотеки BoxLib.

    З.Ы. Мы похоже говорим о разных вещах немножко: я о про "белки", "жиры", "углеводы", а вы мне - "а вот курятина питательней салата". Кто бы спорил, но курицу то сначала надо: вырастить, зарезать, ощипать, разделать, термически обработать и приправить вкусовыми добавками вроде соли и специй. :mrgreen:
  • Who is online

    Users browsing this forum: No registered users and 10 guests