summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--GtkTrayUI.py100
-rw-r--r--assets/blather.svg91
-rw-r--r--assets/blather_inactive.pngbin0 -> 13379 bytes
-rw-r--r--assets/blathersrc.pngbin0 -> 27324 bytes
-rw-r--r--data/icon_inactive.pngbin0 -> 13379 bytes
5 files changed, 161 insertions, 30 deletions
diff --git a/GtkTrayUI.py b/GtkTrayUI.py
new file mode 100644
index 0000000..24e2b57
--- /dev/null
+++ b/GtkTrayUI.py
@@ -0,0 +1,100 @@
+import sys
+import gobject
+
+import pygtk
+import gtk
+
+class UI(gobject.GObject):
+	__gsignals__ = {
+		'command' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,))
+	}
+
+	def __init__(self,args, continuous):
+		gobject.GObject.__init__(self)
+		self.continuous = continuous
+
+		self.statusicon = gtk.StatusIcon()
+		self.statusicon.set_title("Blather")
+		self.statusicon.set_name("Blather")
+		self.statusicon.set_tooltip_text("Blather - Idle")
+		self.statusicon.set_has_tooltip(True)
+		self.statusicon.connect("activate", self.continuous_toggle)
+		self.statusicon.connect("popup-menu", self.popup_menu)
+
+		self.menu = gtk.Menu()
+		self.menu_listen = gtk.MenuItem('Listen')
+		self.menu_continuous = gtk.CheckMenuItem('Continuous')
+		self.menu_quit = gtk.MenuItem('Quit')
+		self.menu.append(self.menu_listen)
+		self.menu.append(self.menu_continuous)
+		self.menu.append(self.menu_quit)
+		self.menu_listen.connect("activate", self.toggle_listen)
+		self.menu_continuous.connect("toggled", self.toggle_continuous)
+		self.menu_quit.connect("activate", self.quit)
+		self.menu.show_all()
+
+	def continuous_toggle(self, item):
+		checked = self.menu_continuous.get_active()
+		self.menu_continuous.set_active(not checked)
+
+	def toggle_continuous(self, item):
+		checked = self.menu_continuous.get_active()
+		self.menu_listen.set_sensitive(not checked)
+		if checked:
+			self.menu_listen.set_label("Listen")
+			self.emit('command', "continuous_listen")
+			self.statusicon.set_tooltip_text("Blather - Listening")
+			self.set_icon_active()
+		else:
+			self.set_icon_inactive()
+			self.statusicon.set_tooltip_text("Blather - Idle")
+			self.emit('command', "continuous_stop")
+
+	def toggle_listen(self, item):
+		val = self.menu_listen.get_label()
+		if val == "Listen":
+			self.emit("command", "listen")
+			self.menu_listen.set_label("Stop")
+			self.statusicon.set_tooltip_text("Blather - Listening")
+		else:
+			self.icon_inactive()
+			self.menu_listen.set_label("Listen")
+			self.emit("command", "stop")
+			self.statusicon.set_tooltip_text("Blather - Idle")
+
+	def popup_menu(self, item, button, time):
+		self.menu.popup(None, None, gtk.status_icon_position_menu, button, time, item)
+
+	def run(self):
+		#set the icon
+		self.set_icon_inactive()
+		if self.continuous:
+			self.menu_continuous.set_active(True)
+			self.set_icon_active()
+		else:
+			self.menu_continuous.set_active(False)
+		self.statusicon.set_visible(True)
+
+	def quit(self, item):
+		self.statusicon.set_visible(False)
+		self.emit("command", "quit")
+
+	def finished(self, text):
+		print text
+		if not self.menu_continuous.get_active():
+			self.menu_listen.set_label("Listen")
+			self.statusicon.set_from_icon_name("blather_stopped")
+			self.statusicon.set_tooltip_text("Blather - Idle")
+
+	def set_icon_active_asset(self, i):
+		self.icon_active = i
+
+	def set_icon_inactive_asset(self, i):
+		self.icon_inactive = i
+
+	def set_icon_active(self):
+		self.statusicon.set_from_file( self.icon_active )
+
+	def set_icon_inactive(self):
+		self.statusicon.set_from_file( self.icon_inactive )
+
diff --git a/assets/blather.svg b/assets/blather.svg
index 1e10ee7..e7e3446 100644
--- a/assets/blather.svg
+++ b/assets/blather.svg
@@ -14,7 +14,10 @@
    id="svg2"
    version="1.1"
    inkscape:version="0.48.4 r9939"
