python / cpython

The Python programming language
https://www.python.org
Other
63.02k stars 30.17k forks source link

IDLE: Improve config dialog font change user interface #68964

Open rhettinger opened 9 years ago

rhettinger commented 9 years ago
BPO 24776
Nosy @rhettinger, @terryjreedy, @roseman
Dependencies
  • bpo-27755: Retire DynOptionMenu with a ttk Combobox
  • bpo-30870: IDLE: configdialog/fonts: change font when select by key up/down
  • bpo-30981: IDLE: Test config dialog font bold button and sample change
  • Files
  • cfg_font_layout.png: Alternative layout for font/tabs page
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields: ```python assignee = 'https://github.com/terryjreedy' closed_at = None created_at = labels = ['3.8', 'expert-IDLE', 'type-feature', '3.7'] title = 'IDLE: Improve config dialog font change user interface' updated_at = user = 'https://github.com/rhettinger' ``` bugs.python.org fields: ```python activity = actor = 'terry.reedy' assignee = 'terry.reedy' closed = False closed_date = None closer = None components = ['IDLE'] creation = creator = 'rhettinger' dependencies = ['27755', '30870', '30981'] files = ['40105'] hgrepos = [] issue_num = 24776 keywords = [] message_count = 10.0 messages = ['247829', '247846', '247887', '248709', '248719', '248739', '248740', '298092', '298763', '334281'] nosy_count = 3.0 nosy_names = ['rhettinger', 'terry.reedy', 'markroseman'] pr_nums = [] priority = 'normal' resolution = None stage = 'needs patch' status = 'open' superseder = None type = 'enhancement' url = 'https://bugs.python.org/issue24776' versions = ['Python 3.7', 'Python 3.8'] ```

    rhettinger commented 9 years ago

    A recurring issue with students using IDLE is the user interface for the fonts and tabs preference settings.

    terryjreedy commented 9 years ago

    I agree that this tab needs an overhall. Existing issues would be part of this: 17642 Font resizing hot keys (not sure about this) 14440 Use multiple alphabets in example (definitely)

    Other ideas that I remember:

    f4315b71-14d3-4c16-bb7a-6534e5fa1d04 commented 9 years ago

    What do you think of the layout in cfg_font_layout.png? (before/after)

    terryjreedy commented 9 years ago

    The side-by-side part I obviously like, but I think we need to keep 'Base Editor Font' since this and only this is affected by the selection. I think there should be an option to increase the 'other' font used for everything else.

    rhettinger commented 9 years ago

    FWIW, I would also like a pair of hotkeys, Cmd + and Cmd - to increase and decrease the font (this would greatly improve usability for font size changes). There is good precedent for this in other editors and terminal programs.

    f4315b71-14d3-4c16-bb7a-6534e5fa1d04 commented 9 years ago

    Agree about the font resizing menu items/shortcuts... your original bpo-17642 remains open for this

    terryjreedy commented 9 years ago

    I agree. Cntl/Cmd +/- font sizing works in turtledemo within sensible limits. The code could be copied.

    terryjreedy commented 7 years ago

    Make this the master issue for improving the font tab user interface by improving components and rearranging them. With basic tests done, I am moving this up in priority.

    Related issues currently open. bpo-30870 (dependency) made Up/Down change font selection; unit test needed. bpo-27755 replaces IDLE's custom DynOptionMenu with ttk.Combobox. Comboboxes allow key entry of a value and the arrow toggles. See msg298091 for comparison and evaluation for font page. bpo-13802 (dependency) is about the improving the sample display. bpo-17642 is about font resizing by hot key and wheel in editor. bpo-20917 is about the font change notification system.

    Additional changes for this issue or new related issues.

    import tkinter
    root = tkinter.Tk()
    root.tk.call('tk', 'fontchooser', 'show')

    For IDLE, I like some parts, not others. I view it as an alternate mockup for ideas to build on.

    terryjreedy commented 7 years ago

    I decided to rearrange page bpo-24776 before changing sample bpo-13802.

    terryjreedy commented 5 years ago

    I now think that the proper widget for font resizing might be a ttk.Spinbox (but see below). bpo-33962 discusses issues around using this widget.

    bpo-33397 is about adding local font resizing with hot key or mousewheel to text and help viewers via a new FontSizer class. Font Sizer should be usable with the sample Text instance. Size changes in the sample should propagate to the size widget. When done, it might suffice to use a simple entry box for font size. We already use them for counts on the General tab.

    Since we do not want to encourage indent changes, I think the indent widget should be an entry box with bounds check.