Esempio n. 1
0
    def __init__(self, parent, integer=Integer(), **kw):
        #kw['state'] = 'disabled'
        kw.setdefault('anchor', 'nw')
        kw.setdefault('relief', 'sunken')

        kw.setdefault('width', 10)
        kw.setdefault('justify', 'left')
        self._var = StringVar()
        Label.__init__(self, parent, textvariable=self._var, **kw)
        self._integer_view = StringViewFormatter(integer)
        self._update_integer()
        self._factorization_enabled = False
        self.bind("<Configure>", self._update_width)

        self._init_menu()
Esempio n. 2
0
    def __init__(self, parent, integer=Integer(), **kw):
        #kw['state'] = 'disabled'
        kw.setdefault('anchor', 'nw')
        kw.setdefault('relief', 'sunken')

        kw.setdefault('width', 10)
        kw.setdefault('justify', 'left')
        self._var = StringVar()
        Label.__init__(self, parent, textvariable=self._var, **kw)
        self._integer_view = StringViewFormatter(integer)
        self._update_integer()
        self._factorization_enabled = False
        self.bind("<Configure>", self._update_width)

        self._init_menu()
Esempio n. 3
0
 def integer(self, value):
     self._integer_view = StringViewFormatter(value)
     if self._factorization_enabled:
         self._integer_view.mode = StringViewFormatter.VERBOSE
     self._update_integer()
Esempio n. 4
0
class IntegerView(Label):
    """This is the frame for displaying Integer with ability to factorize it.
    """

    def __init__(self, parent, integer=Integer(), **kw):
        #kw['state'] = 'disabled'
        kw.setdefault('anchor', 'nw')
        kw.setdefault('relief', 'sunken')

        kw.setdefault('width', 10)
        kw.setdefault('justify', 'left')
        self._var = StringVar()
        Label.__init__(self, parent, textvariable=self._var, **kw)
        self._integer_view = StringViewFormatter(integer)
        self._update_integer()
        self._factorization_enabled = False
        self.bind("<Configure>", self._update_width)

        self._init_menu()

    def _init_menu(self):
        self._menu = Menu(self, tearoff=0)
        self._menu.add_command(label="Copy", command=self._copy)
        self._menu.add_command(label="Copy LaTeX", command=self._copy_latex)

        # right button on Mac and other systems
        button = '2' if tools.IS_MAC else '3'
        self.bind("<Button-{}>".format(button), self._right_click)

    def _right_click(self, event):
        self._menu.post(event.x_root, event.y_root)

    def _copy(self):
        pyperclip.setcb(str(self._integer_view))

    def _copy_latex(self):
        if self._factorization_enabled:
            cb = self._integer_view.str_latex()
        else:
            cb = self._integer_view.str_normal()
        pyperclip.setcb(cb)


    def _update_width(self, event):
        self['wraplength'] = self.winfo_width() - 10

    def _update_integer(self):
        self._var.set(self._integer_view)

    @property
    def integer(self):
        return self._integer_view.object

    @integer.setter
    def integer(self, value):
        self._integer_view = StringViewFormatter(value)
        if self._factorization_enabled:
            self._integer_view.mode = StringViewFormatter.VERBOSE
        self._update_integer()

    def toggle_factorization(self, value):
        self._factorization_enabled = value
        if value:
            self._integer_view.mode = StringViewFormatter.VERBOSE
        else:
            self._integer_view.mode = StringViewFormatter.NORMAL
        self._update_integer()
Esempio n. 5
0
def max_orders_wrapped(group,
                       mode=StringViewFormatter.VERBOSE):
    format = lambda elem: StringViewFormatter(elem, mode=mode)
    return map(format, maximal_orders(group))
Esempio n. 6
0
 def integer(self, value):
     self._integer_view = StringViewFormatter(value)
     if self._factorization_enabled:
         self._integer_view.mode = StringViewFormatter.VERBOSE
     self._update_integer()
Esempio n. 7
0
class IntegerView(Label):
    """This is the frame for displaying Integer with ability to factorize it.
    """
    def __init__(self, parent, integer=Integer(), **kw):
        #kw['state'] = 'disabled'
        kw.setdefault('anchor', 'nw')
        kw.setdefault('relief', 'sunken')

        kw.setdefault('width', 10)
        kw.setdefault('justify', 'left')
        self._var = StringVar()
        Label.__init__(self, parent, textvariable=self._var, **kw)
        self._integer_view = StringViewFormatter(integer)
        self._update_integer()
        self._factorization_enabled = False
        self.bind("<Configure>", self._update_width)

        self._init_menu()

    def _init_menu(self):
        self._menu = Menu(self, tearoff=0)
        self._menu.add_command(label="Copy", command=self._copy)
        self._menu.add_command(label="Copy LaTeX", command=self._copy_latex)

        # right button on Mac and other systems
        button = '2' if tools.IS_MAC else '3'
        self.bind("<Button-{}>".format(button), self._right_click)

    def _right_click(self, event):
        self._menu.post(event.x_root, event.y_root)

    def _copy(self):
        pyperclip.setcb(str(self._integer_view))

    def _copy_latex(self):
        if self._factorization_enabled:
            cb = self._integer_view.str_latex()
        else:
            cb = self._integer_view.str_normal()
        pyperclip.setcb(cb)

    def _update_width(self, event):
        self['wraplength'] = self.winfo_width() - 10

    def _update_integer(self):
        self._var.set(self._integer_view)

    @property
    def integer(self):
        return self._integer_view.object

    @integer.setter
    def integer(self, value):
        self._integer_view = StringViewFormatter(value)
        if self._factorization_enabled:
            self._integer_view.mode = StringViewFormatter.VERBOSE
        self._update_integer()

    def toggle_factorization(self, value):
        self._factorization_enabled = value
        if value:
            self._integer_view.mode = StringViewFormatter.VERBOSE
        else:
            self._integer_view.mode = StringViewFormatter.NORMAL
        self._update_integer()
Esempio n. 8
0
 def transform_number(number):
     if type(number) in (SpectraElement, Integer):
         return StringViewFormatter(number)
     return StringViewFormatter(Integer(number))