コード例 #1
0
 def _create_checks_button(self, widget, main_window):
     self.lbl_btnchecks = gtk.Label()
     self.lbl_btnchecks.show()
     self.lbl_btnchecks.set_ellipsize(pango.ELLIPSIZE_END)
     self.btn_checks = PopupWidgetButton(widget,
                                         label=None,
                                         popup_pos=POS_SE_NE,
                                         main_window=main_window,
                                         sticky=True)
     self.btn_checks.set_property('relief', gtk.RELIEF_NONE)
     self.btn_checks.set_update_popup_geometry_func(self.update_geometry)
     self.btn_checks.add(self.lbl_btnchecks)
コード例 #2
0
 def _create_checks_button(self, widget):
     import pango
     self.lbl_btnchecks = gtk.Label(_('No issues'))
     self.lbl_btnchecks.show()
     self.lbl_btnchecks.set_ellipsize(pango.ELLIPSIZE_END)
     self.btn_checks = PopupWidgetButton(widget, label=None, popup_pos=POS_SE_NE)
     self.btn_checks.set_update_popup_geometry_func(self.update_geometry)
     self.btn_checks.add(self.lbl_btnchecks)
コード例 #3
0
ファイル: checksunitview.py プロジェクト: cc-archive/pootle
 def _create_checks_button(self, widget, main_window):
     self.lbl_btnchecks = gtk.Label()
     self.lbl_btnchecks.show()
     self.lbl_btnchecks.set_ellipsize(pango.ELLIPSIZE_END)
     self.btn_checks = PopupWidgetButton(widget, label=None, popup_pos=POS_SE_NE, main_window=main_window, sticky=True)
     self.btn_checks.set_property('relief', gtk.RELIEF_NONE)
     self.btn_checks.set_update_popup_geometry_func(self.update_geometry)
     self.btn_checks.add(self.lbl_btnchecks)
コード例 #4
0
class ChecksUnitView(BaseView):
    """The unit specific view for quality checks."""

    COL_CHECKNAME, COL_DESC = range(2)

    # INITIALIZERS #
    def __init__(self, controller):
        self.controller = controller
        main_controller = controller.main_controller

        self.popup_content = self._create_popup_content()
        self._create_checks_button(self.popup_content)
        self._create_menu_item()
        main_controller.store_controller.connect('store-closed', self._on_store_closed)

        self._listsep = lang_factory.getlanguage(get_ui_lang()).listseperator
        self._prev_failures = None

    def _create_checks_button(self, widget):
        import pango
        self.lbl_btnchecks = gtk.Label(_('No issues'))
        self.lbl_btnchecks.show()
        self.lbl_btnchecks.set_ellipsize(pango.ELLIPSIZE_END)
        self.btn_checks = PopupWidgetButton(widget, label=None, popup_pos=POS_SE_NE)
        self.btn_checks.set_update_popup_geometry_func(self.update_geometry)
        self.btn_checks.add(self.lbl_btnchecks)

    def _create_menu_item(self):
        mainview = self.controller.main_controller.view
        mainview.gui.get_widget('mnu_checks').connect('activate', self._on_activated)

    def _create_popup_content(self):
        vb = gtk.VBox()
        frame = gtk.Frame()
        frame.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        frame.add(vb)

        self.lbl_empty = gtk.Label('<i>' + _('No issues') + '</i>')
        self.lbl_empty.set_use_markup(True)
        self.lbl_empty.hide()
        vb.pack_start(self.lbl_empty)

        self.lst_checks = gtk.ListStore(str, str)
        self.tvw_checks = gtk.TreeView()
        self.tvw_checks.append_column(
            gtk.TreeViewColumn(_('Quality Check'), gtk.CellRendererText(), text=self.COL_CHECKNAME)
        )
        self.tvw_checks.append_column(
            gtk.TreeViewColumn(_('Description'), gtk.CellRendererText(), text=self.COL_DESC)
        )
        self.tvw_checks.set_model(self.lst_checks)

        vb.pack_start(self.tvw_checks)

        return frame


    # METHODS #
    def show(self):
        parent = self.controller.main_controller.unit_controller.view._widgets['vbox_right']
        parent.pack_start(self.btn_checks, expand=False, fill=True)
        self.btn_checks.show()

    def hide(self):
        if self.btn_checks.get_active():
            self.btn_checks.clicked()

    def update(self, failures):
        self._prev_failures = failures
        if not failures:
            self.lbl_btnchecks.set_text(_('No issues'))
            self._show_empty_label()
            return

        self.lst_checks.clear()
        names = []
        for testname, desc in failures.iteritems():
            testname = self.controller.get_check_name(testname)
            self.lst_checks.append([testname, desc])
            names.append(testname)

        self.lbl_btnchecks.set_text(self._listsep.join(names))
        self._show_treeview()

    def _show_empty_label(self):
        self.tvw_checks.hide()
        self.lbl_empty.show()

    def _show_treeview(self):
        self.lbl_empty.hide()
        self.tvw_checks.show_all()

    def update_geometry(self, popup, popup_alloc, btn_alloc, btn_window_xy, geom):
        x, y, width, height = geom

        textbox = self.controller.main_controller.unit_controller.view.sources[0]
        alloc = textbox.get_allocation()

        if width > alloc.width:
            return x, y, alloc.width, height
        return geom


    # EVENT HANDLERS #
    def _on_activated(self, menu_iitem):
        self.btn_checks.clicked()

    def _on_store_closed(self, store_controller):
        self.hide()
