Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
DreamShell lua source code
Автор Сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7141
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 139
Поблагодарили 1179 раз(а) в 734 сообщ.
Сообщение: #27
DreamShell lua source code
Небольшой пример для рисования графических оболочек с помощью DreamShell GUI API.

Код:
-- DreamShell NG lua script
-- GUI test (input and button)



local font

local btn_img = {

normal = nil,
highlight = nil,
pressed = nil,
disabled = nil

}





-- Сделаем функцию для удобного рисования кнопок.
function NormalButton(name, x, y, font, img,  text, func, data)

-- Создаем кнопку.
local button = SDL.GUI_ButtonCreate(name, x, y, 110, 60);

-- Создаем текст.
local label = SDL.GUI_LabelCreate("label", 0, 0, 110, 60, font, text);

-- Наносим текст на кнопку.
SDL.GUI_ButtonSetCaption(button, label);
--SDL.GUI_ObjectDecRef(label);


-- Присваиваем действие к кнопке(функцию которую она выполнит).
--  local cb = SDL.GUI_CallbackCreate(func, nil, data);
--  SDL.GUI_ButtonSetClick(button, cb);
--  SDL.GUI_ObjectDecRef(cb);


-- Устанавливаем картинки к кнопке для разных ее режимов.
SDL.GUI_ButtonSetNormalImage(button, img.normal);
SDL.GUI_ButtonSetHighlightImage(button, img.highlight);
SDL.GUI_ButtonSetPressedImage(button, img.pressed);
SDL.GUI_ButtonSetDisabledImage(button, img.disabled);

return button
end






function callbackf(param)

if param == "Exit" then

SDL.GUI_SetRunning(0);
SDL.GUI_Quit();

end

end



function CreateContents(x, y, w, h)

-- Создаем панель(невидимую) на которой будем рисовать.
local box = SDL.GUI_PanelCreate("box", x, y, w, h);

-- Рисуем форму для ввода текста.
local input = SDL.GUI_TextEntryCreate("button", 20, 305, 200, 30, font, 32);

-- Устанавливаем в форме текст.
SDL.GUI_TextEntrySetText(input, "Exit");

-- Добавляем нашу форму в панель.
SDL.GUI_ContainerAdd(box, input);
--   SDL.GUI_ObjectDecRef(input);

-- Рисуем кнопку с помощью нашей функции.
local button = NormalButton("TestButton", 260, 350, font, btn_img, "OK", callbackf, SDL.GUI_TextEntryGetText(input));

SDL.GUI_ContainerAdd(box, button);
--   SDL.GUI_ObjectDecRef(button);


return box;
end




function Init_gui(w, h)

-- Берем экран GUI.
local screen = SDL.GUI_GetScreen();

-- Загружаем шрифт.
font = SDL.GUI_FontLoadTrueType("/cd/fonts/comic.ttf", 18);

-- Загружаем фоновую картинку.
local background = SDL.GUI_SurfaceLoad("/cd/image/back/water.jpg");

-- Загружаем картинки для нашей кнопки.
btn_img.normal = SDL.GUI_SurfaceLoad("/cd/image/gui/buttons/normal/normal.png");
btn_img.highlight = SDL.GUI_SurfaceLoad("/cd/image/gui/buttons/normal/highlight.png");
btn_img.pressed = SDL.GUI_SurfaceLoad("/cd/image/gui/buttons/normal/pressed.png");
btn_img.disabled = SDL.GUI_SurfaceLoad("/cd/image/gui/buttons/normal/disabled.png");

-- Проверяем, загрузили ли мы нужные ресурсы.
if font == nil then return 0 end
if background == nil then return 0 end
-- И так далее :)


-- Устанавливаем фон.
SDL.GUI_ScreenSetBackground(screen, background);
--   SDL.GUI_ObjectDecRef(background);


-- Создаем наше творение.
local mainpage = CreateContents(0,0,w,h);
SDL.GUI_ScreenSetContents(screen, mainpage);
--   SDL.GUI_ObjectDecRef(mainpage);


--   SDL.GUI_ObjectDecRef(font);
font = 0;
return 1;
end




-- Закрываем графику DreamShell
DS.ds_draw_shutdown();

-- Устанавливаем режим GUI
DS.conio_set_mode(3, 3);

