⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itkedit

📁 linux 下的源代码分析阅读器 red hat公司新版
💻
字号:
#!/bin/sh#\exec itkwish $0# ======================================================================# Simple text editor built with [incr Widgets]# ----------------------------------------------------------------------#   AUTHOR:  Michael J. McLennan#    CLASS:  Object-Oriented Programming with [incr Tcl]# ======================================================================package require Iwidgets 2.1option add *edit.width 5i startupFileoption add *edit.height 4i startupFileoption add *Fileselectiondialog.width 4i startupFileoption add *Fileselectiondialog.height 5i startupFile# ----------------------------------------------------------------------set FileWindows 0# ----------------------------------------------------------------------#  Dialog boxes# ----------------------------------------------------------------------messagedialog .notice -title "itkedit: Notice" \    -bitmap info -buttonboxpos e -modality application.notice hide OK.notice hide Help.notice buttonconfigure Cancel -text "Dismiss"messagedialog .confirm -title "itkedit: Confirm" \    -bitmap questhead -modality application.confirm hide Help.confirm buttonconfigure OK -text "Yes".confirm buttonconfigure Cancel -text "No"fileselectiondialog .files -title "itkedit: Files" \    -childsitepos s -modality application.files hide Helpset PaneMenu "[.files childsite].panes"optionmenu $PaneMenu -labeltext "Edit Window:"pack $PaneMenu -pady 6# ----------------------------------------------------------------------# USAGE:  file_load## Initiates the process of loading a new text file for editing.# Pops up a Fileselectiondialog, allowing the user to select a# file for editing.  If the user pushes the "load" button, the# file is loaded.# ----------------------------------------------------------------------proc file_load {} {    global FileName PaneMenu    .files buttonconfigure OK -text "Load"    if {[.files activate]} {        set fname [.files get]        set cmd {            set fid [open $fname r]            set text [read $fid]            close $fid        }        if {[catch $cmd err] != 0} {            .notice configure -bitmap error \                -text "Cannot load file \"$fname\":\n$err"            .notice activate            return        }        set pane [$PaneMenu get]        set win [.edit childsite $pane]        clear_text $win        $win.text insert end $text        $win.text configure -labeltext "file: $fname"        set FileName($win) $fname    }}# ----------------------------------------------------------------------# USAGE:  file_save_as## Initiates the process of saving the current text into a particular# file.  Pops up a Fileselectiondialog, allowing the user to select# a file for saving.  If the user pushes the "save" button, the# file is saved.# ----------------------------------------------------------------------proc file_save_as {} {    global FileName PaneMenu    .files buttonconfigure OK -text "Save"    if {[.files activate]} {        set pane [$PaneMenu get]        set win [.edit childsite $pane]        set FileName($win) [.files get]        file_save $win    }}# ----------------------------------------------------------------------# USAGE:  file_save <win>## Saves the context of <win> into its associated file.  Does the# dirty work to finish the file_save_as operation.# ----------------------------------------------------------------------proc file_save {win} {    global FileName FileChanged    set cmd {        set fid [open $FileName($win) w]        puts $fid [$win.text get 1.0 end]        close $fid        set FileChanged($win) 0        $win.text configure -labeltext "file: $FileName($win)"    }    if {[catch $cmd err] != 0} {        .notice configure -bitmap error \            -text "Cannot save file \"$FileName($win)\":\n$err"        .notice activate    }}# ----------------------------------------------------------------------# USAGE:  clear_text ?<win>?## Clears the text area associated with <win>, making sure to save# any pending changes.  If no <win> is specified, then all text# areas are cleared.# ----------------------------------------------------------------------proc clear_text {{areas ""}} {    global FileName FileChanged FileWindows    if {$areas == ""} {        for {set i 0} {$i < $FileWindows} {incr i} {            set pane "area #[expr $i+1]"            lappend areas [.edit childsite $pane]        }    }    foreach win $areas {        if {$FileChanged($win)} {            set fname [file tail $FileName($win)]            .confirm configure -text "File \"$fname\" has changed.\nSave changes?"            if {[.confirm activate]} {                file_save $win            }        }        $win.text delete 1.0 end        set FileChanged($win) 0    }}# ----------------------------------------------------------------------# USAGE:  split_view## Adds another editing pane to the current editor.# ----------------------------------------------------------------------proc split_view {} {    global FileName FileChanged FileWindows PaneMenu    set pane "area #[incr FileWindows]"    .edit add $pane -minimum 100    $PaneMenu insert end $pane    set win [.edit childsite $pane]    set FileName($win) untitled.txt    set FileChanged($win) 0    scrolledtext $win.text -wrap none -labeltext "file: $FileName($win)" \        -hscrollmode none -vscrollmode dynamic -visibleitems 1x1    pack $win.text -expand yes -fill both    bind [$win.text component text] <KeyPress> "        set FileChanged($win) 1    "}frame .mbar -borderwidth 2 -relief raisedpack .mbar -side top -fill x# ----------------------------------------------------------------------#  FILE menu# ----------------------------------------------------------------------menubutton .mbar.file -text "File" -underline 0 -menu .mbar.file.menupack .mbar.file -side left -padx 4menu .mbar.file.menu.mbar.file.menu add command -label "Load..." \    -accelerator "  ^L" -underline 0 -command file_loadbind . <Control-KeyPress-l> { .mbar.file.menu invoke "Load..." }.mbar.file.menu add command -label "Save As..." \    -accelerator "  ^S" -underline 0 -command file_save_asbind . <Control-KeyPress-s> { .mbar.file.menu invoke "Save As..." }.mbar.file.menu add separator.mbar.file.menu add command -label "Quit" \    -accelerator "  ^Q" -underline 0 -command {clear_text; exit}bind . <Control-KeyPress-q> { .mbar.file.menu invoke Quit }# ----------------------------------------------------------------------#  VIEW menu# ----------------------------------------------------------------------menubutton .mbar.view -text "View" -underline 0 -menu .mbar.view.menupack .mbar.view -side left -padx 4menu .mbar.view.menu.mbar.view.menu add command -label "Split" \    -underline 0 -command split_view# ----------------------------------------------------------------------#  Editor# ----------------------------------------------------------------------panedwindow .edit -orient horizontalpack .edit -expand yes -fill bothsplit_viewwm title . "itkedit"wm protocol . WM_DELETE_WINDOW { .mbar.file.menu invoke Quit }after idle {    update idletasks    wm minsize . [winfo reqwidth .] [winfo reqheight .]}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -