Ejemplo n.º 1
0
    def register_view(self, view):
        super(MatchMineralController, self).register_view(view)
        if view is not None:
            # MATCHES Treeview:
            tv = self.view["tv_matches"]

            setup_treeview(tv, None, reset=True, on_selection_changed=self.selection_changed)

            tv.append_column(new_text_column("Name", markup_col=0, xalign=0))

            tv.append_column(new_text_column("Abbr.", markup_col=1, expand=False))

            def get_value(column, cell, model, itr, *args):
                value = model.get_value(itr, column.get_col_attr("markup"))
                try:
                    value = "%.5f" % value
                except TypeError:
                    value = ""
                cell.set_property("markup", value)
                return

            tv.append_column(new_text_column("Score", markup_col=4, expand=False, data_func=get_value))

            # ALL MINERALS Treeview:
            tv = self.view["tv_minerals"]
            setup_treeview(tv, None, reset=True, on_selection_changed=self.selection_changed)

            tv.append_column(new_text_column("Name", markup_col=0, xalign=0))

            tv.append_column(new_text_column("Abbr.", markup_col=1, expand=False))
Ejemplo n.º 2
0
 def setup_experimental_pattern_tree_view(self, store, widget):
     """
         Creates the experimental data TreeView layout and behavior
     """
     setup_treeview(widget,
                    store,
                    on_cursor_changed=self.on_exp_data_tv_cursor_changed,
                    sel_mode=gtk.SELECTION_MULTIPLE)
     # X Column:
     widget.append_column(
         new_text_column('°2θ',
                         text_col=store.c_x,
                         editable=True,
                         edited_callback=(self.on_xy_data_cell_edited,
                                          (self.model.experimental_pattern,
                                           0))))
     # Y Column:
     widget.append_column(
         new_text_column('Intensity',
                         text_col=store.c_y,
                         editable=True,
                         edited_callback=(self.on_xy_data_cell_edited,
                                          (self.model.experimental_pattern,
                                           1))))
     # Other properties:
     self.exp_line_ctrl = LinePropertiesController(
         model=self.model.experimental_pattern,
         view=self.view.exp_line_view,
         parent=self)
Ejemplo n.º 3
0
    def setup_wavelength_distribution_tree_view(self, store, widget):
        """
            Creates the wavelength distribution TreeView layout and behavior
        """
        setup_treeview(widget,
                       store,
                       on_cursor_changed=self.on_wld_tv_cursor_changed,
                       sel_mode='MULTIPLE')
        widget.set_model(store)

        def data_func(col, cell, model, iter, colnr):
            cell.set_property("text", "%g" % model.get(iter, colnr)[0])

        # X Column:
        widget.append_column(
            new_text_column(
                'Wavelength (nm)',
                text_col=store.c_x,
                editable=True,
                data_func=(data_func, (store.c_x, )),
                edited_callback=(self.on_xy_data_cell_edited,
                                 (self.model.wavelength_distribution, 0))))
        # Y Column:
        widget.append_column(
            new_text_column(
                'Fraction',
                text_col=store.c_y,
                editable=True,
                data_func=(data_func, (store.c_y, )),
                edited_callback=(self.on_xy_data_cell_edited,
                                 (self.model.wavelength_distribution, 1))))
Ejemplo n.º 4
0
    def setup_exclusion_ranges_tree_view(self, store, widget):
        """
            Creates the exclusion ranges TreeView layout and behavior
        """
        setup_treeview(
            widget,
            store,
            on_cursor_changed=self.on_exclusion_ranges_tv_cursor_changed,
            sel_mode='MULTIPLE')

        def data_func(col, cell, model, iter, colnr):
            cell.set_property("text", "%g" % model.get(iter, colnr)[0])

        widget.append_column(
            new_text_column('From [°2θ]',
                            text_col=store.c_x,
                            editable=True,
                            data_func=(data_func, (store.c_x, )),
                            edited_callback=(self.on_xy_data_cell_edited,
                                             (self.model.exclusion_ranges, 0)),
                            resizable=True,
                            expand=True))
        widget.append_column(
            new_text_column('To [°2θ]',
                            text_col=store.c_y,
                            editable=True,
                            data_func=(data_func, (store.c_y, )),
                            edited_callback=(self.on_xy_data_cell_edited,
                                             (self.model.exclusion_ranges, 1)),
                            resizable=True,
                            expand=True))