-- Если играет музыка, остановим ее, иначе лаганет :)
DS.ds_exec_one("ogg stop");

-- Запускаем
if Init_gui(640, 480) then

-- Loop
SDL.GUI_Run();

end


-- Возвращаем режим
DS.conio_set_mode(1, 1);

-- Возвращаем графику DreamShell
DS.ds_draw_init();



Функции которые находянся в коментарии, являются бажными:(
Там есть проблема с типами аргументов, как всегда млин я с этим сталкиваюсь когда внедряю функции Си в lua.
В принципе главной проблемой является то, что к кнопке не назначить callback функцию, а на DecRef пофиг. А кнопка без действий, это не кнопка:)
Похоже придется выпускать обновление:)А то это уже не первый косяк который я заметил:rolleyes:
Все остальные функции GUI должны работать, теоретически:)все проверить нехватает времени.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 10.08.2006 в 19:20, отредактировал пользователь SWAT.)
10.08.2006 19:16
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Сообщения в этой теме
DreamShell lua source code - SWAT - 02.09.2005, 00:12
DreamShell lua source code - SWAT - 05.09.2005, 00:42
DreamShell lua source code - SWAT - 06.09.2005, 02:29
DreamShell lua source code - SWAT - 06.09.2005, 23:59
DreamShell lua source code - zaero - 01.10.2005, 18:48
DreamShell lua source code - SWAT - 02.10.2005, 20:18
DreamShell lua source code - SWAT - 02.10.2005, 20:48
DreamShell lua source code - alex - 12.11.2005, 22:18
DreamShell lua source code - zaero - 12.11.2005, 22:38
DreamShell lua source code - SWAT - 12.11.2005, 22:46
DreamShell lua source code - zaero - 20.11.2005, 22:56
DreamShell lua source code - SWAT - 21.11.2005, 18:31
DreamShell lua source code - zaero - 21.11.2005, 18:37
DreamShell lua source code - SWAT - 21.11.2005, 18:43
DreamShell lua source code - zaero - 21.11.2005, 22:05
DreamShell lua source code - SWAT - 22.11.2005, 15:28
DreamShell lua source code - zaero - 22.11.2005, 20:14
DreamShell lua source code - SWAT - 22.11.2005, 22:11
DreamShell lua source code - zaero - 22.11.2005, 22:19
DreamShell lua source code - SWAT - 23.11.2005, 20:09
DreamShell lua source code - zaero - 24.11.2005, 19:11
DreamShell lua source code - zaero - 24.11.2005, 22:26
DreamShell lua source code - zaero - 05.12.2005, 18:54
DreamShell lua source code - SWAT - 05.06.2006, 14:13
DreamShell lua source code - zaero - 06.06.2006, 01:59
DreamShell lua source code - SWAT - 10.08.2006, 17:06
DreamShell lua source code - SWAT - 10.08.2006 19:16
DreamShell lua source code - SWAT - 12.08.2006, 18:37
DreamShell lua source code - zaero - 19.12.2006, 04:36
DreamShell lua source code - SWAT - 29.01.2007, 20:58

Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  DreamShell dev environment setup on macOS VeraBecker 17 6233 19.09.2023 06:25
Посл. сообщение: SWAT
  Приложение для DreamShell SuperClaw 170 399643 01.05.2016 08:12
Посл. сообщение: SWAT
  DreamShell 4.0 - XML Doc SWAT 6 34318 06.04.2015 13:41
Посл. сообщение: SWAT
  DreamShell 4.0 - Module dev SWAT 8 30465 23.12.2013 13:20
Посл. сообщение: SWAT
  Dreamshell BETA3/BETA4 Direct Swap atreyu187 3 19487 09.09.2011 14:27
Посл. сообщение: SWAT
  DreamShell 4.0 - App dev SWAT 3 21515 22.06.2011 23:09
Посл. сообщение: Jirohn
  DreamShell 4.0 - Bug Report SWAT 54 165043 28.03.2011 07:24
Посл. сообщение: SWAT
  Разработка блокнота для DreamShell zaero 28 86728 31.01.2011 16:02
Посл. сообщение: SWAT
  DreamShell 4.0 - Beta Testing SWAT 76 230070 14.07.2010 20:58
Посл. сообщение: SWAT
  DreamShell 4.0 SWAT 43 136703 05.02.2010 07:10
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)