Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUmmu <jeff@ummu.org>2009-08-15 14:29:22 +0400
committerUmmu <jeff@ummu.org>2009-08-15 14:29:22 +0400
commit0759278fc83c1ac340376d4a6071d57aeb9dd46f (patch)
tree70192081ce8a05953d0753a7a5934cf8b3a94b62
parent05676936533e6221126b7526fd773b7de6166ce0 (diff)
Item-created callback does not work, item-view-created as said in docs does not exist, small hack used right now. xmpp not in on this commit.
-rw-r--r--data/glade/whiteboard_widget.glade52
-rw-r--r--src/whiteboardwidget.py54
2 files changed, 96 insertions, 10 deletions
diff --git a/data/glade/whiteboard_widget.glade b/data/glade/whiteboard_widget.glade
index e842f5cad..5811cf039 100644
--- a/data/glade/whiteboard_widget.glade
+++ b/data/glade/whiteboard_widget.glade
@@ -43,7 +43,8 @@
<property name="fill">False</property>
<property name="position">1</property>
</packing>
- </child><child>
+ </child>
+ <child>
<widget class="GtkButton" id="line_button">
<property name="label" translatable="yes">Line Tool</property>
<property name="visible">True</property>
@@ -58,6 +59,35 @@
</packing>
</child>
<child>
+ <widget class="GtkButton" id="delete_button">
+ <property name="label" translatable="yes">Delete Tool
+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_delete_button_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="clear_button">
+ <property name="label" translatable="yes">Clear Canvas</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_clear_button_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkButton" id="export_button">
<property name="label" translatable="yes">Export XML</property>
<property name="visible">True</property>
@@ -68,7 +98,20 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">3</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="size_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <signal name="format_value" handler="on_size_scale_format_value"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ <property name="secondary">True</property>
</packing>
</child>
<child>
@@ -104,13 +147,10 @@ Color:</property>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">4</property>
+ <property name="position">7</property>
<property name="secondary">True</property>
</packing>
</child>
- <child>
- <placeholder/>
- </child>
</widget>
<packing>
<property name="expand">False</property>
diff --git a/src/whiteboardwidget.py b/src/whiteboardwidget.py
index eb97e475b..c3603e7e5 100644
--- a/src/whiteboardwidget.py
+++ b/src/whiteboardwidget.py
@@ -27,6 +27,7 @@ class Whiteboard(object):
self.canevas.connect('button-press-event', self.button_press_event)
self.canevas.connect('button-release-event', self.button_release_event)
self.canevas.connect('motion-notify-event', self.motion_notify_event)
+ self.canevas.connect('item-created', self.item_created)
# Config
self.draw_tool = 'brush'
@@ -52,13 +53,31 @@ class Whiteboard(object):
def on_line_button_clicked(self, widget):
self.draw_tool = 'line'
+
+ def on_delete_button_clicked(self, widget):
+ self.draw_tool = 'delete'
+
+ def on_clear_button_clicked(self, widget):
+ self.image.clear_canvas()
def on_export_button_clicked(self, widget):
self.image.print_xml()
def on_fg_color_button_color_set(self, widget):
self.color = str(self.fg_color_select_button.get_color())
-
+
+ def item_created(self, canvas, item, model):
+ print 'item created'
+ item.connect('button-press-event', self.item_button_press_events)
+
+ def item_button_press_events(self, item, target_item, event):
+ if self.draw_tool == 'delete':
+ self.image.del_item(item)
+
+ def on_size_scale_format_value(self, widget, value):
+ # self.line_width = value
+ pass
+
def button_press_event(self, widget, event):
x = event.x
y = event.y
@@ -148,6 +167,9 @@ class Whiteboard(object):
fill_color='black',
line_width=self.line_width)
self.image.add_path(self.item_data, self.line_width, self.color)
+
+ if self.draw_tool == 'delete':
+ pass
self.item_data = None
if self.item_temp is not None:
@@ -205,6 +227,7 @@ class SVGObject():
goocanvas_obj = goocanvas.Path(parent=self.root, data=data,
line_width=line_width, stroke_color=color)
+ goocanvas_obj.connect('button-press-event', self.item_button_press_events)
node = self.g.addChild(name='path')
node.setAttr('d', data)
@@ -245,6 +268,7 @@ class SVGObject():
line_width=float(node.getAttr('stroke-width')))
self.items[parent_rid]['data'].append(goocanvas_obj)
+ goocanvas_obj.connect('button-press-event', self.item_button_press_events)
def add_ellipse(self, cx, cy, rx, ry, line_width, stroke_color):
''' adds the ellipse to the items listing, both minidom node and goocanvas
@@ -257,6 +281,7 @@ class SVGObject():
radius_y=ry,
stroke_color=stroke_color,
line_width=line_width)
+ goocanvas_obj.connect('button-press-event', self.item_button_press_events)
node = self.g.addChild(name='ellipse')
node.setAttr('cx', str(cx))
@@ -266,7 +291,7 @@ class SVGObject():
node.setAttr('stroke-width', str(line_width))
node.setAttr('stroke', stroke_color)
self.g.addChild(node=node)
-
+
rids = self.session.generate_rids(7)
self.items[rids[0]] = {'type':'element', 'data':[node, goocanvas_obj], 'children':rids[1:]}
self.items[rids[1]] = {'type':'attr', 'data':'cx', 'parent':node}
@@ -278,10 +303,31 @@ class SVGObject():
self.session.send_items(self.items, rids)
+ def del_item(self, item):
+ for x in self.items.keys():
+ print item
+ if self.items[x]['type'] == 'element':
+ if self.items[x]['data'][1] == item:
+ print 'found'
+ for y in self.items[x]['children']:
+ self.del_rid(y)
+ self.del_rid(x)
+
+ def clear_canvas(self):
+ for x in self.items.keys():
+ if self.items[x]['type'] == 'element':
+ self.del_rid(x)
+
+ def del_rid(self, rid):
+ if self.items[rid]['type'] == 'element':
+ self.items[rid]['data'][1].remove()
+ del self.items[rid]
+
def print_xml(self):
file = open('whiteboardtest.svg','w')
file.writelines(str(self.svg))
file.close()
- def del_item(self, rid):
- pass
+ def item_button_press_events(self, item, target_item, event):
+ # should not be put here because cannot see what draw_tool is.
+ self.del_item(item)