Ejemplo n.º 5
0
 def setup_exclusion_ranges_tree_view(self, store, widget):
     """
         Creates the exclusion ranges TreeView layout and behavior
     """
     setup_treeview(
         widget,
         store,
         on_cursor_changed=self.on_exclusion_ranges_tv_cursor_changed,
         sel_mode=gtk.SELECTION_MULTIPLE)
     widget.append_column(
         new_text_column('From [°2θ]',
                         text_col=store.c_x,
                         editable=True,
                         edited_callback=(self.on_xy_data_cell_edited,
                                          (self.model.exclusion_ranges, 0)),
                         resizable=True,
                         expand=True))
     widget.append_column(
         new_text_column('To [°2θ]',
                         text_col=store.c_y,
                         editable=True,
                         edited_callback=(self.on_xy_data_cell_edited,
                                          (self.model.exclusion_ranges, 1)),
                         resizable=True,
                         expand=True))
    def setup_raw_pattern_tree_view(self, store, widget):
        """
            Creates the raw pattern TreeView layout and behavior
        """

        setup_treeview(widget,
                       store,
                       on_cursor_changed=self.on_raw_pattern_tv_cursor_changed,
                       sel_mode=gtk.SELECTION_MULTIPLE)
        # X Column:
        widget.append_column(
            new_text_column(u'°2θ',
                            text_col=store.c_x,
                            editable=True,
                            edited_callback=(self.on_xy_data_cell_edited,
                                             (self.model.raw_pattern, 0)),
                            resizable=True,
                            expand=True))
        # Y Column:
        widget.append_column(
            new_text_column(u'Intensity',
                            text_col=store.c_y,
                            editable=True,
                            edited_callback=(self.on_xy_data_cell_edited,
                                             (self.model.raw_pattern, 1)),
                            resizable=True,
                            expand=True))
Ejemplo n.º 7
0
 def setup_calculated_pattern_tree_view(self, store, widget):
     """
         Creates the calculated data TreeView layout and behavior
     """
     setup_treeview(widget, store,
         on_cursor_changed=self.on_exp_data_tv_cursor_changed,
         sel_mode=gtk.SELECTION_NONE)
     store.connect('columns_changed', self.on_calc_columns_changed),
     self.update_calc_treeview(widget)
     # Other properties:
     self.calc_line_ctrl = LinePropertiesController(model=self.model.calculated_pattern, view=self.view.calc_line_view, parent=self)
Ejemplo n.º 8
0
 def setup_experimental_pattern_tree_view(self, store, widget):
     """
         Creates the experimental data TreeView layout and behavior
     """
     setup_treeview(widget, store,
         on_cursor_changed=self.on_exp_data_tv_cursor_changed,
         sel_mode='MULTIPLE')
     store.connect('columns_changed', self.on_exp_columns_changed)
     self.update_exp_treeview(widget)
     # Other properties:
     self.exp_line_ctrl = LinePropertiesController(model=self.model.experimental_pattern, view=self.view.exp_line_view, parent=self)
Ejemplo n.º 9
0
    def _reset_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode=gtk.SELECTION_MULTIPLE, reset=True)
        tv.set_model(model)

        # Atom column:
        def atom_renderer(column, cell, model, itr, xxx_todo_changeme):
            (obj_col, lbl_col) = xxx_todo_changeme
            obj = model.get_value(itr, obj_col)
            if lbl_col is not None:
                lbl = model.get_value(itr, lbl_col)
                if isinstance(lbl, collections.Callable): lbl = lbl(obj)
                cell.set_property("text", lbl)
            else:
                if hasattr(obj, "name"):
                    cell.set_property('text', obj.name)
                else:
                    cell.set_property('text', '#NA#')

        def adjust_combo(cell, editable, path, data=None):
            if editable is not None:
                rend = gtk.CellRendererText()
                editable.clear()
                editable.pack_start(rend)
                editable.set_cell_data_func(rend, atom_renderer, (0, 2))

        tv.append_column(
            new_combo_column("Atoms",
                             changed_callback=self.on_atom_changed,
                             edited_callback=self.on_atom_edited,
                             editing_started_callback=adjust_combo,
                             xalign=0.0,
                             model=self.model.create_prop_store(),
                             data_func=(atom_renderer, (0, None)),
                             text_column=0,
                             editable=True))

        # Content column:
        def on_float_edited(rend, path, new_text, col):
            itr = model.get_iter(path)
            try:
                model.set_value(itr, col, float(new_text))
            except ValueError:
                logger.exception("Invalid value entered ('%s')!" % new_text)
            return True

        tv.append_column(
            new_text_column('Default contents',
                            text_col=2,
                            xalign=0.0,
                            editable=True,
                            data_func=create_float_data_func(),
                            edited_callback=(on_float_edited, (2, ))))
