diff options
-rw-r--r-- | GtkTrayUI.py | 100 | ||||
-rw-r--r-- | assets/blather.svg | 91 | ||||
-rw-r--r-- | assets/blather_inactive.png | bin | 0 -> 13379 bytes | |||
-rw-r--r-- | assets/blathersrc.png | bin | 0 -> 27324 bytes | |||
-rw-r--r-- | data/icon_inactive.png | bin | 0 -> 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 |