pytextedit 0.2 is complete!

I finally managed to get the MDI stuff figured out, so this is done now!


You can download it here, if you want. This is source code only, but I’m working on creating an installer for Linux. (But no binary-only versions.)


The single biggest change this version is the addition of the MDI (multi-document interface), which allows the user to edit multiple documents in the same window.

Full changelog:

  • Font size can now no longer be zero or negative.
  • Right-clicking on toolbar buttons now show dialogs with a short description of what the button does.
  • Middle-clicking now pastes text.
  • Fixed bug in “Goto” where clicking Cancel in the dialog would see() the line with the cursor. (This was a problem if the user had scrolled.)
  • “Goto” now uses the current line number as the default value.
  • “Select From” now uses the current cursor position as the default value.
  • Removed some unnecessary global variables.
  • askdirectory() is now imported in Python 2 as well. I have no idea why it wasn’t before.
  • askopenfilename() is now imported. It was used by “Edit Favorites”, but it wasn’t imported. Oops.
  • “Edit Favorites” now uses ED_INIT_DIR to set the default directory.
  • “Edit Favorites” now uses the custom filetypes list.
  • Changed keybinding for “Favorites” to Ctrl+Alt+[Space].
  • “Recently Opened” can now be used easily without a mouse. (Added “Return” keybinding, and focus()ed on the listbox.)
  • “Favorites” can now be used easily without a mouse. (Added “Return” keybinding, and focus()ed on the listbox.)
  • “View Bookmarks” can now be used easily without a mouse. (Added “Return” keybinding, and focus()ed on the listbox.)
  • Default value for “Quick Open” is now ED_INIT_DIR.
  • Removed “Indent All” and “Unindent All”.
  • “Indent” and “Unindent” will now indent any selected text.
  • Added keybinding for “Add Bookmark.” (Ctrl+B)
  • Added “Documents” menu.
  • Added “Previous” and “Next” toolbar buttons.
  • Re-organized toolbar.
  • Bookmarks now cannot be added multiple times on the same line.
  • Added “Search -> Open URL in Web Browser”.
  • Added “Options -> Enlarge Font” and “Options -> Shrink Font”.
  • Enabling/disabling tearoff menus in Options dialog no longer requires a restart.
  • Fixed bug where tearoff menu optionmenu in Options dialog would not default to disabled.
  • Bookmarks are now sorted numerically.
  • Added keybinding for “View Bookmarks”.
  • Removed menu tearoff for bookmarks submenu in context menu.
  • Revised “About” dialog.
  • Fixed bug where “Goto” would accept a line greater than the total number of lines.
  • Bookmarks will now no longer be shown if the line number is greater than the total number of lines.
  • In “Statistics” dialog added “Chars (excluding spaces)” and “Sel chars (excluding spaces)”.
  • “Statistics” dialog will now only show info on selected text if there is text selected.
  • Added feature to add extra indenting based on last character of the line.
  • Added a Cancel button to the “Options” dialog.
  • “Insert Date/Time” now use standard formatting.
  • “Undo” and “Redo” will no longer cause errors if there is nothing to do.
  • Moved time/date formatting options into “Misc” tab in “Options” dialog.
  • Added block indenting option to “Editing” tab in “Options” dialog.
  • Loading a file from the command line will now set the insert cursor to the first position by default. (Before it would be set to the last postion.)
  • Simplified save function in Exit dialog.
  • The last open file is now remembered on exit, and restored next session.
  • check_modified() now will do nothing if the text is already marked as modified.
  • Added exportselection option to textboxes.
  • Added option in Misc tab of Option dialog for enabling/disabling automatic restoring of the last opened file.
  • “Clear Bookmarks” will now let you know if there are no bookmarks, and if so do nothing.
  • In the confirmation dialog “Clear Bookmarks” will now say how many bookmarks there are.
  • Added status bar.
  • Added option to Interface tab in Options dialog for showing/hiding the status bar.
  • Added option to Interface tab in Options dialog for using the full or short filename in the title.
  • “Open From URL” now forgets the last filename.
  • All functions now use update_title(), instead of calling root.title() directly.
  • “Search”, “Replace”, and “Insert Tag” now focus on the first entry by default.
  • Added a new icon for the Save toolbar button.
  • Added option to Misc tab in Options dialog for enabling/disabling regex search.
  • Added regex search.
  • Added regex replace.
  • Added icons in menus.
  • Fixed bug where text box would scroll to cursor every time any menu command was selected.
  • Clicking on statistics labels in status bar now shows the statistics dialog.
  • Fixed bug where clearing the “Recently Opened” list would result in an extra blank newline.
  • “Save As” will now add file to list of recently opened files.
  • “Recently Opened” files now display in a menu.
  • Added code in file_open() to check if the file exists, and if it doesn’t to not do anything.
  • Fixed bug where pressing the Enter key wouldn’t scroll to the new location, if it was otherwise out of view. (This bug only appeared in python2, for some reason.)
  • Added MDI.
  • Added “File -> Print”.

What’s next?

I have a few more things I’d like to do with this project soon, such as improving bookmarks, improving Unicode support, cleaning up the code a bit, etc. After that, though, I’m going to stop working on pytextedit for a while. It’s not that I won’t have anything I don’t want to add (I have quite a lot), but anything left to do will be rather complex to do from scratch.

I’m considering changing the GUI from Tk to GTK+, which would add some improvements. For example, syntax highlighting will be built in, and line numbers will be better. However, it would result in an extra dependency to be installed for Windows/OSX users, so I’m not certain if this is a good idea.