Ejemplo n.º 10
0
    def setup_treeview(self, tv):
        """
            Sets up the treeview with columns based on the columns-tuple passed
            to the __init__ or set in the class definition.
            Subclasses can override either this method completely or provide
            custom column creation code on a per-column basis.
            To do this, create a method for e.g. column with colnr = 2:
            def setup_treeview_col_2(self, treeview, name, col_descr, col_index, tv_col_nr):
                ...
            If a string description of the column number was given, e.g. for the
            column c_name the definition should be:
            def setup_treeview_col_c_name(self, treeview, name, col_descr, col_index, tv_col_nr):
                ...
                
            The method should return True upon success or False otherwise.
        """
        sel_mode = gtk.SELECTION_MULTIPLE if self.multi_selection else gtk.SELECTION_SINGLE  # @UndefinedVariable
        setup_treeview(tv,
                       self.treemodel,
                       sel_mode=sel_mode,
                       on_selection_changed=self.objects_tv_selection_changed)
        tv.set_model(self.treemodel)

        # reset:
        for col in tv.get_columns():
            tv.remove_column(col)

        # add columns
        for tv_col_nr, (name, col_descr) in enumerate(self.columns):
            try:
                col_index = int(col_descr)
            except:
                col_index = getattr(self.treemodel, str(col_descr), col_descr)

            handled = False
            if hasattr(self, "setup_treeview_col_%s" % str(col_descr)):
                handler = getattr(self,
                                  "setup_treeview_col_%s" % str(col_descr))
                if isinstance(handler, collections.Callable):
                    handled = handler(tv, name, col_descr, col_index,
                                      tv_col_nr)
            # custom handler failed or not present, default text column:
            if not handled:
                tv.append_column(
                    new_text_column(name,
                                    text_col=col_index,
                                    resizable=(tv_col_nr == 0),
                                    expand=(tv_col_nr == 0),
                                    xalign=0.0 if tv_col_nr == 0 else 0.5))

        return True
Ejemplo n.º 11
0
    def _reset_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode='MULTIPLE', reset=True)
        tv.set_model(model)

        # Name column:
        def text_renderer(column, cell, model, itr, args=None):
            driven_by_other = model.get_value(itr, model.c_driven_by_other)
            cell.set_property('editable', not driven_by_other)
            cell.set_property(
                'style',
                Pango.Style.ITALIC if driven_by_other else Pango.Style.NORMAL)

        col = new_text_column('Name',
                              data_func=text_renderer,
                              editable=True,
                              edited_callback=(self.on_item_cell_edited,
                                               (model, model.c_name)),
                              resizable=False,
                              text_col=model.c_name)
        setattr(col, "col_descr", 'Name')
        tv.append_column(col)

        # Value of the relation:
        float_rend = create_float_data_func()

        def data_renderer(column, cell, model, itr, args=None):
            text_renderer(column, cell, model, itr, args)
            float_rend(column, cell, model, itr, args)

        col = new_text_column('Value',
                              data_func=data_renderer,
                              editable=True,
                              edited_callback=(self.on_item_cell_edited,
                                               (model, model.c_value)),
                              resizable=False,
                              text_col=model.c_value)
        setattr(col, "col_descr", 'Value')
        tv.append_column(col)

        # Up, down and edit arrows:
        def setup_image_button(image, colnr):
            col = new_pb_column(" ",
                                resizable=False,
                                expand=False,
                                stock_id=image)
            setattr(col, "col_descr", colnr)
            tv.append_column(col)

        setup_image_button("213-up-arrow", "Up")
        setup_image_button("212-down-arrow", "Down")
        setup_image_button("030-pencil", "Edit")
