This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: IDLE: configdialog tab rearrange
Type: enhancement Stage: resolved
Components: IDLE Versions: Python 3.11, Python 3.10, Python 3.9
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: cheryl.sabella, epaine, markroseman, miss-islington, taleinat, terry.reedy
Priority: normal Keywords: patch

Created on 2020-05-01 14:10 by epaine, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
font_page_short.png epaine, 2020-05-01 14:10
general_page.png epaine, 2020-05-01 14:10
general_page_pady.png epaine, 2020-05-01 14:10
general_page_pady_short.png epaine, 2020-05-01 14:10
general_page_short.png epaine, 2020-05-01 14:10
window_page.png epaine, 2020-05-01 14:11
general_page_se.png epaine, 2020-05-02 19:11
shell_editor_page.png epaine, 2020-05-02 19:12
shell_editor_page_pady.png epaine, 2020-05-02 19:12
tabs_en.png epaine, 2020-05-03 15:26
tabs_wn.png epaine, 2020-05-03 15:26
tabs_wn_padx.png epaine, 2020-05-03 15:26
idle-configdialog-rearrange.png epaine, 2020-08-12 11:32
Pull Requests
URL Status Linked Edit
PR 26561 closed taleinat, 2021-06-06 15:28
PR 26593 merged terry.reedy, 2021-06-08 07:07
PR 26612 merged miss-islington, 2021-06-08 19:35
PR 26613 merged miss-islington, 2021-06-08 19:35
PR 26618 merged terry.reedy, 2021-06-09 01:12
PR 26619 merged miss-islington, 2021-06-09 01:44
PR 26620 merged miss-islington, 2021-06-09 01:46
PR 26621 merged terry.reedy, 2021-06-09 07:08
PR 26628 merged miss-islington, 2021-06-09 20:18
PR 26629 merged miss-islington, 2021-06-09 20:18
Messages (21)
msg367846 - (view) Author: E. Paine (epaine) * Date: 2020-05-01 14:10
The proposed change to move some of the content in the "General" tab to a new tab. The need for this has been emphasised 
As a proof-of-concept, I moved the "Window Preferences" LabelFrame to a new tab titled "Window" (and did the minimum required to get the window to show).
The result can be seen in the "general_page.png" & "window_page.png" files.
Looking at the new general page, I felt that the "Editor Preferences" & "Shell Preferences" LabelFrames should not expand to fill the newly created space, and this should instead be taken up in the "Additional Help Sources" LabelFrame. The result can be seen in the “general_page_pady.png” file.
Finally, I felt that we could now reduce the height of the window further by decreasing the font page Listbox height to 10 (from 15). The result can be seen in “font_page_short.png”, “general_page_short.png” & “general_page_pady_short.png”.
As I said originally, this is just a proof-of-concept and we could easily move other options into a new tab (such as a “Editor/Shell” tab – though I think this is too long for a tab title).
msg367870 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2020-05-01 18:16
'Windows', not 'Window'.

The indentation width should be moved to the Window page after being converted and reduced to a single line with a spinbox or maybe just an entry box.

Indent spaces (standard 4) [ 4] # or
Convert tab indents to [4] spaces (standard 4)

I cannot imagine that anyone would ever want more than 8, certainly not 16.  Note that there is another issue that will result in no longer using tabs instead of spaces in Shell, so that this will really be for both (all, including Output).

There is at least one issue where this has been discussed, with the thought that something that most people should and will never change is now way too prominent.  (My python development system with my list of issues is now being repaired.  There has also been discussion about converting size to a spinbox.  There is no particular reason for the particular presets.)

The problem with General is that the items left other than Help are specific to either editor or shell.  I think General with general window preferences and Help followed by Shell/Ed specifics might be a better division.
msg367941 - (view) Author: E. Paine (epaine) * Date: 2020-05-02 17:26
Would it be helpful to move the additional help sources to the extensions page (and rename it to "Add-ins")?
Just throwing ideas out there, we could also add an "Advanced" tab where we put the settings we (really) don't want others changing without good reason (such as the indentation width). However, such a tab could quite possibly mean reorganising the entire settings dialog.
While the original intention of this issue wasn't for a complete reorganisation of the dialog, I am more than willing to spend some time if we want to tie several other issues into this one (and it would be helpful to do so).
Another random idea is to copy other IDEs and use a tree on the left-side to navigate to different settings, which would allow us to keep the number of settings on a page much lower.
I will write a new prototype trying the "Shell/Ed" tab idea you suggested and will upload the relevant screenshots.
msg367946 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2020-05-02 19:17
Since the help sources extend the Help menu, putting them under Extensions makes some sense.  But I don't know how many people would think to look at the tab.  But something to keep in mind.  We can also ask for user opinions on idle-dev list.

