Esempio n. 1
0
def altered_idle_config():
    """
    Inject the appropriate font settings into the idle config file.

    Note that this will ignore any specific config files (eg, config-unix.cfg).
    It's very unlikely that students will be using these.

    """
    from idlelib.config import idleConf

    # save originals
    font_name = idleConf.GetOption('main', 'EditorWindow', 'font-name')
    font_size = idleConf.GetOption('main', 'EditorWindow', 'font-size')

    # replace them
    name, size, _ = map(str, FIXED_FONT)
    idleConf.SetOption('main', 'EditorWindow', 'font-name', name)
    idleConf.SetOption('main', 'EditorWindow', 'font-size', size)

    # save the config file
    idleConf.SaveUserCfgFiles()

    yield

    # replace the values
    if font_name is not None:
        idleConf.SetOption('main', 'EditorWindow', 'font-name', font_name)
    if font_size is not None:
        idleConf.SetOption('main', 'EditorWindow', 'font-size', font_size)

    if font_name is not None or font_size is not None:
        idleConf.SaveUserCfgFiles()
Esempio n. 2
0
    def load_idlex_extensions(self, userExt=None):
        """ Load extensions. Returns number of extensions loaded. """

        if userExt is None:
            userExt = self.IDLEX_EXTENSIONS

        # get already-saved settings
        d = idleConf.GetUserCfgDir()
        usercfgfile = os.path.join(d, 'idlex-config-extensions.cfg')
        if os.path.isfile(usercfgfile):
            U = open(usercfgfile).read()
        else:
            U = ''

        count = 0
        userConfParser = make_config_parser(U)

        key_isdefault = idleConf.GetOption('main',
                                           'Keys',
                                           'default',
                                           type="bool")
        for extName in userExt:
            if self.reload_cfg(extName):
                count += 1
                # transfer already-saved settings, otherwise IDLE forgets them
                # when idleConf.SaveUserCfgFiles is called from within IDLE. Bug?
                self.transfer_cfg(extName,
                                  userConfParser,
                                  keys=not key_isdefault
                                  )  # Overwrite defaults with user config

        idleConf.SaveUserCfgFiles()
        return count
Esempio n. 3
0
 def toggle_code_context_event(self, event=None):
     if not self.label:
         widgets = self.editwin.text, self.editwin.text_frame
         padx = 0
         for widget in widgets:
             padx += widget.tk.getint(widget.pack_info()['padx'])
             padx += widget.tk.getint(widget.cget('padx'))
         border = 0
         for widget in widgets:
             border += widget.tk.getint(widget.cget('border'))
         self.label = tkinter.Label(self.editwin.top,
                                    text='\n' * (self.context_depth - 1),
                                    anchor=W,
                                    justify=LEFT,
                                    font=self.textfont,
                                    bg=self.bgcolor,
                                    fg=self.fgcolor,
                                    width=1,
                                    padx=padx,
                                    border=border,
                                    relief=SUNKEN)
         self.label.pack(side=TOP,
                         fill=X,
                         expand=False,
                         before=self.editwin.text_frame)
     else:
         self.label.destroy()
         self.label = None
     idleConf.SetOption('extensions', 'CodeContext', 'visible',
                        str(self.label is not None))
     idleConf.SaveUserCfgFiles()
Esempio n. 4
0
 def toggle_code_context_event(self, event=None):
     if not self.label:
         # Calculate the border width and horizontal padding required to
         # align the context with the text in the main Text widget.
         #
         # All values are passed through getint(), since some
         # values may be pixel objects, which can't simply be added to ints.
         widgets = self.editwin.text, self.editwin.text_frame
         # Calculate the required vertical padding
         padx = 0
         for widget in widgets:
             padx += widget.tk.getint(widget.pack_info()['padx'])
             padx += widget.tk.getint(widget.cget('padx'))
         # Calculate the required border width
         border = 0
         for widget in widgets:
             border += widget.tk.getint(widget.cget('border'))
         self.label = tkinter.Label(self.editwin.top,
                                    text="\n" * (self.context_depth - 1),
                                    anchor=W, justify=LEFT,
                                    font=self.textfont,
                                    bg=self.bgcolor, fg=self.fgcolor,
                                    width=1, #don't request more than we get
                                    padx=padx, border=border,
                                    relief=SUNKEN)
         # Pack the label widget before and above the text_frame widget,
         # thus ensuring that it will appear directly above text_frame
         self.label.pack(side=TOP, fill=X, expand=False,
                         before=self.editwin.text_frame)
     else:
         self.label.destroy()
         self.label = None
     idleConf.SetOption("extensions", "CodeContext", "visible",
                        str(self.label is not None))
     idleConf.SaveUserCfgFiles()
Esempio n. 5
0
 def close(self):  # Extension is being unloaded
     self.runmanager.close()
     if self.hl_id:
         self.text.after_cancel(self.hl_id)
     idleConf.SaveUserCfgFiles()
     SubCode.SC_INSTANCES.remove(self)
     try:
         self.editwin.ColorDelegator = self.ColorDelegatorOrig
     finally:
         self.ColorDelegatorOrig = None
Esempio n. 6
0
    def close_pyshell(self):
        global INTERP, DO_PING
        idleConf.SetOption("extensions", "EventLoop", "active",
                           '%s' % self.active)
        idleConf.SetOption("extensions", "EventLoop", "toolkit", self.kit)
        idleConf.SaveUserCfgFiles()

        self.eventloop_enable(False)

        INTERP = None
        DO_PING = False
Esempio n. 7
0
    def toggle(self, ev=None):
        """ Toggle the selected extension's enable status """
        sel = self.get_sel()
        if sel is None: return

        item = self.extensions[sel]
        en = not idleConf.GetOption(
            'extensions', item, 'enable', type='bool', default=True)
        en = int(en)

        idleConf.SetOption('extensions', item, 'enable', '%s' % en)
        idleConf.SaveUserCfgFiles()
        self.repopulate_list()

        self.restart = True
Esempio n. 8
0
 def close(self):
     idleConf.SetOption("extensions", "SubCodeToolbar",
                          "visible", '%s' % self.visible)
     idleConf.SaveUserCfgFiles()
Esempio n. 9
0
 def close(self):
     idleConf.SaveUserCfgFiles()