コード例 #5
0
class ChecksUnitView(BaseView):
    """The unit specific view for quality checks."""

    COL_CHECKNAME, COL_DESC = range(2)

    # INITIALIZERS #
    def __init__(self, controller):
        self.controller = controller
        main_controller = controller.main_controller
        main_window = main_controller.view.main_window

        self.popup_content = self._create_popup_content()
        self._create_checks_button(self.popup_content, main_window)
        self._create_menu_item()
        main_controller.store_controller.connect('store-closed',
                                                 self._on_store_closed)
        main_controller.store_controller.connect('store-loaded',
                                                 self._on_store_loaded)

        self._prev_failures = None
        self._listsep = lang_factory.getlanguage(ui_language).listseperator

    def _create_checks_button(self, widget, main_window):
        self.lbl_btnchecks = gtk.Label()
        self.lbl_btnchecks.show()
        self.lbl_btnchecks.set_ellipsize(pango.ELLIPSIZE_END)
        self.btn_checks = PopupWidgetButton(widget,
                                            label=None,
                                            popup_pos=POS_SE_NE,
                                            main_window=main_window,
                                            sticky=True)
        self.btn_checks.set_property('relief', gtk.RELIEF_NONE)
        self.btn_checks.set_update_popup_geometry_func(self.update_geometry)
        self.btn_checks.add(self.lbl_btnchecks)

    def _create_menu_item(self):
        mainview = self.controller.main_controller.view
        self.mnu_checks = mainview.gui.get_object('mnu_checks')
        self.mnu_checks.connect('activate', self._on_activated)

    def _create_popup_content(self):
        vb = gtk.VBox()
        frame = gtk.Frame()
        frame.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        frame.add(vb)

        self.lbl_empty = gtk.Label('<i>' + _('No issues') + '</i>')
        self.lbl_empty.set_use_markup(True)
        self.lbl_empty.hide()
        vb.pack_start(self.lbl_empty)

        self.lst_checks = gtk.ListStore(str, str)
        self.tvw_checks = gtk.TreeView()
        name_column = gtk.TreeViewColumn(_('Quality Check'),
                                         gtk.CellRendererText(),
                                         text=self.COL_CHECKNAME)
        name_column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
        self.tvw_checks.append_column(name_column)

        description_renderer = gtk.CellRendererText()
        #description_renderer.set_property('wrap-mode', pango.WRAP_WORD_CHAR)
        description_column = gtk.TreeViewColumn(_('Description'),
                                                description_renderer,
                                                text=self.COL_DESC)
        description_column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
        self.tvw_checks.append_column(description_column)
        self.tvw_checks.set_model(self.lst_checks)
        self.tvw_checks.get_selection().set_mode(gtk.SELECTION_NONE)

        vb.pack_start(self.tvw_checks)

        return frame

    # METHODS #
    def show(self):
        parent = self.controller.main_controller.unit_controller.view._widgets[
            'vbox_right']
        parent.pack_start(self.btn_checks, expand=False, fill=True)
        self.btn_checks.show()

    def hide(self):
        if self.btn_checks.get_active():
            self.btn_checks.clicked()

    def update(self, failures):
        # We don't want to show "untranslated"
        failures.pop('untranslated', None)
        if failures == self._prev_failures:
            return
        self._prev_failures = failures
        if not failures:
            # We want an empty button, but this causes a bug where subsequent
            # updates don't show, so we set it to a non-breaking space
            self.lbl_btnchecks.set_text(u"\u202a")
            self._show_empty_label()
            self.btn_checks.set_tooltip_text(u"")
            return

        self.lst_checks.clear()
        nice_name = self.controller.get_check_name
        sorted_failures = sorted(failures.iteritems(),
                                 key=lambda x: nice_name(x[0]),
                                 cmp=locale.strcoll)
        names = []
        for testname, desc in sorted_failures:
            testname = nice_name(testname)
            self.lst_checks.append([testname, desc])
            names.append(testname)

        name_str = self._listsep.join(names)
        self.btn_checks.set_tooltip_text(name_str)
        self.lbl_btnchecks.set_text(name_str)
        self._show_treeview()

    def _show_empty_label(self):
        self.tvw_checks.hide()
        self.lbl_empty.show()

    def _show_treeview(self):
        self.lbl_empty.hide()
        self.tvw_checks.show_all()

    def update_geometry(self, popup, popup_alloc, btn_alloc, btn_window_xy,
                        geom):
        x, y, width, height = geom

        textbox = self.controller.main_controller.unit_controller.view.sources[
            0]
        alloc = textbox.get_allocation()

        if width > alloc.width * 1.3:
            return x, y, int(alloc.width * 1.3), height
        return geom

    # EVENT HANDLERS #
    def _on_activated(self, menu_iitem):
        self.btn_checks.clicked()

    def _on_store_closed(self, store_controller):
        self.mnu_checks.set_sensitive(False)
        self.hide()

    def _on_store_loaded(self, store_controller):
        self.mnu_checks.set_sensitive(True)