Notebooks can put tabs on any side.  I found one side example.
https://stackoverflow.com/questions/46909169/python-tkinter-side-notebook-tabs
This would allow more and longer tab names, though I would prefer position='w'or 'wn' (west north) instead of 'ws'.  We should try this for the existing extensions pane. 

When done with General, there are issues about redoing Highlights and Keys pages, with one person's mockups.  One problem with making changes has been divergent opinions.
msg367973 - (view) Author: E. Paine (epaine) * Date: 2020-05-03 15:25
Initially, I simply changed the tab position on the settings window notebook to west-north (tabs_wn.png). I didn't like that the tabs were right-sticky and looked at changing this in the following two ways:

1) Changing the tab position to the right-side (tabs_en.png), though I believe they are too easy to miss in this place.

2) Setting the tab minimum width after measuring the titles using the tkinter default font (finding the largest of these and then adding an appropriate padding - for tabs_wn_padx.png, this was 10).
   This meant that tabs behaved as east-west sticky, and text was centred. I couldn't find how to change this to left-justified, though it is possible this can be done through a ttk layout.

Are there any other ideas?

If we do change the tab position, I think it would also be helpful to increase the font size to make them more obvious.

On a separate point, would it be better for me to upload future screenshots to an image hosting site and just include the link in the descriptor message?
msg375224 - (view) Author: E. Paine (epaine) * Date: 2020-08-12 11:32
Reflecting on #41522, I decided that it would be best to work on this issue before going any further with that one (partly because it would require us to redo some of the work and also because this issue should have a higher priority). I have put together a demonstration which is mostly based on your comments on that issue (like before, I did the minimum required to make the window show). The exact list of (user-visible) changes is as follows:

Fonts/Tabs:
 - rename to "Fonts"
 - move indentation width to the new "Editor/Shell" tab and use a spinbox
Highlights
 - rename to "Colours"
General
 - split into two tabs titled "Editor/Shell" (containing Editor & Shell frames) and "Windows" (containing Window frame)
 - move additional help sources to "Extensions" (I believe this makes more sense than having it in any of the other tabs)

I would also suggest, if there was a patch/PR for this issue, we split the "Extensions" page into its own class. I also think the "Keys" page would benefit from some work but I will not include that in this issue.
msg375283 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2020-08-12 20:22
Experiments are good, even if not accepted as is.
Python uses American spellings: so 'Colors'.
Moving help sources frees up enough vertical space to reduce the pressure to split General.  It would again fit vertically on my Mac Airbook.
'Windows' is really 'Shell&Editor'.  'Blink' is the only thing that really applies to grep output windows.  'Windows' will not apply if we make IDLE multi-tabbed.

The collage showing all pages at once is useful.  I really want to spread the dialog horizontally a bit.  The font sample could be wider.  Colors and keys should have a uniform simplified theme/keyset selection box and other misc stuff on the left and a text or list box on the right.  The cfg_highlight_alt.png and highlight3.png on issue 24781 are similar except that the left selection box should only be as big as needed (default 3) and the text is now bigger.  So other stuff, possibly revised, should likely be on the left.

Most of the General entries can be shrunk to 50-60% of the current width, or else wrapped.  Example:
  At startup, open ()Shell  ()Editor
  <For match stuff, put []bell on new line>

> split the "Extensions" page into its own class
This was intended: issue 31207.  I guess we ran out of gas before this.  We could even consider extension and help frame classes besides the help/ext page class.

Possible order of changes.

#31207: ExtPage class and tests
new: move Help sources to ExtPage and tests (to own testcase)
new: move indent (as int entry box) and test to general.  Add help note that indent is used to indent tab adds, indent delete backspaces, and smart indents.
List issue on #24776 where indent discussed.
#24781: Colors (see discussion above)
new: Keys
this? or new: redo General

At some point, list classes in configdialog and test_configdialog. docstring so know what names to search for to find them.

