iuplua

Страницы: 1
RSS
iuplua, обсуждаем работу стороннего графического пакета
 
На днях решил вернуться к пакету IUP и проверить его работу в QUIK .  
IUP - версия 3.13, QUIK  - версия 6.16.1.15.
Раньше не удавалось получить устойчивой работы пакета.
Произнеся несколько заклинаний ,
я с удовлетворением отметил,
что тест не падает и ничего не роняет.
Предлагаю желающим повторить данный эксперимент.
тест здесь :
http://www.kamynin.ru
 
а где сами заклинания?
 
они у каждого свои.
работают любые.
 
Цитата
1: unexpected symbol near '»'
Надо делать так, как надо. А как не надо - делать не надо.
 
так конвертирует WP , а редактировать лень, замените сами на кавычки ".
 
Чтобы не плодить темы, спрошу здесь.

Экспериментирую с библиотекой iup, чтобы понять, что можно, а что нельзя делать в qlua-скриптах с этой библиотекой. Обычные окна с элементами внутри них выводятся без проблем. Проблемы начинаются при показе модальных окон и popup-меню. Пока их не закроешь, поток main дальше не выполняется (видно по необновляющемуся заголовку окна и прерыванию записи в файл log.txt). Пример скрипта приведён в конце сообщения.

Вопрос к разработчикам QUIK и тем, кто смог решить подобные проблемы: можно ли добиться продолжения работы потока main и как это сделать?

В других языках программирования я бы выделил для uip отдельный вычислительный поток. Можно ли что-то подобное сделать в рамках QUIK?
Код
require("util.luapaths") -- мой код для задания package.cpath для подключения библиотек lua из дистрибутива LuaForWindows
require("iuplua")

local iup = iup

local interrupted = false

function OnStop()
    interrupted = true
end

function main()
    local btn1 = iup.button { title = "Show Dialog", }
    function btn1:action()
        local r = iup.Alarm("", "Main Title doesn't update!", "Exit")
        if r == 1 then
            interrupted = true
        end
    end

    local btn2 = iup.button { title = "Show menu", }
    function btn2:action()
        local item = iup.item { title = "Exit", }
        function item:action()
            interrupted = true
        end

        local menu = iup.menu {
            iup.item { title = "Dialog title doesn't update!", active = "NO", },
            item
        }:popup(iup.MOUSEPOS, iup.MOUSEPOS)
    end

    local dlg = iup.dialog {
        iup.vbox { btn1, btn2 };
        size = "EIGHTHxEIGHTH",
    }
    function dlg:close_cb()
        interrupted = true
    end

    dlg:show()
    local file = io.open("log.txt", "w+")
    if file then
        while not interrupted do
            iup.LoopStep()
            dlg.title = os.time()
            file:write(os.time(), "\n")
            file:flush()
            sleep(100)
        end
        file:close()
    end
    dlg:destroy()
    iup.Close()
end
 
Здравствуйте,
Цитата
_sk_ написал:
Можно ли что-то подобное сделать в рамках QUIK?

К сожалению надежного решения нет
Страницы: 1
Читают тему
Наверх