LeshaInc 625 Опубликовано: 22 сентября, 2015 GUIAPI v0.3 Мало кто помнит, но очень давно, во времена Тоторо-не-девелопера, мы с Тоторо и НЕО писали GUIAPI, и даже тему подняли, но потом забросили и даже не довели до ума. Уже совсем недавно, я начал писать банк для Файна, и однажды он мне написал: "Сделай крутое гуи как в базаре (новом) у Крутого". И начал грустить тогда я, ведь не было у меня удобного и красивого инструмента для создания гуи. И вспомнил я про формочки Зеро, и вспомнил я слова НЕО "Не пиши велосипеды!", но я не послушал его. Поэтому, хочу представить вам библиотеку гуи, настоящий велосипед, но красивее чем у Зеро. Модулей пока очень мало, а именно кнопка, текст-ввод, коробка и лэйбл. Но если вы захотите - вы можете написать свой модуль. Работа с API: local wins = require "wins" local i = wins.new({ pos = { x = 1, y = 1 }, size = { w = 80, h = 25 }, bg = 0x727272 }) i:add("box",{ pos = { x = "auto", y = 3 }, size = { w = 60, h = 21 }, colors = { bg = 0xF0F0F0, } }) i:add("button",{ pos = { x = "auto", y = 6 }, size = { w = 20, }, text = "Здарова", colors = { text = 0xFFFFFF, bg = 0x66B640 }, click = function (ev) os.sleep(2) print("Здарова!") end }) i:add("textinput",{ pos = { x = "auto", y = 10 }, size = { w = 40, }, colors = { text = 0x202020, border = 0x989898 }, text = "Сюда писать можно!" }) i:add("label",{ pos = { x = "auto", y = 4 }, text = "Хэлоу эврибоди!", colors = { bg = "auto", text = 0x202020 } }) i:draw() i:run() Создание своего модуля: modules["button"] = { draw = function(props,self) if props.pos.x == "auto" then props.pos.x = self.pos.x + self.size.w / 2 - props.size.w / 2 end gfill(props.pos.x,props.pos.y,props.size.w,3,props.colors.bg) gset( props.pos.x + props.size.w / 2 - unicode.len(props.text) / 2, props.pos.y + 1,props.colors.bg,props.colors.text,props.text) end, click = function(props,ev,self) if ev[1] == "touch" then local xcl,ycl = ev[3],ev[4] if (xcl >= props.pos.x and xcl < props.pos.x + props.size.w and ycl >= props.pos.y and ycl < props.pos.y + 3) then local r,g,b = hex2rgb(props.colors.bg) local clr = rgb2hex(r-20,g-20,b-20) gfill(props.pos.x,props.pos.y,props.size.w,3,clr) gset( props.pos.x + props.size.w / 2 - unicode.len(props.text) / 2, props.pos.y + 1,clr,props.colors.text,props.text) props.click(ev) gfill(props.pos.x,props.pos.y,props.size.w,3,props.colors.bg) gset( props.pos.x + props.size.w / 2 - unicode.len(props.text) / 2, props.pos.y + 1,props.colors.bg,props.colors.text,props.text) end end end} Скачать: Скоро PS: Кто напишет нормальную прокрутку в текстовом поле - тому подарок на IT-Lite лично от меня, у самого времени нет. 8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 23 сентября, 2015 (изменено) Добро пожаловать в ряды велосипедостроителей? pos = { x = "auto", y = 3 }, Что означает x = "auto" ? Если сместить коробку, её содержимое тоже сместится? хочу представить вам библиотеку гуи, настоящий велосипед, но красивее чем у Зеро. Т.е. ты хочешь сказать, что на forms такой красоты не сделать? Изменено 23 сентября, 2015 пользователем Zer0Galaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc Автор темы 625 Опубликовано: 23 сентября, 2015 Добро пожаловать в ряды велосипедостроителей? Что означает x [/size]=[/size] [/size]"auto" [/size]? Если сместить коробку, её содержимое тоже сместится? Т.е. ты хочешь сказать, что на forms такой красоты не сделать? Коробка — это просто коробка, просто коробка. В ней нет никакого содержимого."auto" — автоматический выбор, те по центру. На формочках такое сделать можно, просто переписывать надо модули. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 23 сентября, 2015 На формочках такое сделать можно, просто переписывать надо модули. Какие модули переписывать? Просто цвет другой задаешь и всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc Автор темы 625 Опубликовано: 23 сентября, 2015 Какие модули переписывать? Просто цвет другой задаешь и всё.Ладно, твоя взяла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Ktlo 789 Опубликовано: 23 сентября, 2015 По-моему в автоматический выбор лучше делать, когда значение не указано. Таким образом пользователю не придётся писать лишнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc Автор темы 625 Опубликовано: 23 сентября, 2015 По-моему в автоматический выбор лучше делать, когда значение не указано. Таким образом пользователю не придётся писать лишнее. То есть если мы не указали X, то тогда автоматический блок рисуется по центру? Нет-нет)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Ktlo 789 Опубликовано: 23 сентября, 2015 То есть если мы не указали X, то тогда автоматический блок рисуется по центру? Нет-нет)) А чего так? Пользователю писать лишнего не придётся, да и тем более, в других местах это широко применяют. Думаю будет удобно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах