diff options
| author | Pixel <pixel@nobis-crew.org> | 2009-12-19 16:53:45 -0800 | 
|---|---|---|
| committer | Pixel <pixel@nobis-crew.org> | 2009-12-19 16:53:45 -0800 | 
| commit | 41b76a159954d1f47eb4937ded57c58cb3522f96 (patch) | |
| tree | 138618c30fda58fc5171250d53023fe176f249ff | |
| parent | b95784072d8e65763785fbbb5fff2df308e37708 (diff) | |
Splitting dalos's hexviewer out, in a separate file.
| -rw-r--r-- | dalos-hexview.lua | 153 | ||||
| -rw-r--r-- | dalos.lua | 153 | 
2 files changed, 154 insertions, 152 deletions
| diff --git a/dalos-hexview.lua b/dalos-hexview.lua new file mode 100644 index 0000000..7e46ed6 --- /dev/null +++ b/dalos-hexview.lua @@ -0,0 +1,153 @@ +load "iupe-hexview.lua"
 +load "iupe-hexview-toolbox.lua"
 +
 +dalosp.hexview = {
 +    activate = function (self)
 +        self.extra.hvdlg:show()
 +    end,
 +    
 +    input_change = function (self, ind)
 +        local extra = self.extra
 +        local hv = extra.hv
 +        local h = self:get_linked_input(ind)
 +        if not h then
 +            self.color = cd.YELLOW
 +            hv:updatehandle(nil)
 +            self.dcanvas:draw()
 +            return
 +        end
 +        if not h:canread() or not h:canseek() then
 +            self.color = cd.RED
 +            hv:updatehandle(nil)
 +            self.dcanvas:draw()
 +            return
 +        end
 +        self.color = cd.GREEN
 +        for i = 1, 12 do
 +            self:set_houtput(nil, i)
 +            self.oldcursors[i] = -1
 +        end
 +        hv:updatehandle(h)
 +        self.dcanvas:draw()
 +    end,
 +    
 +    configure = function (self)
 +    end,
 +    
 +    output_change = function (self, ind)
 +        self.watchees[ind] = self.outputs[ind] and true or false
 +    end,
 +    
 +    update_houtput = function (self, ind, cursor)
 +        local h = self:get_linked_input(1)
 +        if h and self.watchees[ind] then
 +            local obj = {
 +                h = h,
 +                hvo = self,
 +                ind = ind,
 +                origin = cursor,
 +                offset = 0,
 +                size = h:getsize() - cursor,
 +                canread = function (self) return true end,
 +                canwrite = function (self) return false end,
 +                canseek = function (self) return true end,
 +                canwatch = function (self) return self.h:canwatch() end,
 +                getname = function (self) return self.hvo.name .. ":" .. self.ind end,
 +                tell = function (self) return self.offset end,
 +                getsize = function (self) return self.size end,
 +                getmodif = function (self) return self.hvo:getmodif() end,
 +                flush = function (self) return self.hvo:flush() end,
 +                seek = function (self, offset, wheel) 
 +                    if wheel == SEEK_SET then
 +                        self.offset = offset
 +                    elseif wheel == SEEK_CUR then
 +                        self.offset = self.offset + offset
 +                    elseif wheel == SEEK_END then
 +                        self.offset = self.size + offset
 +                    else
 +                        error "Unknown wheel"
 +                    end
 +                    self.h:seek(self.offset + self.origin)
 +                    return self.offset
 +                end,
 +                read = function (self, userdata, count)
 +                    count = math.min(count, self.size - self.offset)
 +                    
 +                    if count == 0 then
 +                        if self.got_eof then self.lh:close() end
 +                        self.got_eof = true
 +                        return 0
 +                    end
 +                    
 +                    self.got_eof = false
 +                    
 +                    local r = self.h:read(count, userdata)
 +                    self.offset = self.offset + r
 +                    if r == 0 then self.got_eof = true end
 +                    return r
 +                end,
 +            }
 +            local newh = HandleLua(obj)
 +            obj.lh = newh
 +            self:set_houtput(newh, ind)
 +        end
 +    end,
 +    
 +    dalos_hv_cb = function (self, hv, reset)
 +        local m
 +        for i = 1, 10 do
 +            m = hv.markers[i]
 +            if self.oldcursors[i] ~= m then
 +                self:update_houtput(i, m)
 +                self.oldcursors[i] = m
 +            end
 +        end
 +        
 +        m = hv.kcursor
 +        if self.oldcursors[11] ~= m then
 +            self:update_houtput(11, m)
 +            self.oldcursors[11] = m
 +        end
 +        
 +        m = hv.mcursor
 +        if self.oldcursors[12] ~= m then
 +            self:update_houtput(12, m)
 +            self.oldcursors[12] = m
 +        end
 +    end,
 +    
 +    create = function (d, tab)
 +        tab.otype = dalos.objtype.LUA_FILTER
 +        tab.activate = dalosp.hexview.activate
 +        tab.input_change = dalosp.hexview.input_change
 +        tab.output_change = dalosp.hexview.output_change
 +        tab.configure = dalosp.hexview.configure
 +        tab.ninputs = 1
 +        tab.noutputs = 12
 +        tab.default_name = "Hexview"
 +        
 +        local extra = { }
 +        
 +        local obj = dalos.object(d, tab, extra)
 +
 +        local hv = iupe.hexview { }
 +        local hvtb = iupe.hexview_toolbox { hexview = hv }
 +        local hvdlg = iup.dialog { iup.hbox { iup.frame { hv }, iup.sbox { direction = "WEST", hvtb } }, title = obj.name }
 +        
 +        extra.hv = hv
 +        extra.hvtb = hvtb
 +        extra.hvdlg = hvdlg
 +        
 +        obj.oldcursors = { }
 +        obj.watchees = { }
 +        obj.update_houtput = dalosp.hexview.update_houtput
 +        for i = 1, 12 do obj.oldcursors[i] = -1 end
 +        
 +        hv:registercb(dalosp.hexview.dalos_hv_cb, obj)
 +        
 +        return obj
 +    end,
 +}
 +
 +dalos.hexview = dalosp.hexview.create
 +dalos:register_obj("Hexview", dalos.hexview)
 @@ -3,8 +3,6 @@ loadmodule "luahandle"  loadmodule "lualibs"  load "iupe-dbuffer.lua" -load "iupe-hexview.lua" -load "iupe-hexview-toolbox.lua"  load "iupe-tview.lua"  if not dalosp then dalosp = {} end @@ -664,156 +662,7 @@ dalos.objtype = {  ---------------- -dalosp.hexview = { -    activate = function (self) -        self.extra.hvdlg:show() -    end, -     -    input_change = function (self, ind) -        local extra = self.extra -        local hv = extra.hv -        local h = self:get_linked_input(ind) -        if not h then -            self.color = cd.YELLOW -            hv:updatehandle(nil) -            self.dcanvas:draw() -            return -        end -        if not h:canread() or not h:canseek() then -            self.color = cd.RED -            hv:updatehandle(nil) -            self.dcanvas:draw() -            return -        end -        self.color = cd.GREEN -        for i = 1, 12 do -            self:set_houtput(nil, i) -            self.oldcursors[i] = -1 -        end -        hv:updatehandle(h) -        self.dcanvas:draw() -    end, -     -    configure = function (self) -    end, -     -    output_change = function (self, ind) -        self.watchees[ind] = self.outputs[ind] and true or false -    end, -     -    update_houtput = function (self, ind, cursor) -        local h = self:get_linked_input(1) -        if h and self.watchees[ind] then -            local obj = { -                h = h, -                hvo = self, -                ind = ind, -                origin = cursor, -                offset = 0, -                size = h:getsize() - cursor, -                canread = function (self) return true end, -                canwrite = function (self) return false end, -                canseek = function (self) return true end, -                canwatch = function (self) return self.h:canwatch() end, -                getname = function (self) return self.hvo.name .. ":" .. self.ind end, -                tell = function (self) return self.offset end, -                getsize = function (self) return self.size end, -                getmodif = function (self) return self.hvo:getmodif() end, -                flush = function (self) return self.hvo:flush() end, -                seek = function (self, offset, wheel)  -                    if wheel == SEEK_SET then -                        self.offset = offset -                    elseif wheel == SEEK_CUR then -                        self.offset = self.offset + offset -                    elseif wheel == SEEK_END then -                        self.offset = self.size + offset -                    else -                        error "Unknown wheel" -                    end -                    self.h:seek(self.offset + self.origin) -                    return self.offset -                end, -                read = function (self, userdata, count) -                    count = math.min(count, self.size - self.offset) -                     -                    if count == 0 then -                        if self.got_eof then self.lh:close() end -                        self.got_eof = true -                        return 0 -                    end -                     -                    self.got_eof = false -                     -                    local r = self.h:read(count, userdata) -                    self.offset = self.offset + r -                    if r == 0 then self.got_eof = true end -                    return r -                end, -            } -            local newh = HandleLua(obj) -            obj.lh = newh -            self:set_houtput(newh, ind) -        end -    end, -     -    dalos_hv_cb = function (self, hv, reset) -        local m -        for i = 1, 10 do -            m = hv.markers[i] -            if self.oldcursors[i] ~= m then -                self:update_houtput(i, m) -                self.oldcursors[i] = m -            end -        end -         -        m = hv.kcursor -        if self.oldcursors[11] ~= m then -            self:update_houtput(11, m) -            self.oldcursors[11] = m -        end -         -        m = hv.mcursor -        if self.oldcursors[12] ~= m then -            self:update_houtput(12, m) -            self.oldcursors[12] = m -        end -    end, -     -    create = function (d, tab) -        tab.otype = dalos.objtype.LUA_FILTER -        tab.activate = dalosp.hexview.activate -        tab.input_change = dalosp.hexview.input_change -        tab.output_change = dalosp.hexview.output_change -        tab.configure = dalosp.hexview.configure -        tab.ninputs = 1 -        tab.noutputs = 12 -        tab.default_name = "Hexview" -         -        local extra = { } -         -        local obj = dalos.object(d, tab, extra) - -        local hv = iupe.hexview { } -        local hvtb = iupe.hexview_toolbox { hexview = hv } -        local hvdlg = iup.dialog { iup.hbox { iup.frame { hv }, iup.sbox { direction = "WEST", hvtb } }, title = obj.name } -         -        extra.hv = hv -        extra.hvtb = hvtb -        extra.hvdlg = hvdlg -         -        obj.oldcursors = { } -        obj.watchees = { } -        obj.update_houtput = dalosp.hexview.update_houtput -        for i = 1, 12 do obj.oldcursors[i] = -1 end -         -        hv:registercb(dalosp.hexview.dalos_hv_cb, obj) -         -        return obj -    end, -} - -dalos.hexview = dalosp.hexview.create -dalos:register_obj("Hexview", dalos.hexview) +load "dalos-hexview.lua"  ---------------- | 
