Ejemplo n.º 1
0
class KMC_Viewer():
    """A graphical front-end to run, manipulate
    and view a kMC model.
    """
    def __init__(self, model=None):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.connect('delete-event', self.exit)

        self.vbox = gtk.VBox()
        self.window.add(self.vbox)
        queue = multiprocessing.Queue(maxsize=3)
        self.parameter_queue = multiprocessing.Queue(maxsize=50)
        self.signal_queue = multiprocessing.Queue(maxsize=10)
        if model is None:
            self.model = KMC_Model(queue, self.parameter_queue, self.signal_queue)
        else:
            self.model = model
            self.model.image_queue = queue
            self.model.parameter_queue = self.parameter_queue
            self.model.signal_queue = self.signal_queue
        self.viewbox = KMC_ViewBox(queue, self.signal_queue,
                                   self.vbox, self.window)

        for param_name in filter(lambda p: \
            settings.parameters[p]['adjustable'], settings.parameters):
            param = settings.parameters[param_name]
            slider = ParamSlider(param_name, param['value'],
                                 param['min'], param['max'],
                                 param['scale'], self.parameter_callback)
            self.vbox.add(slider)
            self.vbox.set_child_packing(slider, expand=False,
                                        fill=False, padding=0,
                                        pack_type=gtk.PACK_START)
        #print('initialized kmc_viewer')
        #print(self.window.get_title())
        self.window.set_title('kmos GUI')
        #print(self.window.get_title())
        self.window.show_all()

    def parameter_callback(self, name, value):
        settings.parameters[name]['value'] = value
        self.parameter_queue.put(settings.parameters)

    def exit(self, widget, event):
        #print('Starting shutdown procedure')
        self.viewbox.kill()
        #print(' ... sent kill to viewbox')
        self.viewbox.join()
        #print(' ... viewbox thread joined')
        self.signal_queue.put('STOP')
        #print(' ... sent stop to model')
        self.model.terminate()
        self.model.join()
        #print(' ... model thread joined')
        base.deallocate_system()
        gtk.main_quit()
        return True
Ejemplo n.º 2
0
class KMC_Viewer():
    """A graphical front-end to run, manipulate
    and view a kMC model.
    """
    def __init__(self, model=None):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.connect('delete-event', self.exit)

        self.vbox = gtk.VBox()
        self.window.add(self.vbox)
        queue = multiprocessing.Queue(maxsize=3)
        self.parameter_queue = multiprocessing.Queue(maxsize=50)
        self.signal_queue = multiprocessing.Queue(maxsize=10)
        if model is None:
            self.model = KMC_Model(queue, self.parameter_queue,
                                   self.signal_queue)
        else:
            self.model = model
            self.model.image_queue = queue
            self.model.parameter_queue = self.parameter_queue
            self.model.signal_queue = self.signal_queue
        self.viewbox = KMC_ViewBox(queue, self.signal_queue, self.vbox,
                                   self.window)

        for param_name in filter(lambda p: \
            settings.parameters[p]['adjustable'], settings.parameters):
            param = settings.parameters[param_name]
            slider = ParamSlider(param_name, param['value'], param['min'],
                                 param['max'], param['scale'],
                                 self.parameter_callback)
            self.vbox.add(slider)
            self.vbox.set_child_packing(slider,
                                        expand=False,
                                        fill=False,
                                        padding=0,
                                        pack_type=gtk.PACK_START)
        #print('initialized kmc_viewer')
        #print(self.window.get_title())
        self.window.set_title('kmos GUI')
        #print(self.window.get_title())
        self.window.show_all()

    def parameter_callback(self, name, value):
        settings.parameters[name]['value'] = value
        self.parameter_queue.put(settings.parameters)

    def exit(self, widget, event):
        #print('Starting shutdown procedure')
        self.viewbox.kill()
        #print(' ... sent kill to viewbox')
        self.viewbox.join()
        #print(' ... viewbox thread joined')
        self.signal_queue.put('STOP')
        #print(' ... sent stop to model')
        self.model.terminate()
        self.model.join()
        #print(' ... model thread joined')
        base.deallocate_system()
        gtk.main_quit()
        return True