Перейти к содержимому
LeshaInc

[OC] GUIAPI: Продолжение

Рекомендуемые сообщения

GUIAPI

v0.3

Мало кто помнит, но очень давно, во времена Тоторо-не-девелопера, мы с Тоторо и НЕО писали GUIAPI, и даже тему подняли, но потом забросили и даже не довели до ума.

Уже совсем недавно, я начал писать банк для Файна, и однажды он мне написал: "Сделай крутое гуи как в базаре (новом) у Крутого". И начал грустить тогда я, ведь не было у меня удобного и красивого инструмента для создания гуи. И вспомнил я про формочки Зеро, и вспомнил я слова НЕО "Не пиши велосипеды!", но я не послушал его. Поэтому, хочу представить вам библиотеку гуи, настоящий велосипед, но красивее чем у Зеро.

 

sH6yiAp.png?1

 

Модулей пока очень мало, а именно кнопка, текст-ввод, коробка и лэйбл. Но если вы захотите - вы можете написать свой модуль.

 

Работа с 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 лично от меня, у самого времени нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добро пожаловать в ряды велосипедостроителей?

  1. pos = {
  2. x = "auto",
  3. y = 3
  4. },

Что означает x = "auto" ?

Если сместить коробку, её содержимое тоже сместится?

 

 

хочу представить вам библиотеку гуи, настоящий велосипед, но красивее чем у Зеро.

Т.е. ты хочешь сказать, что на forms такой красоты не сделать?

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добро пожаловать в ряды велосипедостроителей?

 

Что означает x [/size]=[/size] [/size]"auto" [/size]?

Если сместить коробку, её содержимое тоже сместится?

 

Т.е. ты хочешь сказать, что на forms такой красоты не сделать?

Коробка — это просто коробка, просто коробка. В ней нет никакого содержимого.

"auto" — автоматический выбор, те по центру.

 

На формочках такое сделать можно, просто переписывать надо модули.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

На формочках такое сделать можно, просто переписывать надо модули.
 

Какие модули переписывать? Просто цвет другой задаешь и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Какие модули переписывать? Просто цвет другой задаешь и всё.

Ладно, твоя взяла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По-моему в автоматический выбор лучше делать, когда значение не указано. Таким образом пользователю не придётся писать лишнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По-моему в автоматический выбор лучше делать, когда значение не указано. Таким образом пользователю не придётся писать лишнее.

 

То есть если мы не указали X, то тогда автоматический блок рисуется по центру? Нет-нет))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То есть если мы не указали X, то тогда автоматический блок рисуется по центру? Нет-нет))

А чего так? Пользователю писать лишнего не придётся, да и тем более, в других местах это широко применяют. Думаю будет удобно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...