There are several other configdialog issues to fix glitches or make small improvements here and there.
msg375384 - (view) Author: Cheryl Sabella (cheryl.sabella) * (Python committer) Date: 2020-08-14 09:07
See also issue #33051.
msg395304 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-08 03:31
There are two immediate issues.

2. Issues are blocked because of lack of room on the General pane.  The Windows Preferences frame is about as large as the Editor and Shell frame together.  Splitting that way will leave room for enough more options for quite a while.

1. The screen on my 2012 MacBook Air is 768 pixels tall.  There are other people with screens about this small, though I doubt much smaller.  With the dock on the bottom, the configdialog buttons are not accessible.  (The are if IDLE is made full screen.)

The Additional Help Source box takes up over 20% of the Notebook pane height.  With it removed and all panes shortened, the problem on my screen and other at least as tall will be fixed.

I am therefore adopting EP's idea of moving the Help menu extension to the Extensions tab.  I think it fits there better than on the Font page or either split of the General tab.

I am starting now to separate out a HelpSrc frame class in the code and a HelpSrcTest class in the test file.
---

EP, coordinated help on this other dialog issue is welcome.
msg395310 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-08 07:13
The new PR moves the helplist.  The extensions page looks much better.  Not all of the helplist height is recovered.  I believe this is because the Font/Tabs page and in particular the overly large indentation setting now determines height.  (The other frames on the general page expanded a bit.) *33962 is about using a ttk spinbox here and I will do that tomorrow.
msg395357 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-08 19:35
New changeset ab36b9f83424a020fbd672f218612e6f19257a32 by Terry Jan Reedy in branch 'main':
bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593)
https://github.com/python/cpython/commit/ab36b9f83424a020fbd672f218612e6f19257a32
msg395358 - (view) Author: miss-islington (miss-islington) Date: 2021-06-08 20:01
New changeset 2cfe0e7061e9a2113e56e44a3e0c3f824cbc65db by Miss Islington (bot) in branch '3.10':
bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593)
https://github.com/python/cpython/commit/2cfe0e7061e9a2113e56e44a3e0c3f824cbc65db
msg395364 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-08 21:27
New changeset c03f0ab259dc6d1447d47e845c6465b59f9a032c by Miss Islington (bot) in branch '3.9':
bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593)
https://github.com/python/cpython/commit/c03f0ab259dc6d1447d47e845c6465b59f9a032c
msg395372 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-09 01:19
PR-26618 wraps the extension functions in a new class, ExtPage, and then moves the new class after GenPage.

I verified that replacing the indent slider with a spinbox results in the dialog being shorter by the full height of the helplist frame.  I will do that (or use a plain entry box) when I move it Window Preferences, after splitting GenPage.
msg395373 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-09 01:43
New changeset 5571cabf1b3385087aba2c7c10289bba77494e08 by Terry Jan Reedy in branch 'main':
 bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618)
https://github.com/python/cpython/commit/5571cabf1b3385087aba2c7c10289bba77494e08
msg395374 - (view) Author: miss-islington (miss-islington) Date: 2021-06-09 02:05
New changeset c8353239eda0d05f7facd1a19acc2b836a057807 by Miss Islington (bot) in branch '3.9':
bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618)
https://github.com/python/cpython/commit/c8353239eda0d05f7facd1a19acc2b836a057807
msg395375 - (view) Author: miss-islington (miss-islington) Date: 2021-06-09 02:11
New changeset 33a7a24288988134e89200a33802af56a2dee31e by Miss Islington (bot) in branch '3.10':
bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618)
https://github.com/python/cpython/commit/33a7a24288988134e89200a33802af56a2dee31e
msg395459 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-09 20:18
New changeset 275d5f7957dbb56a6d5e1248addff210ee2e7270 by Terry Jan Reedy in branch 'main':
bpo-40468: Split IDLE settings General tab (GH-26621)
https://github.com/python/cpython/commit/275d5f7957dbb56a6d5e1248addff210ee2e7270
msg395465 - (view) Author: miss-islington (miss-islington) Date: 2021-06-09 20:38
New changeset 664ae29e6f61988e74cb8753dd4ee71e9ea57227 by Miss Islington (bot) in branch '3.10':
bpo-40468: Split IDLE settings General tab (GH-26621)
https://github.com/python/cpython/commit/664ae29e6f61988e74cb8753dd4ee71e9ea57227
msg395466 - (view) Author: miss-islington (miss-islington) Date: 2021-06-09 20:41
New changeset d9f38d77c870cdb04273914c92fa4fe92b830d88 by Miss Islington (bot) in branch '3.9':
bpo-40468: Split IDLE settings General tab (GH-26621)
https://github.com/python/cpython/commit/d9f38d77c870cdb04273914c92fa4fe92b830d88
msg395504 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-10 05:44
Along with the spinbox PR for #33962, I believe everything discussed here is done.  There are still issues to improve specific pages.
History
Date User Action Args
2022-04-11 14:59:30adminsetgithub: 84648
2021-06-10 05:44:40terry.reedysetstatus: open -> closed
resolution: fixed
messages: + msg395504

