classification
Title: Idle: make editor title bar user configurable
Type: behavior Stage: needs patch
Components: IDLE Versions: Python 3.8, Python 3.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: Saimadhav.Heblikar, jesstess, markroseman, terry.reedy
Priority: normal Keywords: patch

Created on 2014-05-27 05:09 by terry.reedy, last changed 2019-03-20 16:50 by terry.reedy.

Files
File name Uploaded Description Edit
title.diff Saimadhav.Heblikar, 2014-06-04 14:59 review
Messages (4)
msg219198 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2014-05-27 05:09
#17390 changes the title bars for (so far), shell and editor windows. While the editor window change helps me (for reasons given on the issue) and got no objection, before being pushed, from people nosy on the issue, others have found it objectionable in practice. Since no one solution satisfies all use cases, I propose to make the editor_title format user configurable. Since extra keywords are ignored, as in
  >>> "{short}".format(short='abc', long='xyz')
  'abc'
users can omit and arrange fields as they please in editor_title, which would then be called with all 3 variable field values. 
  editor_title.format(short=short, long=long, version=version)
I believe editor_title = '{short} - {long}' produces the previous title. That can be the default.

A complication is that EditorWindow is also the base window class for Shell and Output windows. The title is calculated and set in a generic
 def saved_change_hook(self):  # line 921 in 3.3
However, I believe that having non-empty short and long names is unique to editor windows (must recheck). If so. the format call could go in the second line of 
 if short and long:
   title = short + " - " + long
If untitled files were given a 'long' title of '(no file)', then they would be handled by the same clause. Explaining why a window is 'untitled' (no file to title it from) might be a benefit anyway.

Some other possible solutions: Add parameter editor=False to saved_change_hook. Make EditorWindow a subclass of a generic Base Editor and move things specific to EditorWindow to the subclass.
msg219199 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2014-05-27 05:11
Another possibility is to separate the calculation of the title from setting it. This would make it much easier to unittest the calculation of the title.
msg219760 - (view) Author: Saimadhav Heblikar (Saimadhav.Heblikar) * Date: 2014-06-04 14:59
Attaching a patch to make title bar user configurable.

In this patch
The title bar is configurable for PyShellEditorWindow(EditorWindow), PyShell and OutputWindow. 
The user may add the following parameters -

        py_major_version (3)
        py_minor_version (4)
        py_patchlevel (1+)
        tk_version (8.5)
        tcl_version (8.5)
        filename (sample.py)
        dir_path (/media/dev/)
        full_path (/media/dev/sample.py)
        modified_asterik (if/not saved '*')

These parameters are configurable by going to "options"->"configure idle"->"general tab"->"configure"
The above parameters have to inserted between {} as {tk_version}

The fetching of title is done by a utility function called get_title.
Redundant methods short_title and long_title have been removed.

Default config titles for PyShellEditorWindow, PyShell and OutputWindow have been inserted into config-main.def. This is based on my preferences. It may be very different from what the community/idle userbase requires. These settings have to be changed to suit the tastes of community/idle userbase.

A new module called configTitle. This contains a getTitleDialog class. It is modeled along the lines of cfgSectionNameDialog and cfgSectionHelpSourceEdit dialog. 

In configDialog.py,in "general tab", a new section for configuring title bar has been added. Clicking "configure" brings up a "getTitleDialog" dialog, where the user can modify the title. A simple validity check is also performed. As best possible, the GUI additions are in close sync with the existing code around it(except in ConfigureTitleBar).

And to whats missing,
1. Bettor error messages could be shown to user
2. Better help text to user in the config dialog,
3. Better UI/UX for configDialog
4. Tests!
5. ConfigureTitleBar() could be rewritten, say once we have a good picture of whats needed/not needed/to be removed etc.
msg223087 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2014-07-15 05:15
I decided that it would be better to try to quickly solve Raymond's issue with editor windows in a simpler fashion and not rush this. Once we add a new configuration option, the cross-version nature of user config files means we are more or less stuck with the decision.

I agree that the current title code is hackish and should be refactored somehow. I am just not sure how yet.  I want to take the in-process CheckerWindows and future ExternalWindows into account too.
History
Date User Action Args
2019-03-20 16:50:21terry.reedysetcomponents: + IDLE
versions: + Python 3.7, Python 3.8, - Python 2.7, Python 3.4, Python 3.5
2015-09-18 16:40:22markrosemansetnosy: + markroseman
2014-07-15 05:15:05terry.reedysetpriority: high -> normal

messages: + msg223087
2014-06-04 14:59:22Saimadhav.Heblikarsetfiles: + title.diff

nosy: + Saimadhav.Heblikar, jesstess
messages: + msg219760

keywords: + patch
2014-05-27 05:11:28terry.reedysetmessages: + msg219199
2014-05-27 05:09:14terry.reedycreate