-   sodipodi:docname="blather.svg">
+   sodipodi:docname="blather.svg"
+   inkscape:export-filename="/storage/projects/blather/assets/blathersrc.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
   <defs
      id="defs4" />
   <sodipodi:namedview
@@ -25,13 +28,13 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="0.7"
-     inkscape:cx="-78.309837"
-     inkscape:cy="530.52381"
+     inkscape:cx="-332.59555"
+     inkscape:cy="359.09524"
      inkscape:document-units="px"
-     inkscape:current-layer="layer1"
+     inkscape:current-layer="g3014"
      showgrid="false"
      inkscape:window-width="1366"
-     inkscape:window-height="747"
+     inkscape:window-height="748"
      inkscape:window-x="0"
      inkscape:window-y="0"
      inkscape:window-maximized="1" />
@@ -43,7 +46,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
+        <dc:title></dc:title>
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -51,35 +54,63 @@
      inkscape:groupmode="layer"
      id="layer2"
      inkscape:label="Layer"
-     style="display:inline">
-    <path
-       id="path3825"
-       style="fill:#00ff00;fill-rule:evenodd;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
-       d="m 279.41428,362.8165 c -79.6868,0 -144.28125,49.8972 -144.28125,111.4375 0,61.5403 64.59445,111.40625 144.28125,111.40625 17.09362,0 33.50236,-2.28624 48.71875,-6.5 l 72.71875,32.21875 -7.375,-68.90625 c 18.94346,-18.85561 30.21875,-42.50576 30.21875,-68.21875 l -0.0312,-2.125 C 422.164,411.42867 358.02781,362.8165 279.41433,362.8165 z"
-       inkscape:connector-curvature="0" />
-  </g>
+     style="display:inline" />
   <g
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
      id="layer1"
      style="display:inline">
-    <path
-       style="fill:#00ff00;fill-rule:evenodd;stroke:#008900;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 279.41428,362.8165 c -79.6868,0 -144.28125,49.8972 -144.28125,111.4375 0,61.5403 64.59445,111.40625 144.28125,111.40625 17.09362,0 33.50236,-2.28624 48.71875,-6.5 l 72.71875,32.21875 -7.375,-68.90625 c 18.94346,-18.8556 30.21875,-42.50576 30.21875,-68.21875 l -0.0312,-2.125 C 422.164,411.42867 358.02781,362.8165 279.41433,362.8165 z"
-       inkscape:connector-curvature="0"
-       id="path2992" />
-    <text
-       xml:space="preserve"
-       style="font-size:130.46780396px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#008900;stroke-width:5.77600002;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Sans"
-       x="185.41168"
-       y="617.89215"
-       id="text3762"
-       sodipodi:linespacing="125%"
-       transform="scale(1.1228826,0.89056506)"><tspan
-         sodipodi:role="line"
-         id="tspan3764"
-         x="185.41168"
+    <g
+       id="g3021">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 279.41428,362.8165 c -79.6868,0 -144.28125,49.8972 -144.28125,111.4375 0,61.5403 64.59445,111.40625 144.28125,111.40625 17.09362,0 33.50236,-2.28624 48.71875,-6.5 l 72.71875,32.21875 -7.375,-68.90625 c 18.94346,-18.85561 30.21875,-42.50576 30.21875,-68.21875 l -0.0312,-2.125 C 422.164,411.42867 358.02781,362.8165 279.41433,362.8165 z"
+         style="display:inline;fill:#00ff00;fill-rule:evenodd;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         id="path3825" />
+      <path
+         id="path2992"
+         inkscape:connector-curvature="0"
+         d="m 279.41428,362.8165 c -79.6868,0 -144.28125,49.8972 -144.28125,111.4375 0,61.5403 64.59445,111.40625 144.28125,111.40625 17.09362,0 33.50236,-2.28624 48.71875,-6.5 l 72.71875,32.21875 -7.375,-68.90625 c 18.94346,-18.8556 30.21875,-42.50576 30.21875,-68.21875 l -0.0312,-2.125 C 422.164,411.42867 358.02781,362.8165 279.41433,362.8165 z"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#008900;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <text
+         transform="scale(1.1228826,0.89056506)"
+         sodipodi:linespacing="125%"
+         id="text3762"
          y="617.89215"