stage: patch review -> resolved
2021-06-10 05:41:08terry.reedylinkissue33051 superseder
2021-06-09 20:41:35miss-islingtonsetmessages: + msg395466
2021-06-09 20:38:04miss-islingtonsetmessages: + msg395465
2021-06-09 20:18:21miss-islingtonsetpull_requests: + pull_request25215
2021-06-09 20:18:20terry.reedysetmessages: + msg395459
2021-06-09 20:18:16miss-islingtonsetpull_requests: + pull_request25214
2021-06-09 07:08:19terry.reedysetpull_requests: + pull_request25205
2021-06-09 02:11:34miss-islingtonsetmessages: + msg395375
2021-06-09 02:05:35miss-islingtonsetmessages: + msg395374
2021-06-09 01:46:29miss-islingtonsetpull_requests: + pull_request25204
2021-06-09 01:44:00miss-islingtonsetpull_requests: + pull_request25203
2021-06-09 01:43:57terry.reedysetmessages: + msg395373
2021-06-09 01:19:25terry.reedysetmessages: + msg395372
2021-06-09 01:12:29terry.reedysetpull_requests: + pull_request25202
2021-06-08 21:27:08terry.reedysetmessages: + msg395364
2021-06-08 20:01:31miss-islingtonsetmessages: + msg395358
2021-06-08 19:35:33miss-islingtonsetpull_requests: + pull_request25196
2021-06-08 19:35:26miss-islingtonsetnosy: + miss-islington
pull_requests: + pull_request25195
2021-06-08 19:35:17terry.reedysetmessages: + msg395357
2021-06-08 07:13:46terry.reedysetmessages: + msg395310
versions: + Python 3.11, - Python 3.8
2021-06-08 07:07:34terry.reedysetpull_requests: + pull_request25177
2021-06-08 03:31:21terry.reedysetmessages: + msg395304
2021-06-06 15:28:24taleinatsetkeywords: + patch
stage: patch review
pull_requests: + pull_request25149
2020-08-14 09:07:28cheryl.sabellasetmessages: + msg375384
2020-08-12 20:22:33terry.reedysetmessages: + msg375283
2020-08-12 11:32:20epainesetfiles: + idle-configdialog-rearrange.png

nosy: + taleinat, markroseman, cheryl.sabella
versions: + Python 3.10, - Python 3.7
messages: + msg375224

title: IDLE split "general" into two tabs -> IDLE: configdialog tab rearrange
2020-05-03 15:38:15epainesettype: enhancement
2020-05-03 15:26:22epainesetfiles: + tabs_wn_padx.png
2020-05-03 15:26:10epainesetfiles: + tabs_wn.png
2020-05-03 15:26:04epainesetfiles: + tabs_en.png
2020-05-03 15:25:56epainesetmessages: + msg367973
2020-05-02 19:17:03terry.reedysetmessages: + msg367946
2020-05-02 19:12:08epainesetfiles: + shell_editor_page_pady.png
2020-05-02 19:12:00epainesetfiles: + shell_editor_page.png
2020-05-02 19:11:48epainesetfiles: + general_page_se.png
2020-05-02 17:26:05epainesetmessages: + msg367941
2020-05-01 18:16:41terry.reedysetmessages: + msg367870
2020-05-01 14:11:03epainesetfiles: + window_page.png
2020-05-01 14:10:54epainesetfiles: + general_page_short.png
2020-05-01 14:10:42epainesetfiles: + general_page_pady_short.png
2020-05-01 14:10:36epainesetfiles: + general_page_pady.png
2020-05-01 14:10:30epainesetfiles: + general_page.png
2020-05-01 14:10:22epainesetfiles: + font_page_short.png
2020-05-01 14:10:10epainecreate