Ejemplo n.º 12
0
 def setup_calculated_pattern_tree_view(self, store, widget):
     """
         Creates the calculated data TreeView layout and behavior
     """
     setup_treeview(widget,
                    store,
                    on_cursor_changed=self.on_exp_data_tv_cursor_changed,
                    sel_mode=gtk.SELECTION_NONE)
     store.connect('columns_changed', self.on_calc_columns_changed),
     self.update_calc_treeview(widget)
     # Other properties:
     self.calc_line_ctrl = LinePropertiesController(
         model=self.model.calculated_pattern,
         view=self.view.calc_line_view,
         parent=self)
Ejemplo n.º 13
0
 def setup_experimental_pattern_tree_view(self, store, widget):
     """
         Creates the experimental data TreeView layout and behavior
     """
     setup_treeview(widget,
                    store,
                    on_cursor_changed=self.on_exp_data_tv_cursor_changed,
                    sel_mode='MULTIPLE')
     store.connect('columns_changed', self.on_exp_columns_changed)
     self.update_exp_treeview(widget)
     # Other properties:
     self.exp_line_ctrl = LinePropertiesController(
         model=self.model.experimental_pattern,
         view=self.view.exp_line_view,
         parent=self)
Ejemplo n.º 14
0
 def setup_exclusion_ranges_tree_view(self, store, widget):
     """
         Creates the exclusion ranges TreeView layout and behavior
     """
     setup_treeview(widget, store,
         on_cursor_changed=self.on_exclusion_ranges_tv_cursor_changed,
         sel_mode=gtk.SELECTION_MULTIPLE)
     widget.append_column(new_text_column(
         u'From [°2θ]', text_col=store.c_x, editable=True,
         edited_callback=(self.on_xy_data_cell_edited, (self.model.exclusion_ranges, 0)),
         resizable=True, expand=True))
     widget.append_column(new_text_column(
         u'To [°2θ]', text_col=store.c_y, editable=True,
         edited_callback=(self.on_xy_data_cell_edited, (self.model.exclusion_ranges, 1)),
         resizable=True, expand=True))
    def setup_treeview(self, tv):
        """
            Sets up the treeview with columns based on the columns-tuple passed
            to the __init__ or set in the class definition.
            Subclasses can override either this method completely or provide
            custom column creation code on a per-column basis.
            To do this, create a method for e.g. column with colnr = 2:
            def setup_treeview_col_2(self, treeview, name, col_descr, col_index, tv_col_nr):
                ...
            If a string description of the column number was given, e.g. for the
            column c_name the definition should be:
            def setup_treeview_col_c_name(self, treeview, name, col_descr, col_index, tv_col_nr):
                ...
                
            The method should return True upon success or False otherwise.
        """
        sel_mode = gtk.SELECTION_MULTIPLE if self.multi_selection else gtk.SELECTION_SINGLE # @UndefinedVariable
        setup_treeview(
            tv, self.treemodel,
            sel_mode=sel_mode,
            on_selection_changed=self.objects_tv_selection_changed)
        tv.set_model(self.treemodel)

        # reset:
        for col in tv.get_columns():
            tv.remove_column(col)

        # add columns
        for tv_col_nr, (name, col_descr) in enumerate(self.columns):
            try:
                col_index = int(col_descr)
            except:
                col_index = getattr(self.treemodel, str(col_descr), col_descr)

            handled = False
            if hasattr(self, "setup_treeview_col_%s" % str(col_descr)):
                handler = getattr(self, "setup_treeview_col_%s" % str(col_descr))
                if callable(handler):
                    handled = handler(tv, name, col_descr, col_index, tv_col_nr)
            # custom handler failed or not present, default text column:
            if not handled:
                tv.append_column(new_text_column(
                    name, text_col=col_index,
                    resizable=(tv_col_nr == 0),
                    expand=(tv_col_nr == 0),
                    xalign=0.0 if tv_col_nr == 0 else 0.5))

        return True
    def _reset_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode=gtk.SELECTION_MULTIPLE, reset=True)
        tv.set_model(model)

        # Atom column:
        def atom_renderer(column, cell, model, itr, (obj_col, lbl_col)):
            obj = model.get_value(itr, obj_col)
            if lbl_col is not None:
                lbl = model.get_value(itr, lbl_col)
                if callable(lbl): lbl = lbl(obj)
                cell.set_property("text", lbl)
            else:
                if hasattr(obj, "name"):
                    cell.set_property('text', obj.name)
                else:
                    cell.set_property('text', '#NA#')
