summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dalos.lua72
-rw-r--r--iupe-hexview-toolbox.lua7
-rw-r--r--iupe-hexview.lua3
3 files changed, 54 insertions, 28 deletions
diff --git a/dalos.lua b/dalos.lua
index 7a15e7e..96eb625 100644
--- a/dalos.lua
+++ b/dalos.lua
@@ -328,6 +328,17 @@ dalosp.object = {
end
end,
+ get_linked_input = function (self, ind)
+ local ni = self.inputs[ind]
+ if ni then
+ local ii = ni.ind
+ local io = ni.obj
+ return io.obj:get_output(ii)
+ else
+ return nil
+ end
+ end,
+
default_activate = function (self)
print "activate"
end,
@@ -390,6 +401,7 @@ dalosp.object = {
set_houtput = dalosp.object.set_houtput,
get_outputx = nil,
houtputs = {},
+ get_linked_input = dalosp.object.get_linked_input,
}
if tab.otype and not tab.c then
@@ -426,6 +438,41 @@ 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
+ hv:updatehandle(self:get_linked_input(ind))
+ end,
+
+ configure = function (self)
+ end,
+
+ create = function (d, tab)
+ if not tab.name then tab.name = "Hexview" end
+ tab.otype = dalos.objtype.LUA_FILTER
+ tab.activate = dalosp.hexview.activate
+ tab.input_change = dalosp.hexview.input_change
+ tab.configure = dalosp.hexview.configure
+ tab.ninputs = 1
+ tab.noutputs = 12
+
+ 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 = tab.name }
+
+ return dalos.object(d, tab, { hv = hv, hvtb = hvtb, hvdlg = hvdlg })
+ end,
+}
+
+dalos.hexview = dalosp.hexview.create
+
+----------------
+
d = dalos.canvas {}
m = dalos.menu {}
@@ -434,32 +481,9 @@ b1:write("Buffer 1 contents")
b2 = Buffer(true)
b2:write("Buffer 2 contents")
-function activate_hv(self)
- self.extra.hvdlg:show()
-end
-
-function input_change_hv(self, ind)
- local ni = self.inputs[ind]
- if ni then
- local ii = ni.ind
- local io = ni.obj
- self.extra.hv:updatehandle(io.obj:get_output(ii))
- else
- self.extra.hv:updatehandle(nil)
- end
-end
-
-hv = iupe.hexview { }
-hvdlg = iup.dialog { iup.hbox{ iup.frame { hv }, iup.sbox { direction = "WEST", iupe.hexview_toolbox { hexview = hv, }, }, }, title = "Hexview" }
-
-extra = {
- hv = hv,
- hvdlg = hvdlg,
-}
-
o1 = dalos.object(d, { y = 30, x = 10, noutputs = 1, name = "Buffer 1", otype = dalos.objtype.HANDLE })
o2 = dalos.object(d, { y = 120, x = 10, noutputs = 1, name = "Buffer 2", otype = dalos.objtype.HANDLE })
-h = dalos.object(d, { y = 60, x = 100, ninputs = 1, name = "Hexview", otype = dalos.objtype.LUA_VIEWER, activate = activate_hv, input_change = input_change_hv }, extra)
+h = dalos.hexview(d, { y = 60, x = 100 })
o1:set_houtput(b1)
o2:set_houtput(b2)
diff --git a/iupe-hexview-toolbox.lua b/iupe-hexview-toolbox.lua
index 7cfb7a4..fdb2638 100644
--- a/iupe-hexview-toolbox.lua
+++ b/iupe-hexview-toolbox.lua
@@ -22,7 +22,7 @@ iupep.hexview_toolbox = {
return r + 0, markercolors[rcursor]
end,
- hexview_cb = function (self, hexview)
+ hexview_cb = function (self, hexview, reset)
local filecursor = hexview.filecursor
local filesize = hexview.filesize
local fcl = self.cursors.file
@@ -34,7 +34,7 @@ iupep.hexview_toolbox = {
local cursor, bgcolor = self:getcursor(hexview)
local oldcursor = self.oldcursor + 0
- if oldcursor == cursor or cursor == -1 then return iup.DEFAULT end
+ if not reset and (oldcursor == cursor or cursor == -1) then return iup.DEFAULT end
self.oldcursor = cursor
local cl = self.cursors.normal
cl.dec.title = cursor
@@ -242,8 +242,7 @@ iupep.hexview_toolbox = {
end
function endianess:action(text, pos, state)
- r.oldcursor = -1
- r:hexview_cb(hexview)
+ r:hexview_cb(hexview, true)
end
cursorlabel_dec.action = function (self) return iupep.hexview_toolbox.cursor_change(self, hexview, r, false) end
diff --git a/iupe-hexview.lua b/iupe-hexview.lua
index 12ec90c..0567cd0 100644
--- a/iupe-hexview.lua
+++ b/iupe-hexview.lua
@@ -370,6 +370,9 @@ iupep.hexview = {
self.old_filecursor = -1
self:updatescrollbar()
self:draw()
+ for _, v in ipairs(self.cbs) do
+ v.cb(v.opaque, self, true)
+ end
end,
map_cb = function (self)