Add version 1.2
This commit is contained in:
parent
1bc36befda
commit
157caf202e
8
NEWS.md
8
NEWS.md
|
@ -1,5 +1,13 @@
|
|||
# ToyEd text editor project news
|
||||
|
||||
## [1.2] - 2023-10-06
|
||||
|
||||
### Changed
|
||||
|
||||
* Bumped minimum requirements.
|
||||
* Improved file type filters.
|
||||
* File dialogs now use Zenity under X11 if available.
|
||||
|
||||
## [1.1.1] - 2023-09-07
|
||||
|
||||
### Changed
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
ToyEd is a toy text editor made for fun and learning. It's not meant for serious use, but rather to be studied and built upon.
|
||||
|
||||
ToyEd is written in 650 lines of Tcl/Tk (see below), but has many expected features:
|
||||
ToyEd is written in 700 lines of Tcl/Tk (see below), but has many expected features:
|
||||
|
||||
- GUI controls
|
||||
- keyboard operation
|
||||
|
@ -14,13 +14,13 @@ ToyEd is written in 650 lines of Tcl/Tk (see below), but has many expected featu
|
|||
|
||||
ToyEd is open source under the MIT license. See source code.
|
||||
|
||||
As of 7 September 2023, the code seems to work right, but hasn't really been tested. Please back up your data.
|
||||
As of 6 October 2023, the code seems to work right, but hasn't been tested much. Please back up your data.
|
||||
|
||||
The user interface should be fairly obvious.
|
||||
|
||||
## System requirements
|
||||
|
||||
Running ToyEd from source requires Tcl/Tk 8.5 or newer, with Tcllib and Tklib. Both are available on most Linux distributions, or else from the tcl-lang.org website.
|
||||
Running ToyEd from source requires Tcl/Tk 8.6 or newer, with Tklib. Both are available on most Linux distributions, or else from the tcl-lang.org website.
|
||||
|
||||
Recommended screen resolution: 800x600.
|
||||
|
||||
|
|
81
toyed.tcl
81
toyed.tcl
|
@ -21,23 +21,22 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
package require Tcl 8.5
|
||||
package require Tk 8.5
|
||||
package require try
|
||||
package require Tcl 8.6
|
||||
package require Tk 8.6
|
||||
|
||||
package require getstring
|
||||
namespace import getstring::*
|
||||
|
||||
set window_title "ToyEd Text Editor"
|
||||
|
||||
set about_text "A toy text editor\nVersion 1.1.1 (7 Sep 2023)\nMIT License"
|
||||
set about_text "A toy text editor\nVersion 1.2 (6 Oct 2023)\nMIT License"
|
||||
set credits_text "Made by No Time To Play\nbased on knowledge\nfrom TkDocs.com"
|
||||
set site_link "https://ctrl-c.club/~nttp/toys/toyed/"
|
||||
|
||||
set file_types {
|
||||
{"All files" ".*"}
|
||||
{"Text files" ".txt"}
|
||||
{"Markdown files" ".md"}
|
||||
{"Text files" ".txt .md"}
|
||||
{"Script files" ".py .tcl .sh"}
|
||||
}
|
||||
|
||||
set file_name ""
|
||||
|
@ -377,10 +376,16 @@ proc do_open {} {
|
|||
return
|
||||
}
|
||||
}
|
||||
set choice [tk_getOpenFile -parent . \
|
||||
-title "Open existing file" \
|
||||
-initialdir [file_dir $file_name] \
|
||||
-filetypes $file_types]
|
||||
|
||||
if {[tk windowingsystem] == "x11" && [auto_execok "zenity"] ne ""} {
|
||||
set choice [open_with_zenity $file_name]
|
||||
} else {
|
||||
set choice [tk_getOpenFile -parent . \
|
||||
-title "Open existing file" \
|
||||
-initialdir [file_dir $file_name] \
|
||||
-filetypes $file_types]
|
||||
}
|
||||
|
||||
if {[string length $choice] == 0} {
|
||||
set status "Opening canceled."
|
||||
} elseif {![file isfile $choice]} {
|
||||
|
@ -394,6 +399,27 @@ proc do_open {} {
|
|||
}
|
||||
}
|
||||
|
||||
proc open_with_zenity file_name {
|
||||
try {
|
||||
if {$file_name ne ""} {
|
||||
return [exec zenity --file-selection \
|
||||
--title "Open existing file" \
|
||||
--filename $file_name \
|
||||
--file-filter "All files | *" \
|
||||
--file-filter "Text files | *.txt *.md" \
|
||||
--file-filter "Script files | *.py *.tcl *.sh"]
|
||||
} else {
|
||||
return [exec zenity --file-selection \
|
||||
--title "Open existing file" \
|
||||
--file-filter "All files | *" \
|
||||
--file-filter "Text files | *.txt *.md" \
|
||||
--file-filter "Script files | *.py *.tcl *.sh"]
|
||||
}
|
||||
} trap CHILDSTATUS {results options} {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
proc load_file full_path {
|
||||
global status window_title
|
||||
|
||||
|
@ -436,10 +462,14 @@ proc do_save {} {
|
|||
proc do_save_as {} {
|
||||
global file_name file_types status
|
||||
|
||||
set choice [tk_getSaveFile -parent . \
|
||||
-title "Save file as..." \
|
||||
-initialdir [file_dir $file_name] \
|
||||
-filetypes $file_types]
|
||||
if {[tk windowingsystem] == "x11" && [auto_execok "zenity"] ne ""} {
|
||||
set choice [save_with_zenity $file_name]
|
||||
} else {
|
||||
set choice [tk_getSaveFile -parent . \
|
||||
-title "Save file as..." \
|
||||
-initialdir [file_dir $file_name] \
|
||||
-filetypes $file_types]
|
||||
}
|
||||
if {[string length $choice] == 0} {
|
||||
set status "Save canceled."
|
||||
} elseif {[save_file $choice]} {
|
||||
|
@ -447,6 +477,29 @@ proc do_save_as {} {
|
|||
}
|
||||
}
|
||||
|
||||
proc save_with_zenity file_name {
|
||||
try {
|
||||
if {$file_name ne ""} {
|
||||
return [exec zenity --file-selection \
|
||||
--title "Save file as..." \
|
||||
--save --confirm-overwrite \
|
||||
--filename $file_name \
|
||||
--file-filter "All files | *" \
|
||||
--file-filter "Text files | *.txt *.md" \
|
||||
--file-filter "Script files | *.py *.tcl *.sh"]
|
||||
} else {
|
||||
return [exec zenity --file-selection \
|
||||
--title "Save file as..." \
|
||||
--save --confirm-overwrite \
|
||||
--file-filter "All files | *" \
|
||||
--file-filter "Text files | *.txt *.md" \
|
||||
--file-filter "Script files | *.py *.tcl *.sh"]
|
||||
}
|
||||
} trap CHILDSTATUS {results options} {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
proc save_file full_path {
|
||||
global status window_title
|
||||
|
||||
|
|
Loading…
Reference in New Issue