コード例 #6
0
ファイル: checksunitview.py プロジェクト: cc-archive/pootle
class ChecksUnitView(BaseView):
    """The unit specific view for quality checks."""

    COL_CHECKNAME, COL_DESC = range(2)

    # INITIALIZERS #
    def __init__(self, controller):
        self.controller = controller
        main_controller = controller.main_controller
        main_window = main_controller.view.main_window

        self.popup_content = self._create_popup_content()
        self._create_checks_button(self.popup_content, main_window)
        self._create_menu_item()
        main_controller.store_controller.connect('store-closed', self._on_store_closed)
        main_controller.store_controller.connect('store-loaded', self._on_store_loaded)

        self._prev_failures = None
        self._listsep = lang_factory.getlanguage(ui_language).listseperator

    def _create_checks_button(self, widget, main_window):
        self.lbl_btnchecks = gtk.Label()
        self.lbl_btnchecks.show()
        self.lbl_btnchecks.set_ellipsize(pango.ELLIPSIZE_END)
        self.btn_checks = PopupWidgetButton(widget, label=None, popup_pos=POS_SE_NE, main_window=main_window, sticky=True)
        self.btn_checks.set_property('relief', gtk.RELIEF_NONE)
        self.btn_checks.set_update_popup_geometry_func(self.update_geometry)
        self.btn_checks.add(self.lbl_btnchecks)

    def _create_menu_item(self):
        mainview = self.controller.main_controller.view
        self.mnu_checks = mainview.gui.get_widget('mnu_checks')
        self.mnu_checks.connect('activate', self._on_activated)

    def _create_popup_content(self):
        vb = gtk.VBox()
        frame = gtk.Frame()
        frame.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        frame.add(vb)

        self.lbl_empty = gtk.Label('<i>' + _('No issues') + '</i>')
        self.lbl_empty.set_use_markup(True)
        self.lbl_empty.hide()
        vb.pack_start(self.lbl_empty)

        self.lst_checks = gtk.ListStore(str, str)
        self.tvw_checks = gtk.TreeView()
        name_column = gtk.TreeViewColumn(_('Quality Check'), gtk.CellRendererText(), text=self.COL_CHECKNAME)
        name_column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
        self.tvw_checks.append_column(name_column)

        description_renderer = gtk.CellRendererText()
        #description_renderer.set_property('wrap-mode', pango.WRAP_WORD_CHAR)
        description_column = gtk.TreeViewColumn(_('Description'), description_renderer, text=self.COL_DESC)
        description_column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
        self.tvw_checks.append_column(description_column)
        self.tvw_checks.set_model(self.lst_checks)
        self.tvw_checks.get_selection().set_mode(gtk.SELECTION_NONE)

        vb.pack_start(self.tvw_checks)

        return frame


    # METHODS #
    def show(self):
        parent = self.controller.main_controller.unit_controller.view._widgets['vbox_right']
        parent.pack_start(self.btn_checks, expand=False, fill=True)
        self.btn_checks.show()

    def hide(self):
        if self.btn_checks.get_active():
            self.btn_checks.clicked()

    def update(self, failures):
        # We don't want to show "untranslated"
        failures.pop('untranslated', None)
        if failures == self._prev_failures:
            return
        self._prev_failures = failures
        if not failures:
            # We want an empty button, but this causes a bug where subsequent
            # updates don't show, so we set it to a non-breaking space
            self.lbl_btnchecks.set_text(u"\u202a")
            self._show_empty_label()
            self.btn_checks.set_tooltip_text(u"")
            return

        self.lst_checks.clear()
        nice_name = self.controller.get_check_name
        sorted_failures = sorted(failures.iteritems(), key=lambda x: nice_name(x[0]), cmp=locale.strcoll)
        names = []
        for testname, desc in sorted_failures:
            testname = nice_name(testname)
            self.lst_checks.append([testname, desc])
            names.append(testname)

        name_str = self._listsep.join(names)
        self.btn_checks.set_tooltip_text(name_str)
        self.lbl_btnchecks.set_text(name_str)
        self._show_treeview()

    def _show_empty_label(self):
        self.tvw_checks.hide()
        self.lbl_empty.show()

    def _show_treeview(self):
        self.lbl_empty.hide()
        self.tvw_checks.show_all()

    def update_geometry(self, popup, popup_alloc, btn_alloc, btn_window_xy, geom):
        x, y, width, height = geom

        textbox = self.controller.main_controller.unit_controller.view.sources[0]
        alloc = textbox.get_allocation()

        if width > alloc.width * 1.3:
            return x, y, int(alloc.width * 1.3), height
        return geom


    # EVENT HANDLERS #
    def _on_activated(self, menu_iitem):
        self.btn_checks.clicked()

    def _on_store_closed(self, store_controller):
        self.mnu_checks.set_sensitive(False)
        self.hide()

    def _on_store_loaded(self, store_controller):
        self.mnu_checks.set_sensitive(True)