Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Added Edit Mode. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c16931707a574dfdfe72da04e82e49c3 |
User & Date: | peter 2004-08-16 20:01:49.000 |
Context
2004-08-16
| ||
20:12 | Added revision control docs. check-in: 7f94d0a40d user: peter tags: trunk | |
20:01 | Added Edit Mode. check-in: c16931707a user: peter tags: trunk | |
2004-07-03
| ||
16:42 | Updated Revision Diff and Rev fields. check-in: d045126745 user: peter tags: trunk | |
Changes
Changes to src/eskil.tcl.
︙ | ︙ | |||
47 48 49 50 51 52 53 | # Add a dummy if it does not exist. proc addBalloon {args} {} } else { namespace import -force psballoon::addBalloon } set debug 0 | | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # Add a dummy if it does not exist. proc addBalloon {args} {} } else { namespace import -force psballoon::addBalloon } set debug 0 set diffver "Version 2.0.4+ 2004-08-16" set thisScript [file join [pwd] [info script]] set thisDir [file dirname $thisScript] # Follow any link set tmplink $thisScript while {[file type $tmplink] eq "link"} { set tmplink [file readlink $tmplink] |
︙ | ︙ | |||
488 489 490 491 492 493 494 | proc emptyLine {top n {highlight 1}} { if {$highlight} { $::widgets($top,wLine$n) insert end "\n" hl$::HighLightCount } else { $::widgets($top,wLine$n) insert end "*****\n" } | | | 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 | proc emptyLine {top n {highlight 1}} { if {$highlight} { $::widgets($top,wLine$n) insert end "\n" hl$::HighLightCount } else { $::widgets($top,wLine$n) insert end "*****\n" } $::widgets($top,wDiff$n) insert end "\n" padding } # Insert one line in each text widget. # Mark them as changed, and optionally parse them. proc insertMatchingLines {top line1 line2} { global doingLine1 doingLine2 Pref |
︙ | ︙ | |||
639 640 641 642 643 644 645 646 647 648 649 650 651 652 | # Consider any total limit on displayed lines. if {$::diff($top,limitlines)} { set limit [expr {$::diff($top,limitlines) - $::diff($top,mapMax)}] if {$limit < 0} { set limit 0 } } set t 0 while {[gets $ch2 apa] != -1} { if {$line2 > 0 && $doingLine2 > $line2} break insertLine $top 2 $doingLine2 $apa incr doingLine2 addMapLines $top 1 incr t | > > | 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 | # Consider any total limit on displayed lines. if {$::diff($top,limitlines)} { set limit [expr {$::diff($top,limitlines) - $::diff($top,mapMax)}] if {$limit < 0} { set limit 0 } } if {$limit >= 0} {disallowEdit $top} set t 0 while {[gets $ch2 apa] != -1} { if {$line2 > 0 && $doingLine2 > $line2} break insertLine $top 2 $doingLine2 $apa incr doingLine2 addMapLines $top 1 incr t |
︙ | ︙ | |||
695 696 697 698 699 700 701 702 703 704 705 706 707 708 | if {$::diff($top,limitlines) && \ ($::diff($top,mapMax) > $::diff($top,limitlines))} { return } } # This should not happen unless something is wrong... if {$doingLine2 != $line2} { $::widgets($top,wDiff1) insert end \ "**Bad alignment here!! $doingLine2 $line2**\n" $::widgets($top,wDiff2) insert end \ "**Bad alignment here!! $doingLine2 $line2**\n" $::widgets($top,wLine1) insert end "\n" $::widgets($top,wLine2) insert end "\n" } | > | 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 | if {$::diff($top,limitlines) && \ ($::diff($top,mapMax) > $::diff($top,limitlines))} { return } } # This should not happen unless something is wrong... if {$doingLine2 != $line2} { disallowEdit $top $::widgets($top,wDiff1) insert end \ "**Bad alignment here!! $doingLine2 $line2**\n" $::widgets($top,wDiff2) insert end \ "**Bad alignment here!! $doingLine2 $line2**\n" $::widgets($top,wLine1) insert end "\n" $::widgets($top,wLine2) insert end "\n" } |
︙ | ︙ | |||
822 823 824 825 826 827 828 829 830 831 832 833 834 835 | set ::Pref(nocase) 0 } # Read a conflict file and extract the two versions. proc prepareConflict {top} { global Pref set ::diff($top,leftFile) [tmpFile] set ::diff($top,rightFile) [tmpFile] set ch1 [open $::diff($top,leftFile) w] set ch2 [open $::diff($top,rightFile) w] set ch [open $::diff($top,conflictFile) r] | > | 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 | set ::Pref(nocase) 0 } # Read a conflict file and extract the two versions. proc prepareConflict {top} { global Pref disallowEdit $top set ::diff($top,leftFile) [tmpFile] set ::diff($top,rightFile) [tmpFile] set ch1 [open $::diff($top,leftFile) w] set ch2 [open $::diff($top,rightFile) w] set ch [open $::diff($top,conflictFile) r] |
︙ | ︙ | |||
1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 | set revs $revs2 } else { set revlabels $revs } if {[llength $revs] < 2} { # Compare local file with specified version. if {[llength $revs] == 0} { set r "" if {$type eq "CT"} { set r [file join $stream $latest] } set tag "($type)" } else { | > | 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 | set revs $revs2 } else { set revlabels $revs } if {[llength $revs] < 2} { # Compare local file with specified version. disallowEdit $top 1 if {[llength $revs] == 0} { set r "" if {$type eq "CT"} { set r [file join $stream $latest] } set tag "($type)" } else { |
︙ | ︙ | |||
1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 | } elseif {$type eq "RCS"} { getRcsRev $::diff($top,RevFile) $::diff($top,leftFile) $r } else { getCtRev $::diff($top,RevFile) $::diff($top,leftFile) $r } } else { # Compare the two specified versions. set r1 [lindex $revs 0] set r2 [lindex $revs 1] set ::diff($top,leftFile) [tmpFile] set ::diff($top,rightFile) [tmpFile] set ::diff($top,leftLabel) \ "$::diff($top,RevFile) ($type [lindex $revlabels 0])" | > | 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 | } elseif {$type eq "RCS"} { getRcsRev $::diff($top,RevFile) $::diff($top,leftFile) $r } else { getCtRev $::diff($top,RevFile) $::diff($top,leftFile) $r } } else { # Compare the two specified versions. disallowEdit $top set r1 [lindex $revs 0] set r2 [lindex $revs 1] set ::diff($top,leftFile) [tmpFile] set ::diff($top,rightFile) [tmpFile] set ::diff($top,leftLabel) \ "$::diff($top,RevFile) ($type [lindex $revlabels 0])" |
︙ | ︙ | |||
1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 | disableRedo $top return } else { enableRedo $top } busyCursor $top # Clear up everything before starting processing foreach item {wLine1 wDiff1 wLine2 wDiff2} { set w $::widgets($top,$item) $w configure -state normal $w delete 1.0 end } clearMap $top set ::HighLightCount 0 highLightChange $top -1 # Display a star during diff execution, to know when the internal # processing starts, and when the label is "valid". set ::widgets($top,eqLabel) "*" wm title $top "Eskil:" update idletasks if {$::diff($top,mode) eq "patch"} { displayPatch $top drawMap $top -1 foreach item {wLine1 wLine2} { set w $::widgets($top,$item) $w configure -state disabled } update idletasks | > > | 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 | disableRedo $top return } else { enableRedo $top } busyCursor $top resetEdit $top # Clear up everything before starting processing foreach item {wLine1 wDiff1 wLine2 wDiff2} { set w $::widgets($top,$item) $w configure -state normal $w delete 1.0 end } clearMap $top set ::HighLightCount 0 highLightChange $top -1 # Display a star during diff execution, to know when the internal # processing starts, and when the label is "valid". set ::widgets($top,eqLabel) "*" wm title $top "Eskil:" update idletasks if {$::diff($top,mode) eq "patch"} { disallowEdit $top displayPatch $top drawMap $top -1 foreach item {wLine1 wLine2} { set w $::widgets($top,$item) $w configure -state disabled } update idletasks |
︙ | ︙ | |||
1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 | fconfigure $ch2 -translation crlf } set doingLine1 1 set doingLine2 1 # If there is a range, skip lines up to the range if {[llength $range] != 0} { foreach {start1 end1 start2 end2} $range break while {$doingLine1 < $start1 && [gets $ch1 line] >= 0} { incr doingLine1 } while {$doingLine2 < $start2 && [gets $ch2 line] >= 0} { incr doingLine2 } | > | 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 | fconfigure $ch2 -translation crlf } set doingLine1 1 set doingLine2 1 # If there is a range, skip lines up to the range if {[llength $range] != 0} { disallowEdit $top foreach {start1 end1 start2 end2} $range break while {$doingLine1 < $start1 && [gets $ch1 line] >= 0} { incr doingLine1 } while {$doingLine2 < $start2 && [gets $ch2 line] >= 0} { incr doingLine2 } |
︙ | ︙ | |||
1548 1549 1550 1551 1552 1553 1554 | set max [$w index end] } } foreach item {wLine1 wDiff1 wLine2 wDiff2} { set w $::widgets($top,$item) set d [expr {int($max) - int([$w index end])}] for {set t 0} {$t < $d} {incr t} { | | | 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 | set max [$w index end] } } foreach item {wLine1 wDiff1 wLine2 wDiff2} { set w $::widgets($top,$item) set d [expr {int($max) - int([$w index end])}] for {set t 0} {$t < $d} {incr t} { $w insert end \n padding } } close $ch1 close $ch2 # Mark aligned lines |
︙ | ︙ | |||
1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 | } foreach item {wLine1 wDiff1 wLine2 wDiff2} { set w $::widgets($top,$item) seeText $w $line1 $line2 } } ##################################### # File dialog stuff ##################################### # A wrapper for tk_getOpenFile proc myOpenFile {args} { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 | } foreach item {wLine1 wDiff1 wLine2 wDiff2} { set w $::widgets($top,$item) seeText $w $line1 $line2 } } ##################################### # Editing ##################################### # Clear Editing state proc resetEdit {top} { set ::diff($top,leftEdit) 0 set ::diff($top,rightEdit) 0 $top.mt.m entryconfigure "Edit Mode" -state normal $::widgets($top,wDiff1) tag configure padding -background {} $::widgets($top,wDiff2) tag configure padding -background {} } # Turn on editing on sides where it has not bew disallowed proc allowEdit {top} { $top.mt.m entryconfigure "Edit Mode" -state disable if {$::diff($top,leftEdit) == 0} { set ::diff($top,leftEdit) 1 $::widgets($top,wDiff1) tag configure padding -background \#f0f0f0 } if {$::diff($top,rightEdit) == 0} { set ::diff($top,rightEdit) 1 $::widgets($top,wDiff2) tag configure padding -background \#f0f0f0 } } # Turn off editing on sides that do not correspond to a file proc disallowEdit {top {side 0}} { if {$side == 0 || $side == 1} { set ::diff($top,leftEdit) -1 } if {$side == 0 || $side == 2} { set ::diff($top,rightEdit) -1 } if {$::diff($top,leftEdit) == -1 && $::diff($top,rightEdit) == -1} { $top.mt.m entryconfigure "Edit Mode" -state disabled } } # Ask if editing is allowed on a side proc mayEdit {top side} { if {$side == 1} { return [expr {$::diff($top,leftEdit) == 1}] } else { return [expr {$::diff($top,rightEdit) == 1}] } } proc copyBlock {top from first last} { set to [expr {3 - $from}] set wfrom $::widgets($top,wDiff$from) set wto $::widgets($top,wDiff$to) set tags "" set dump [$wfrom dump -all $first.0 $last.end+1c] $wfrom delete $first.0 $last.end+1c $wto delete $first.0 $last.end+1c foreach {key value index} $dump { switch -- $key { text { $wfrom insert $index $value $tags $wto insert $index $value $tags } tagon { if {$value eq "padding"} { set tags "padding" } } tagoff { if {$value eq "padding"} { set tags 0 } } } } } # Copy a row between text widgets proc copyRow {top from row} { set to [expr {3 - $from}] set wfrom $::widgets($top,wDiff$from) set wto $::widgets($top,wDiff$to) set text [$wfrom get $row.0 $row.end+1c] $wto delete $row.0 $row.end+1c $wto insert $row.0 $text "" # Rewrite the source row to remove any tags $wfrom delete $row.0 $row.end+1c $wfrom insert $row.0 $text "" } # Get the lines involved in the display proc getLinesFromRange {w range} { set from [lindex $range 0] set to [lindex $range 1] foreach {fromr fromi} [split $from "."] break foreach {tor toi} [split $to "."] break if {$toi == 0} {incr tor -1} # Get the corresponding lines in the file set t [$w get $fromr.0 $tor.end] set lines [lsort -integer [regexp -all -inline {\d+} $t]] set froml [lindex $lines 0] set tol [lindex $lines end] return [list $fromr $tor $froml $tol] } # Called by popup menus over row numbers to add commands for editing. # Returns 1 if nothing was added. proc editMenu {m top n hl x y} { if {![mayEdit $top $n]} {return 1} # Only copy when in a change block if {$hl ne ""} { set o [expr {3 - $n}] set w $::widgets($top,wLine$n) set wo $::widgets($top,wLine$o) # Get the row that was clicked set index [$w index @$x,$y] set row [lindex [split $index "."] 0] set line [regexp -inline {\d+} [$w get $row.0 $row.end]] set lineo [regexp -inline {\d+} [$wo get $row.0 $row.end]] # Row copy if {$lineo ne ""} { $m add command -label "Copy Row from other side" \ -command [list copyRow $top $o $row] } if {$line ne ""} { $m add command -label "Copy Row to other side" \ -command [list copyRow $top $n $row] } # Get ranges for the change block set range [$w tag ranges hl$hl] set rangeo [$wo tag ranges hl$hl] # Get the lines involved in the block foreach {from to froml tol} [getLinesFromRange $w $range ] break foreach {fromo too fromlo tolo} [getLinesFromRange $wo $rangeo] break # More than one line in the block? if {($froml ne "" && $tol ne "" && $froml < $tol) || ($fromlo ne "" && $tolo ne "" && $fromlo < $tolo)} { $m add command -label "Copy Block to other side" \ -command [list copyBlock $top $n $from $to] $m add command -label "Copy Block from other side" \ -command [list copyBlock $top $o $fromo $too] } } $m add command -label "Save File" -command [list saveFile $top $n] return 0 } proc saveFile {top side} { if {$side == 1} { if {!$::diff($top,leftEdit)} return set fileName $::diff($top,leftFile) } else { if {!$::diff($top,rightEdit)} return set fileName $::diff($top,rightFile) } set w $::widgets($top,wDiff$side) # Confirm dialog set apa [tk_messageBox -parent $top -icon question \ -title "Overwrite file" -type yesnocancel -message \ "Overwriting file [file tail $fileName]\nDo you want to\ create a backup copy ?"] if {$apa eq "yes"} { set backup [file rootname $fileName].bak if {[catch {file copy -force $fileName $backup} result]} { tk_messageBox -parent $top -icon error \ -title "File error" -type ok -message \ "Error creating backup file $backup:\n$result" return } } elseif {$apa ne "no"} { return } set ch [open $fileName "w"] set save 1 foreach {key value index} [$w dump -all 1.0 end-1c] { switch -- $key { text { if {$save} { puts -nonewline $ch $value } } tagon { if {$value eq "padding"} { set save 0 } } tagoff { if {$value eq "padding"} { set save 1 } } } } close $ch } ##################################### # File dialog stuff ##################################### # A wrapper for tk_getOpenFile proc myOpenFile {args} { |
︙ | ︙ | |||
2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 | set tdump2 [$::widgets($top,wDiff2) dump -tag -text 1.0 end] set lineNo1 [processLineno $::widgets($top,wLine1)] set lineNo2 [processLineno $::widgets($top,wLine2)] foreach tdump [list $tdump1 $tdump2] \ lineName {lines1 lines2} wrapName {wrap1 wrap2} \ lineNo [list $lineNo1 $lineNo2] { set lines {} set wraps {} set line [lindex $lineNo 0] set newline 0 set gray 1.0 set chars 0 set wrapc 0 | > > | 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 | set tdump2 [$::widgets($top,wDiff2) dump -tag -text 1.0 end] set lineNo1 [processLineno $::widgets($top,wLine1)] set lineNo2 [processLineno $::widgets($top,wLine2)] foreach tdump [list $tdump1 $tdump2] \ lineName {lines1 lines2} wrapName {wrap1 wrap2} \ lineNo [list $lineNo1 $lineNo2] { ##nagelfar variable lineName varName ##nagelfar variable wrapName varName set lines {} set wraps {} set line [lindex $lineNo 0] set newline 0 set gray 1.0 set chars 0 set wrapc 0 |
︙ | ︙ | |||
2584 2585 2586 2587 2588 2589 2590 | } elseif {$n == 2 && $line == $align2} { set label "Remove alignment with line $align1" set cmd [list clearAlign $top $align1] } } } | | | 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 | } elseif {$n == 2 && $line == $align2} { set label "Remove alignment with line $align1" set cmd [list clearAlign $top $align1] } } } $m add command -label $label -command $cmd return 0 } ################### # Diff highlighting ################### |
︙ | ︙ | |||
2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 | } proc hlPopup {top n hl X Y x y} { if {[info exists ::diff($top,nopopup)] && $::diff($top,nopopup)} return destroy .lpm menu .lpm if {$hl != ""} { .lpm add command -label "Select" \ -command [list hlSelect $top $hl] } set other [expr {$n == 1 ? 2 : 1}] if {![info exists ::diff($top,separate$other)]} { | > > | 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 | } proc hlPopup {top n hl X Y x y} { if {[info exists ::diff($top,nopopup)] && $::diff($top,nopopup)} return destroy .lpm menu .lpm editMenu .lpm $top $n $hl $x $y if {$hl != ""} { .lpm add command -label "Select" \ -command [list hlSelect $top $hl] } set other [expr {$n == 1 ? 2 : 1}] if {![info exists ::diff($top,separate$other)]} { |
︙ | ︙ | |||
2681 2682 2683 2684 2685 2686 2687 | proc rowPopup {w X Y x y} { set top [winfo toplevel $w] if {[info exists ::diff($top,nopopup)] && $::diff($top,nopopup)} return destroy .lpm menu .lpm regexp {(\d+)\D*$} $w -> n | | | 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 | proc rowPopup {w X Y x y} { set top [winfo toplevel $w] if {[info exists ::diff($top,nopopup)] && $::diff($top,nopopup)} return destroy .lpm menu .lpm regexp {(\d+)\D*$} $w -> n if {[editMenu .lpm $top $n "" $x $y] && [alignMenu .lpm $top $n $x $y]} { return } set ::diff($top,nopopup) 1 tk_popup .lpm $X $Y after idle [list after 1 [list set ::diff($top,nopopup) 0]] } |
︙ | ︙ | |||
3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 | -command makeDiffWin $top.mt.m add command -label "Directory Diff" -underline 0 \ -command makeDirDiffWin $top.mt.m add command -label "Clip Diff" -underline 0 \ -command makeClipDiffWin $top.mt.m add command -label "Merge" -underline 0 \ -command [list makeMergeWin $top] -state disabled $top.mt.m add command -label "Clear Align" \ -command [list clearAlign $top] -state disabled set ::widgets($top,enableAlignCmd) [list \ $top.mt.m entryconfigure "Clear Align" -state normal] set ::widgets($top,disableAlignCmd) [list \ $top.mt.m entryconfigure "Clear Align" -state disabled] | > > | 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 | -command makeDiffWin $top.mt.m add command -label "Directory Diff" -underline 0 \ -command makeDirDiffWin $top.mt.m add command -label "Clip Diff" -underline 0 \ -command makeClipDiffWin $top.mt.m add command -label "Merge" -underline 0 \ -command [list makeMergeWin $top] -state disabled $top.mt.m add command -label "Edit Mode" -underline 0 \ -command [list allowEdit $top] -state disabled $top.mt.m add command -label "Clear Align" \ -command [list clearAlign $top] -state disabled set ::widgets($top,enableAlignCmd) [list \ $top.mt.m entryconfigure "Clear Align" -state normal] set ::widgets($top,disableAlignCmd) [list \ $top.mt.m entryconfigure "Clear Align" -state disabled] |
︙ | ︙ |