Ejemplo n.º 17
0
    def _reset_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode=gtk.SELECTION_MULTIPLE, reset=True)
        tv.set_model(model)

        # Atom column:
        def atom_renderer(column, cell, model, itr, (obj_col, lbl_col)):
            obj = model.get_value(itr, obj_col)
            if lbl_col is not None:
                lbl = model.get_value(itr, lbl_col)
                if callable(lbl): lbl = lbl(obj)
                cell.set_property("text", lbl)
            else:
                if hasattr(obj, "name"):
                    cell.set_property('text', obj.name)
                else:
                    cell.set_property('text', '#NA#')
Ejemplo n.º 18
0
    def _setup_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode=gtk.SELECTION_MULTIPLE, reset=True)
        tv.set_model(model)

        # Add Atom name, default z, calculated z and #:
        def add_text_col(title, colnr, is_float=True, editable=True):
            tv.append_column(
                new_text_column(
                    title,
                    data_func=create_float_data_func() if is_float else None,
                    editable=editable,
                    edited_callback=(self.on_item_cell_edited, (model, colnr)) if editable else None,
                    resizable=False,
                    text_col=colnr,
                )
            )

        add_text_col("Atom name", model.c_name, is_float=False)
        add_text_col("Def. Z (nm)", model.c_default_z)
        add_text_col("Calc. Z (nm)", model.c_z, editable=False)
        add_text_col("#", model.c_pn)

        # Add atom type column (combo box with atom types from pyxrd.project level):
        def atom_type_renderer(column, cell, model, itr, col=None):
            try:
                name = model.get_user_data_from_path(model.get_path(itr)).atom_type.name
            except:
                name = "#NA#"
            cell.set_property("text", name)
            return

        def adjust_combo(cell, editable, path, data=None):
            editable.set_wrap_width(10)

        tv.append_column(
            new_combo_column(
                "Element",
                data_func=(atom_type_renderer, (3,)),
                changed_callback=self.on_atom_type_changed,
                edited_callback=(self.on_atom_type_edited, (model,)),
                editing_started_callback=adjust_combo,
                model=self.atom_types_treemodel,
                text_column=self.atom_types_treemodel.c_name,
                editable=True,
                has_entry=True,
            )
        )
Ejemplo n.º 19
0
 def setup_experimental_pattern_tree_view(self, store, widget):
     """
         Creates the experimental data TreeView layout and behavior
     """
     setup_treeview(widget, store,
         on_cursor_changed=self.on_exp_data_tv_cursor_changed,
         sel_mode=gtk.SELECTION_MULTIPLE)
     # X Column:
     widget.append_column(new_text_column(
         u'°2θ', text_col=store.c_x, editable=True,
         edited_callback=(self.on_xy_data_cell_edited, (self.model.experimental_pattern, 0))))
     # Y Column:
     widget.append_column(new_text_column(
         u'Intensity', text_col=store.c_y, editable=True,
         edited_callback=(self.on_xy_data_cell_edited, (self.model.experimental_pattern, 1))))
     # Other properties:
     self.exp_line_ctrl = LinePropertiesController(model=self.model.experimental_pattern, view=self.view.exp_line_view, parent=self)
