create a new page, using OOoBasic/Dialog/Example27 as a template.
Front page
Search
掲示板
Reload
Help
Browse Log
掲示板の使い方
OOo 掲示板3
OOo 掲示板2
OOo 掲示板
掲示板
雑談掲示板
New
List of pages
Recent changes
Backup
簡単ヘルプ
整形ルール
Start:
* ツリーでドラッグ先を描写 [#vb5e707f]
ツリーコントロールでドラッグしてノードを移動させるときに...
次のような感じにします。実際には移動操作やポインタの変更...
#code(python){{
# Python
import unohelper
from com.sun.star.awt import XMouseMotionListener
class MouseMotionListener(unohelper.Base, XMouseMotionLis...
def __init__(self, act):
self.act = act
self.node = node
def disposing(self, ev):
self.act = None
self.node = None
def mouseDragged(self, ev):
try:
# check near is a child of the same parent
tree = ev.Source
node = tree.getSelection()
near = tree.getClosestNodeForLocation(ev.X, ev.Y)
if self.node != near:
r = tree.getNodeRect(near)
self.act.dragged(tree, r)
self.node = near
except Exception, e:
print(e)
def mouseMoved(self, ev):
pass
class TreeTest(object):
DIALOG = "vnd.sun.star.script:Standard.Dialog16?location...
def __init__(self, ctx):
self.ctx = ctx
def create(self, name, args=None):
if args:
return self.ctx.getServiceManager().createInstanceWith...
name, args, self.ctx)
else:
return self.ctx.getServiceManager().createInstanceWith...
name, self.ctx)
def execute(self):
dlg = self.create("com.sun.star.awt.DialogProvider").\
createDialog(self.DIALOG)
dc = dlg.getControl
tree = dc("tree")
tree.addMouseMotionListener(MouseMotionListener(self))
data_model = self.create("com.sun.star.awt.tree.Mutable...
tree.getModel().DataModel = data_model
tree.getModel().SelectionType = 1
root = data_model.createNode("Root", False)
data_model.setRoot(root)
for i in range(6):
root.appendChild(
data_model.createNode("Node %d" % (i + 1), False))
#self.create("mytools.Mri", (dlg,))
dlg.execute()
dlg.dispose()
def dragged(self, tree, r):
x = r.X
y = r.Y
if ev.X < (r.Y + r.Height/2):
y += r.Height
g = tree.getGraphics()
if not g:
g = tree.getPeer().createGraphics()
tree.setGraphics(g)
tree.getPeer().invalidate(8)
g.push()
g.setLineColor(0)
g.drawLine(x - 10, y, x + 15, y)
g.pop()
def show_tree(*args):
try:
ctx = XSCRIPTCONTEXT.getComponentContext()
TreeTest(ctx).execute()
except Exception, e:
print(e)
import traceback
traceback.print_exc()
}}
描写する前に表示を更新させて以前の描写を消します。setLine...
End:
* ツリーでドラッグ先を描写 [#vb5e707f]
ツリーコントロールでドラッグしてノードを移動させるときに...
次のような感じにします。実際には移動操作やポインタの変更...
#code(python){{
# Python
import unohelper
from com.sun.star.awt import XMouseMotionListener
class MouseMotionListener(unohelper.Base, XMouseMotionLis...
def __init__(self, act):
self.act = act
self.node = node
def disposing(self, ev):
self.act = None
self.node = None
def mouseDragged(self, ev):
try:
# check near is a child of the same parent
tree = ev.Source
node = tree.getSelection()
near = tree.getClosestNodeForLocation(ev.X, ev.Y)
if self.node != near:
r = tree.getNodeRect(near)
self.act.dragged(tree, r)
self.node = near
except Exception, e:
print(e)
def mouseMoved(self, ev):
pass
class TreeTest(object):
DIALOG = "vnd.sun.star.script:Standard.Dialog16?location...
def __init__(self, ctx):
self.ctx = ctx
def create(self, name, args=None):
if args:
return self.ctx.getServiceManager().createInstanceWith...
name, args, self.ctx)
else:
return self.ctx.getServiceManager().createInstanceWith...
name, self.ctx)
def execute(self):
dlg = self.create("com.sun.star.awt.DialogProvider").\
createDialog(self.DIALOG)
dc = dlg.getControl
tree = dc("tree")
tree.addMouseMotionListener(MouseMotionListener(self))
data_model = self.create("com.sun.star.awt.tree.Mutable...
tree.getModel().DataModel = data_model
tree.getModel().SelectionType = 1
root = data_model.createNode("Root", False)
data_model.setRoot(root)
for i in range(6):
root.appendChild(
data_model.createNode("Node %d" % (i + 1), False))
#self.create("mytools.Mri", (dlg,))
dlg.execute()
dlg.dispose()
def dragged(self, tree, r):
x = r.X
y = r.Y
if ev.X < (r.Y + r.Height/2):
y += r.Height
g = tree.getGraphics()
if not g:
g = tree.getPeer().createGraphics()
tree.setGraphics(g)
tree.getPeer().invalidate(8)
g.push()
g.setLineColor(0)
g.drawLine(x - 10, y, x + 15, y)
g.pop()
def show_tree(*args):
try:
ctx = XSCRIPTCONTEXT.getComponentContext()
TreeTest(ctx).execute()
except Exception, e:
print(e)
import traceback
traceback.print_exc()
}}
描写する前に表示を更新させて以前の描写を消します。setLine...
Page: