diff options
Diffstat (limited to 'dalos-cd.lua')
| -rw-r--r-- | dalos-cd.lua | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/dalos-cd.lua b/dalos-cd.lua new file mode 100644 index 0000000..cb0b6a7 --- /dev/null +++ b/dalos-cd.lua @@ -0,0 +1,49 @@ +loadmodule "luacd" + +dalosp.cd = {    +    get_settings = function (self) +        return { filename = self.extra.filename } +    end, +     +    configure = function (self) +        local drives_list = self.extra.drives_list +        local list = "" +        for i, v in ipairs(drives_list) do +            list = list .. v .. "|" +        end +        local s, id = iup.GetParam("CD drive", nil, "CD drive: %l|" .. list .. "\n", 0) + +        if s then +            self.extra.filename = "cd:" .. drives_list[id + 1] +            local s, v = pcall(cdabstract, self.extra.filename) +            if s then +                self:set_houtput(v) +                return +            end +        end +        self:set_houtput(nil) +    end, +     +    create = function (d, tab, settings) +        tab.ninputs = 0 +        tab.noutputs = 1 +        tab.otype = dalos.objtype.HANDLE +        tab.configure = dalosp.cd.configure +        tab.default_name = "CD" +        tab.ntype = "CD" +        tab.get_settings = dalosp.cd.get_settings +        local extra = { drives_list = cdprobe() } +        if settings then extra.filename = settings.filename end +        local obj = dalos.object(d, tab, extra) + +        if extra.filename then +            local s, v = pcall(cdabstract, extra.filename) +            if s then obj:set_houtput(v) end +        end +         +        return obj +    end, +} + +dalos.cd = dalosp.cd.create +dalos:register_obj("CD", dalos.cd, "Basic Inputs") | 