Ejemplo n.º 20
0
    def _reset_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode='MULTIPLE', reset=True)
        tv.set_model(model)

        # Atom column:
        self.combo_model = self.model.create_prop_store()
        self.combo_model2 = Gtk.ListStore(str)
        for row in self.combo_model:
            self.combo_model2.append(row[2:3])

        def atom_renderer(column, cell, model, itr, *args):
            obj = model.get_value(itr, 0)
            if hasattr(obj, "name"):
                cell.set_property('text', obj.name)
            else:
                cell.set_property('text', '#NA#')

        tv.append_column(
            new_combo_column("Atoms",
                             data_func=atom_renderer,
                             changed_callback=self.on_atom_changed,
                             edited_callback=self.on_atom_edited,
                             xalign=0.0,
                             expand=False,
                             has_entry=False,
                             model=self.combo_model2,
                             text_column=0,
                             editable=True))

        # Content column:
        def on_float_edited(rend, path, new_text, col):
            itr = model.get_iter(path)
            try:
                model.set_value(itr, col, float(new_text))
            except ValueError:
                logger.exception("Invalid value entered ('%s')!" % new_text)
            return True

        tv.append_column(
            new_text_column('Default contents',
                            text_col=2,
                            xalign=0.0,
                            editable=True,
                            data_func=create_float_data_func(),
                            edited_callback=(on_float_edited, (2, ))))
Ejemplo n.º 21
0
    def _setup_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode=gtk.SELECTION_MULTIPLE, reset=True)
        tv.set_model(model)

        # Add Atom name, default z, calculated z and #:
        def add_text_col(title, colnr, is_float=True, editable=True):
            tv.append_column(
                new_text_column(
                    title,
                    data_func=create_float_data_func() if is_float else None,
                    editable=editable,
                    edited_callback=(self.on_item_cell_edited,
                                     (model, colnr)) if editable else None,
                    resizable=False,
                    text_col=colnr))

        add_text_col('Atom name', model.c_name, is_float=False)
        add_text_col('Def. Z (nm)', model.c_default_z)
        add_text_col('Calc. Z (nm)', model.c_z, editable=False)
        add_text_col('#', model.c_pn)

        # Add atom type column (combo box with atom types from pyxrd.project level):
        def atom_type_renderer(column, cell, model, itr, col=None):
            try:
                name = model.get_user_data_from_path(
                    model.get_path(itr)).atom_type.name
            except:
                name = '#NA#'
            cell.set_property('text', name)
            return

        def adjust_combo(cell, editable, path, data=None):
            editable.set_wrap_width(10)

        tv.append_column(
            new_combo_column("Element",
                             data_func=(atom_type_renderer, (3, )),
                             changed_callback=self.on_atom_type_changed,
                             edited_callback=(self.on_atom_type_edited,
                                              (model, )),
                             editing_started_callback=adjust_combo,
                             model=self.atom_types_treemodel,
                             text_column=self.atom_types_treemodel.c_name,
                             editable=True,
                             has_entry=True))
    def _reset_treeview(self, tv, model):
        setup_treeview(tv, model, sel_mode=gtk.SELECTION_MULTIPLE, reset=True)
        tv.set_model(model)

        # Name column:
        def text_renderer(column, cell, model, itr, args=None):
            driven_by_other = model.get_value(itr, model.c_driven_by_other)
            cell.set_property('editable', not driven_by_other)
            cell.set_property('style', pango.STYLE_ITALIC if driven_by_other else pango.STYLE_NORMAL)
        col = new_text_column(
            'Name',
            data_func=text_renderer,
            editable=True,
            edited_callback=(self.on_item_cell_edited, (model, model.c_name)),
            resizable=False,
            text_col=model.c_name)
        col.set_data("col_descr", 'Name')
        tv.append_column(col)

        # Value of the relation:
        float_rend = create_float_data_func()
        def data_renderer(column, cell, model, itr, args=None):
            text_renderer(column, cell, model, itr, args)
            float_rend(column, cell, model, itr, args)
        col = new_text_column(
            'Value',
            data_func=data_renderer,
            editable=True,
            edited_callback=(self.on_item_cell_edited, (model, model.c_value)),
            resizable=False,
            text_col=model.c_value)
        col.set_data("col_descr", 'Value')
        tv.append_column(col)

        # Up, down and edit arrows:
        def setup_image_button(image, colnr):
            col = new_pb_column(" ", resizable=False, expand=False, stock_id=image)
            col.set_data("col_descr", colnr)
            tv.append_column(col)
        setup_image_button("213-up-arrow", "Up")
        setup_image_button("212-down-arrow", "Down")
        setup_image_button("030-pencil", "Edit")
    def setup_raw_pattern_tree_view(self, store, widget):
        """
            Creates the raw pattern TreeView layout and behavior
        """

        print "CALLED!!"

        setup_treeview(widget, store,
            on_cursor_changed=self.on_raw_pattern_tv_cursor_changed,
            sel_mode=gtk.SELECTION_MULTIPLE)
        # X Column:
        widget.append_column(new_text_column(
            u'°2θ', text_col=store.c_x, editable=True,
            edited_callback=(self.on_xy_data_cell_edited, (self.model.raw_pattern, 0)),
            resizable=True, expand=True))
        # Y Column:
        widget.append_column(new_text_column(
            u'Intensity', text_col=store.c_y, editable=True,
            edited_callback=(self.on_xy_data_cell_edited, (self.model.raw_pattern, 1)),
            resizable=True, expand=True))
