示例#1
0
    def __init__(self, master=None):
        Tk.Tk.__init__(self, master)

        # Get root directory
        # Get the root path
        can_path = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                                os.path.pardir)  # Resolves symbolic links
        self.rootPath = os.path.abspath(can_path)

        # Instantiate a logger
        self.logger = logging.getLogger(__name__)
        self.logFormatter = logging.Formatter(
            '%(asctime)s %(levelname)-8s %(message)s')
        self.logger.setLevel(logging.DEBUG)
        # TODO: Log to console?
        #console = logging.StreamHandler(stream=sys.stdout)
        #self.logger.addHandler(console)
        # TODO: Log to file?

        # Load applets
        import applets
        self.applets = applets.getAllApplets()

        for applet in self.applets.keys():
            self.logger.debug("Found Applet: %s", applet)

        # Instantiate a LabManager
        import socket
        localhost = socket.gethostname()

        self.lab = LabManager()
        if not self.lab.addManager(localhost):
            # Instantiate a local InstrumentManager object
            self.local_manager = InstrumentManager()
            self.local_manager.start()
            self.lab.addManager(localhost)

        # Register new resource callback on local manager
        man = self.lab.getManager(localhost)
        if man is not None:
            man._registerCallback('event_new_resource',
                                  lambda: self.cb_event_new_resource())

        # GUI Startup
        self.rebuild()
        self.rebind()

        # TODO: Persistent Settings

        self.process_notifications()