-         style="font-size:234.84202576px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:#008900;stroke-width:5.77600002;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans Mono;-inkscape-font-specification:Bitstream Vera Sans Mono Bold">B</tspan></text>
+         x="185.41168"
+         style="font-size:130.46780396px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#008900;stroke-width:5.77600002;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           style="font-size:234.84202576px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:#008900;stroke-width:5.77600002;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans Mono;-inkscape-font-specification:Bitstream Vera Sans Mono Bold"
+           y="617.89215"
+           x="185.41168"
+           id="tspan3764"
+           sodipodi:role="line">B</tspan></text>
+    </g>
+    <g
+       id="g3014">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 272.85715,656.65236 c -79.6868,0 -144.28125,49.8972 -144.28125,111.4375 0,61.5403 64.59445,111.40625 144.28125,111.40625 17.09362,0 33.50236,-2.28624 48.71875,-6.5 l 72.71875,32.21875 -7.375,-68.90625 C 405.86311,817.453 417.1384,793.80285 417.1384,768.08986 l -0.0312,-2.125 c -1.50033,-60.70033 -65.63652,-109.3125 -144.25,-109.3125 z"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:none;display:inline"
+         id="path3825-8" />
+      <path
+         id="path2992-8"
+         inkscape:connector-curvature="0"
+         d="m 272.85715,656.65236 c -79.6868,0 -144.28125,49.8972 -144.28125,111.4375 0,61.5403 64.59445,111.40625 144.28125,111.40625 17.09362,0 33.50236,-2.28624 48.71875,-6.5 l 72.71875,32.21875 -7.375,-68.90625 c 18.94346,-18.8556 30.21875,-42.50576 30.21875,-68.21875 l -0.0312,-2.125 c -1.50033,-60.70033 -65.63652,-109.3125 -144.25,-109.3125 z"
+         style="fill:#888888;fill-rule:evenodd;stroke:#666666;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;fill-opacity:1" />
+      <text
+         transform="scale(1.1228826,0.89056506)"
+         sodipodi:linespacing="125%"
+         id="text3762-3"
+         y="947.83533"
+         x="179.57214"
+         style="font-size:130.46780395999999769px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dadada;fill-opacity:1;stroke:#666666;stroke-width:5.77600001999999968;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;font-family:Sans"
+         xml:space="preserve"><tspan
+           style="font-size:234.84202576000001272px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#dadada;fill-opacity:1;stroke:#666666;stroke-width:5.77600001999999968;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans Mono;-inkscape-font-specification:Bitstream Vera Sans Mono Bold"
+           y="947.83533"
+           x="179.57214"
+           id="tspan3764-6"
+           sodipodi:role="line">B</tspan></text>
+    </g>
   </g>
 </svg>
diff --git a/assets/blather_inactive.png b/assets/blather_inactive.png
new file mode 100644
index 0000000..63d1572
--- /dev/null
+++ b/assets/blather_inactive.png
Binary files differdiff --git a/assets/blathersrc.png b/assets/blathersrc.png
new file mode 100644
index 0000000..fb187e4
--- /dev/null
+++ b/assets/blathersrc.png
Binary files differdiff --git a/data/icon_inactive.png b/data/icon_inactive.png
new file mode 100644
index 0000000..63d1572
--- /dev/null
+++ b/data/icon_inactive.png
Binary files differ