diff options
-rw-r--r-- | addons/bubblemessage.py | 9 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | tests/actiontests.py | 4 | ||||
-rw-r--r-- | tests/serializertests.py | 4 | ||||
-rw-r--r-- | tutorius/overlayer.py | 2 |
5 files changed, 13 insertions, 7 deletions
diff --git a/addons/bubblemessage.py b/addons/bubblemessage.py index eb82ea3..7a8bc72 100644 --- a/addons/bubblemessage.py +++ b/addons/bubblemessage.py @@ -21,8 +21,7 @@ class BubbleMessage(Action): position = TArrayProperty([0,0], 2, 2) #Create a list of tail positions as an array of N element : N to be defined... tail_pos = TArrayOneTypeProperty([[0,0],[0,0],[0,0]], 3, 3) - - + def __init__(self, message=None, pos=None, speaker=None, tailpos=None): """ Shows a dialog with a given text, at the given position on the screen. @@ -39,6 +38,8 @@ class BubbleMessage(Action): self.position = pos if tailpos: self.tail_pos = tailpos + if tailpos2: + self.tail_pos2 = tailpos2 if message: self.message = message @@ -64,7 +65,7 @@ class BubbleMessage(Action): # TODO: tails are relative to tailpos. They should be relative to # the speaking widget. Same of the bubble position. self._bubble = overlayer.TextBubble(text=self.message, - tailpos=self.tail_pos) + tailpos=self.tail_pos, tailpos2=self.tail_pos2) self._bubble.show() self.overlay.put(self._bubble, x, y) self.overlay.queue_draw() @@ -87,7 +88,7 @@ class BubbleMessage(Action): assert not self._drag, "bubble action set to editmode twice" x, y = self.position self._bubble = overlayer.TextBubble(text=self.message, - tailpos=self.tail_pos) + tailpos=self.tail_pos, tailpos2=self.tail_pos2) self.overlay.put(self._bubble, x, y) self._bubble.show() @@ -6,3 +6,4 @@ force=1 [test] # same as above prefix=/home/isen/tutorius/install/ +force=1 diff --git a/tests/actiontests.py b/tests/actiontests.py index 4e126b3..265ffa1 100644 --- a/tests/actiontests.py +++ b/tests/actiontests.py @@ -65,7 +65,7 @@ class DialogMessageTest(unittest.TestCase): class BubbleMessageTest(unittest.TestCase): def setUp(self): - self.bubble = addon.create('BubbleMessage', message="Message text", pos=[200, 300], tailpos=[-15, -25]) + self.bubble = addon.create('BubbleMessage', message="Message text", pos=[200, 300], tailpos=[-15, -25], tailpos2=[-15, -25]) def test_properties(self): props = self.bubble.get_properties() @@ -76,6 +76,8 @@ class BubbleMessageTest(unittest.TestCase): assert "tail_pos" in props, 'No tail position property in BubbleMessage' + assert "tail_pos2" in props, 'No tail position property in BubbleMessage' + class CountAction(Action): """ diff --git a/tests/serializertests.py b/tests/serializertests.py index 6c25bae..320feaf 100644 --- a/tests/serializertests.py +++ b/tests/serializertests.py @@ -76,7 +76,7 @@ class XMLSerializerTest(unittest.TestCase): # Add a few states act1 = addon.create('BubbleMessage', message="Hi", pos=[300, 450]) ev1 = addon.create('GtkWidgetEventFilter', "0.12.31.2.2", "clicked", "Second") - act2 = addon.create('BubbleMessage', message="Second message", pos=[250, 150], tailpos=[1,2]) + act2 = addon.create('BubbleMessage', message="Second message", pos=[250, 150], tailpos=[1,2], tailpos2=[1,2]) st1 = State("INIT") st1.add_action(act1) @@ -143,7 +143,7 @@ class XMLSerializerTest(unittest.TestCase): """ st = State("INIT") - act1 = addon.create('BubbleMessage', "Hi!", pos=[10,120], tailpos=[-12,30]) + act1 = addon.create('BubbleMessage', "Hi!", pos=[10,120], tailpos=[-12,30], tailpos2=[-12,30]) act2 = addon.create('DialogMessage', "Hello again.", pos=[120,10]) act3 = WidgetIdentifyAction() act4 = DisableWidgetAction("0.0.0.1.0.0.0") diff --git a/tutorius/overlayer.py b/tutorius/overlayer.py index 8203aa6..4ee5241 100644 --- a/tutorius/overlayer.py +++ b/tutorius/overlayer.py @@ -198,6 +198,7 @@ class TextBubble(gtk.Widget): # # TODO fetch speaker coordinates + # draw bubble tails if present for i in range(len(self.tailpos)): if self.tailpos[i] != [0,0]: @@ -228,6 +229,7 @@ class TextBubble(gtk.Widget): context.set_source_rgb(*xo_fill_color) context.fill() + # bubble painting. Redrawing the inside after tails will combine for i in range(len(self.tailpos)): if self.tailpos[i] != [0,0]: |