Ejemplo n.º 1
0
    def __init__(self, window, disc_bn=DiscreteBayesianNetworkExt()):
        self.window = window

        # Create graphic widgets
        self.box_disc_bn, self.drawing_box, self.toolbar_edit, self.toolbar_evidence, self.bedit, self.brun, self.bvertex, \
            self.bclear_evidence = ugraphic.create_widget(
                res.TAB_DISC_BAYES_NET_GLADE,
                [BOX_DISC_BN, DRAWING_BOX, TB_EDIT_BN, TB_EVIDENCE, RB_EDIT, RB_RUN, RB_VERTEX, RB_CLEAR_EVIDENCE], self)

        super(BoxDiscreteBN, self).__init__(spacing=1)
        self.pack_start(self.box_disc_bn, True, True, 0)

        self.set_visible(True)

        self.drawer = GraphDrawer()
        self.drawing_box.pack_start(self.drawer.get_drawing_area(), True, True,
                                    0)

        self.mode = Mode.edit_vertex

        # Temporal vertex for edge
        self.vertex_1 = None
        self.selected_vertex = None
        self.selected_edge = None
        self.marginals = None
        self.evidences = {}

        # Temporal arrow for mouse motion
        self.tmp_arrow = None

        # Graph
        self.disc_bn = disc_bn

        # Vertex locations to draw
        self.vertex_locations = {}

        self.clicked_point = None
        self.button_pressed = False

        # connect listeners
        self.drawer.clicked_element_listener = self.clicked_element
        self.drawer.clicked_clear_space_listener = self.clicked_clear_space
        self.drawer.right_click_elem_listener = self.right_clicked_elem
        self.drawer.double_clicked_element_listener = self.double_click_on_elem

        # Graphical objects in the background
        self.background_gobjs = []
Ejemplo n.º 2
0
    def __init__(self, window, disc_bn=DiscreteBayesianNetworkExt()):
        self.window = window

        # Create graphic widgets
        self.box_disc_bn, self.drawing_box, self.toolbar_edit, self.toolbar_evidence, self.bedit, self.brun, self.bvertex, \
            self.bclear_evidence = ugraphic.create_widget(
                res.TAB_DISC_BAYES_NET_GLADE,
                [BOX_DISC_BN, DRAWING_BOX, TB_EDIT_BN, TB_EVIDENCE, RB_EDIT, RB_RUN, RB_VERTEX, RB_CLEAR_EVIDENCE], self)

        super(BoxDiscreteBN, self).__init__(spacing=1)
        self.pack_start(self.box_disc_bn, True, True, 0)

        self.set_visible(True)

        self.drawer = GraphDrawer()
        self.drawing_box.pack_start(self.drawer.get_drawing_area(), True, True, 0)

        self.mode = Mode.edit_vertex

        # Temporal vertex for edge
        self.vertex_1 = None
        self.selected_vertex = None
        self.selected_edge = None
        self.marginals = None
        self.evidences = {}

        # Temporal arrow for mouse motion
        self.tmp_arrow = None

        # Graph
        self.disc_bn = disc_bn

        # Vertex locations to draw
        self.vertex_locations = {}

        self.clicked_point = None
        self.button_pressed = False

        # connect listeners
        self.drawer.clicked_element_listener = self.clicked_element
        self.drawer.clicked_clear_space_listener = self.clicked_clear_space
        self.drawer.right_click_elem_listener = self.right_clicked_elem
        self.drawer.double_clicked_element_listener = self.double_click_on_elem

        # Graphical objects in the background
        self.background_gobjs = []
Ejemplo n.º 3
0
    def show_cpt_dialog(self, window, disc_bn, selected_vetex):
        # Get widgets from dialog.
        cpt_dialog, treeview_cpt, text_var_name, button_cancel, \
        button_ok, button_rand, treeview_states, badd_state, bremove_state = \
            ugraphic.create_widget(res.DISC_VAR_DIALOG_GLADE,
                                ["dialog_cpt",
                                "treeview_cpt",
                                "text_var_name",
                                "button_cancel",
                                "button_ok",
                                "button_rand",
                                "treeview_states",
                                "badd_state",
                                "bremove_state"])


        # cpt_dialog.set_parent(window)
        cpt_dialog.set_modal(True)
        text_var_name.set_text(selected_vetex)

        #TODO clone disc_bn and assign only if accept

        # load info for CPT
        gcpt_table = GraphicCptTable(disc_bn,
                                     selected_vetex,
                                     treeview_cpt)

        def state_changed_func():
            gcpt_table.modify_treeview_for_cpt()


        gstates_table = StatesTable(disc_bn, selected_vetex,
                                    state_changed_func, treeview_states,
                                    badd_state, bremove_state)
        # Quit
        def quit(*args):
            cpt_dialog.destroy()
        cpt_dialog.connect("delete-event", quit)

        # Cancel
        def cancel_ev(widget):
            cpt_dialog.destroy()

        button_cancel.connect("clicked", cancel_ev)

        # Fill rand
        def fill_rand(widget):
            gcpt_table.fill_random()

        button_rand.connect("clicked", fill_rand)

        # OK
        def ok_ev(widget):
            # validate CPT
            if not gcpt_table.validate_cpt():
                dialog = Gtk.MessageDialog(cpt_dialog, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK, "Invalid CPT")
                dialog.format_secondary_text("Every row must sum 100 %")
                dialog.set_modal(True)
                dialog.run()
                dialog.destroy()

                return
            else:
                self.var_name = text_var_name.get_text()
                # Save cpt in current name
                cprob = gcpt_table.get_cprob_from_table()
                disc_bn.set_cprob(selected_vetex, cprob)

                cpt_dialog.destroy()

        button_ok.connect("clicked", ok_ev)

        cpt_dialog.run()
Ejemplo n.º 4
0
    def on_about(self, widget):
        [aboutdialog] = ugraphic.create_widget(res.DIALOG_ABOUT, ["aboutdialog"])

        aboutdialog.set_modal(True)
        aboutdialog.run()
        aboutdialog.destroy()