Перейти к публикации
Форум - ComputerCraft
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 лично от меня, у самого времени нет.

  • Like 7

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


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

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

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

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

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

 

 

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

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

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

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


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

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

 

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

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

 

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

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

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

 

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

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


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

 

 

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

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

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


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

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

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

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


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

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

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


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

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

 

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

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


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

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

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×