Ejemplo n.º 24
0
 def setup_exclusion_ranges_tree_view(self, store, widget):
     """
         Creates the exclusion ranges TreeView layout and behavior
     """
     setup_treeview(widget, store,
         on_cursor_changed=self.on_exclusion_ranges_tv_cursor_changed,
         sel_mode='MULTIPLE')
     
     def data_func(col, cell, model, iter, colnr):
         cell.set_property("text", "%g" % model.get(iter, colnr)[0])
     
     widget.append_column(new_text_column(
         'From [°2θ]', text_col=store.c_x, editable=True,
         data_func = (data_func, (store.c_x,)),
         edited_callback=(self.on_xy_data_cell_edited, (self.model.exclusion_ranges, 0)),
         resizable=True, expand=True))
     widget.append_column(new_text_column(
         'To [°2θ]', text_col=store.c_y, editable=True,
         data_func = (data_func, (store.c_y,)),
         edited_callback=(self.on_xy_data_cell_edited, (self.model.exclusion_ranges, 1)),
         resizable=True, expand=True))
Ejemplo n.º 25
0
 def setup_wavelength_distribution_tree_view(self, store, widget):
     """
         Creates the wavelength distribution TreeView layout and behavior
     """
     setup_treeview(widget,
                    store,
                    on_cursor_changed=self.on_wld_tv_cursor_changed,
                    sel_mode=gtk.SELECTION_MULTIPLE)
     # X Column:
     widget.append_column(
         new_text_column(
             'Wavelength (nm)',
             text_col=store.c_x,
             editable=True,
             edited_callback=(self.on_xy_data_cell_edited,
                              (self.model.wavelength_distribution, 0))))
     # Y Column:
     widget.append_column(
         new_text_column(
             'Fraction',
             text_col=store.c_y,
             editable=True,
             edited_callback=(self.on_xy_data_cell_edited,
                              (self.model.wavelength_distribution, 1))))
Ejemplo n.º 26
0
    def register_view(self, view):
        super(MatchMineralController, self).register_view(view)
        if view is not None:
            # MATCHES Treeview:
            tv = self.view['tv_matches']

            setup_treeview(
                tv,
                None,
                reset=True,
                on_selection_changed=self.selection_changed,
            )

            tv.append_column(new_text_column(
                "Name",
                markup_col=0,
                xalign=0,
            ))

            tv.append_column(
                new_text_column(
                    "Abbr.",
                    markup_col=1,
                    expand=False,
                ))

            def get_value(column, cell, model, itr, *args):
                value = model.get_value(itr, column.get_col_attr('markup'))
                try:
                    value = "%.5f" % value
                except TypeError:
                    value = ""
                cell.set_property("markup", value)
                return

            tv.append_column(
                new_text_column("Score",
                                markup_col=4,
                                expand=False,
                                data_func=get_value))

            # ALL MINERALS Treeview:
            tv = self.view['tv_minerals']
            setup_treeview(
                tv,
                None,
                reset=True,
                on_selection_changed=self.selection_changed,
            )

            tv.append_column(new_text_column(
                "Name",
                markup_col=0,
                xalign=0,
            ))

            tv.append_column(
                new_text_column(
                    "Abbr.",
                    markup_col=1,
                    expand=False,
                ))