From 9fcc469afa01fc9ea42e4cbb96c5b195c5bcd371 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 11 Jan 2012 17:00:30 +0100 Subject: all reupped --- .../.history/a/f042c6c4a8f2001019c79f38f40e52ba | 135 +++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/f042c6c4a8f2001019c79f38f40e52ba (limited to 'Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/f042c6c4a8f2001019c79f38f40e52ba') diff --git a/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/f042c6c4a8f2001019c79f38f40e52ba b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/f042c6c4a8f2001019c79f38f40e52ba new file mode 100644 index 0000000..0155a44 --- /dev/null +++ b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a/f042c6c4a8f2001019c79f38f40e52ba @@ -0,0 +1,135 @@ +import sys +import locale +import pygtk +import gtk #@UnresolvedImport +import gtk.glade #@UnresolvedImport +from pyCatcherModel import BaseStationInformation +from xdot import DotWidget +import datetime +import time + +class PyCatcherGUI: + + def __init__(self, catcher_controller): + encoding = locale.getlocale()[1] + self._utf8conv = lambda x : unicode(x, encoding).encode('utf8') + + self._scan_toggled_on = False + self._firmware_toggled_on = False + + self._catcher_controller = catcher_controller + + self._w_tree = gtk.glade.XML("../GUI/mainWindow.glade") + + self._bs_tree_view = self._w_tree.get_widget("bs_table") + self._add_column("Provider", 0) + self._add_column("Frequency", 1) + self._add_column("Strength",2) + self._add_column("Last seen", 3) + self._bs_tree_view.set_model(self._catcher_controller.bs_tree_list_data) + + self._horizontal_container = self._w_tree.get_widget("vbox4") + self._dot_widget = DotWidget() + self._horizontal_container.pack_start_defaults(self._dot_widget) + self._dot_widget.show() + + self._main_window = self._w_tree.get_widget("main_window") + signals = {"on_main_window_destroy": self._on_main_window_destroy, + "on_scan_toggle_toggled": self._on_toggle_scan, + "on_firmware_toggle_toggled": self._on_toggle_firmware, + "on_graph_zoom_in_clicked": self._dot_widget.on_zoom_in, + "on_graph_zoom_out_clicked": self._dot_widget.on_zoom_out, + "on_graph_fit_clicked": self._dot_widget.on_zoom_fit, + "on_graph_zoom_default_clicked": self._dot_widget.on_zoom_100, + "on_save_project_clicked": self._on_save_project, + "on_open_file_clicked": self._on_open_file + } + self._w_tree.signal_autoconnect(signals) + + log_view = self._w_tree.get_widget("log_output") + self._log_buffer = log_view.get_buffer() + self._log_buffer.insert(self._log_buffer.get_end_iter(),self._utf8conv("-- Log execution on " + datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M %p") + " --\n\n")) + + self._main_window.show() + + + def _add_column(self, name, index): + column = gtk.TreeViewColumn(name, gtk.CellRendererText(), text=index) + column.set_resizable(True) + column.set_sort_column_id(index) + self._bs_tree_view.append_column(column) + + def _on_main_window_destroy(self, widget): + self._catcher_controller.shutdown() + gtk.main_quit() + + def _on_toggle_scan(self, widget): + if(not self._scan_toggled_on): + self._catcher_controller.start_scan() + self._scan_toggled_on = True + else: + self._catcher_controller.stop_scan() + self._scan_toggled_on = False + + def _on_toggle_firmware(self, widget): + if(not self._firmware_toggled_on): + self._catcher_controller.start_firmware() + self._firmware_toggled_on = True + else: + self._catcher_controller.stop_firmware() + self._firmware_toggled_on = False + + def _on_open_file(self, widget): + chooser = gtk.FileChooserDialog(title="Open dot File", + action=gtk.FILE_CHOOSER_ACTION_OPEN, + buttons=(gtk.STOCK_CANCEL, + gtk.RESPONSE_CANCEL, + gtk.STOCK_OPEN, + gtk.RESPONSE_OK)) + chooser.set_default_response(gtk.RESPONSE_OK) + filter = gtk.FileFilter() + filter.set_name("Graphviz dot files") + filter.add_pattern("*.dot") + chooser.add_filter(filter) + filter = gtk.FileFilter() + filter.set_name("All files") + filter.add_pattern("*") + chooser.add_filter(filter) + if chooser.run() == gtk.RESPONSE_OK: + filename = chooser.get_filename() + chooser.destroy() + self.load_dot_from_file(filename) + else: + chooser.destroy() + + def load_dot_from_file(self, filename): + try: + fp = file(filename, 'rt') + self.load_dot(fp.read(), filename) + fp.close() + except IOError, ex: + self.show_info(ex) + + def load_dot(self, dotcode, filename=""): + if self._dot_widget.set_dotcode(dotcode, filename): + self._dot_widget.zoom_to_fit() + + def _on_save_project(self, widget): + pass + + def show_info(self, message, title='PyCatcher', time_to_sleep=3, type='INFO'): + gtk_type = {'INFO' : gtk.MESSAGE_INFO, + 'ERROR': gtk.MESSAGE_ERROR} + + dlg = gtk.MessageDialog(type=gtk.MESSAGE_INFO, + message_format=str(message) + ) + + dlg.set_title(title) + #dlg.run() + dlg.show() + time.sleep(time_to_sleep) + dlg.destroy() + + def log_line(self, line): + self._log_buffer.insert(self._log_buffer.get_end_iter(),self._utf8conv(datetime.datetime.now().strftime("%I:%M:%S %p")+ ": " + line + "\n")) \ No newline at end of file -- cgit v1.2.3-55-g7522