Changeset 4474


Ignore:
Timestamp:
Apr 14, 2021, 9:20:35 AM (4 years ago)
Author:
Andreas Schnellbacher
Message:
  • TreeBackup, after Delete or Revert: Restore previous sort order.
  • TreeBackup, after Sort: Position cursor on the same file as before.
Location:
trunk/src/netlabs/macros
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/netlabs/macros/backup.e

    r4412 r4474  
    229229   endif
    230230   FileSpec = Dir
    231    'TreeDir' FileSpec
     231   SortOrder = '/F N'  -- = default order
     232   'TreeDir' EnquoteFileSpec( FileSpec) SortOrder
    232233   if not rc then
    233       .filename = '.TreeBackup' FileSpec
     234      .filename = '.TreeBackup' EnquoteFileSpec( FileSpec) SortOrder
    234235   endif
    235236
     
    252253   endif
    253254   FileSpec = strip( Dir, 'T', '\')'\'Name'~*'
    254    'TreeBackup' FileSpec
     255   'TreeBackup' EnquoteFileSpec( FileSpec)
    255256
    256257; ---------------------------------------------------------------------------
    257258defc TreeBackup
    258    parse arg FileSpec
    259 
    260    'TreeDir' FileSpec
     259   -- Strip appended SortOption
     260   ParseTreeTitleFilename( strip( arg( 1)), Filename, SortOption)
     261
     262   DefaultFileSortOption  = '/R D'
     263   DefaultDirSortOption   = '/F N'
     264
     265   if SortOption = '' then
     266      if NepmdDirExists( Filename) then
     267         SortOption = DefaultDirSortOption
     268      else
     269         SortOption = DefaultFileSortOption
     270      endif
     271   endif
     272
     273   'TreeDir' EnquoteFileSpec( Filename) SortOption
    261274   treedirrc = rc
    262275
    263    Filename = '.TreeBackup' FileSpec
     276   Displayname = '.TreeBackup' EnquoteFileSpec( Filename) SortOption
    264277   if not treedirrc then
    265       .filename = Filename
    266       'TreeSort /R D'
     278      .filename = Displayname
     279      'TreeSort' SortOption
    267280      -- TreeDir executes already QuitSameFile, but before renaming it
    268       'PostMe QuitSameFile'
     281      --'PostMe QuitSameFile'  -- TreeDir already does this
    269282   else
    270283      -- TreeDir executes already QuitFile, but before naming it Filename
    271       'QuitFile' Filename
     284      'QuitFile' EnquoteFileSpec( Filename)
    272285   endif
    273286
    274287; ---------------------------------------------------------------------------
    275288defproc IsABackupFile
    276    Filename = arg( 1)
     289   Filename = StripQuotesFileSpec( strip( arg( 1)))
    277290   if Filename = '' then
    278291      Filename = .filename
     
    297310
    298311defc IsABackupFile
    299    Filename = arg( 1)
     312   Filename = StripQuotesFileSpec( strip( arg( 1)))
    300313   if Filename = '' then
    301314      Filename = .filename
     
    652665; ---------------------------------------------------------------------------
    653666defc Restore
    654    parse arg BackupFilename
    655    if leftstr( BackupFilename, 1) = '"' then
    656       parse arg '"'BackupFilename'"'
    657    endif
     667   BackupFilename = StripQuotesFileSpec( strip( arg( 1)))
    658668   if BackupFilename = '' then
    659669      'SayError Missing argument: BackupFilename'
  • TabularUnified trunk/src/netlabs/macros/file.e

    r4457 r4474  
    218218; Syntax: QuitFile Filename
    219219defc QuitFile
    220    Filename = arg( 1)
     220   Filename = StripquotesFileSpec( strip( arg( 1)))
    221221   NumQuit = 0
    222222
     
    248248defc QuitSameFile
    249249   Filename = .filename
     250   if upcase( leftstr( Filename, 5)) = '.TREE' then
     251      -- Strip appended SortOption
     252      ParseTreeTitleFilename( Filename, Filename, PrevSortOption)
     253   endif
     254
    250255   NumQuit = 0
    251256
     
    257262      if CurFid = StartFid then
    258263         leave
    259       elseif .filename = Filename then
     264      endif
     265      NextFilename = .filename
     266      if upcase( leftstr( NextFilename, 5)) = '.TREE' then
     267         -- Strip appended SortOption
     268         ParseTreeTitleFilename( NextArgs, NextFilename, NextSortOption)
     269      endif
     270      if NextFilename = Filename then
    260271         'xcom quit'
    261272         NumQuit = NumQuit + 1
     
    19551966         rc = 0
    19561967      else
    1957          if AskOkCancel( 'Delete file "'File1'"?') then
     1968         if AskOkCancel( 'Delete file "'File1'"?'\n\n ||
     1969            '('CTRL_KEY__MSG' to bypass confirmation.)') then
    19581970            rc = 0
    19591971         else
     
    30233035
    30243036; ---------------------------------------------------------------------------
    3025 ; Deletes file under cursor for a .Tree file
    3026 defc DeleteTreeListFile
    3027    'Delete' EnquoteFilespec( GetTreeListFilename())
    3028    if pos( '.TREEBACKUP', upcase( .filename)) = 1 then
    3029       Cmd = substr( .filename, 2)
    3030       Cmd
    3031    endif
    3032 
    3033 ; ---------------------------------------------------------------------------
    30343037defproc IsADirList
    30353038   rcx = 0
     
    30383041      if upcase( leftstr( .filename, 8)) = '.DOS DIR' then
    30393042         rcx = 1
    3040       elseif not IsAShell() then
    3041          leave
    30423043      elseif upcase( leftstr( ShellGetLastCmd(), 4)) = 'DIR ' then
    30433044         rcx = 1
     3045      elseif not IsAShell() then
     3046         leave
    30443047      endif
    30453048   enddo
     
    31833186   AltCmd = strip( arg( 1))
    31843187   if IsATreeListFilename() then
    3185       'Delete' EnquoteFilespec( GetTreeListFilename())
    3186       if pos( '.TREEBACKUP', upcase( .filename)) = 1 then
    3187          Cmd = substr( .filename, 2)
    3188          Cmd
    3189       endif
    3190    elseif OnADirListLine() then
     3188      pSave_Pos( SavedPos)
     3189      Filename = GetTreeListFilename()
     3190      'Delete' EnquoteFilespec( Filename)
     3191      if not rc then
     3192         if pos( '.TREEBACKUP', upcase( .filename)) = 1 then
     3193            -- Reload current window
     3194            Cmd = substr( .filename, 2)
     3195            Cmd
     3196            'PostMe RestorePos' SavedPos
     3197         endif
     3198      endif
     3199   elseif IsADirListFilename() then
    31913200      Filename = GetDirListFilename()
    31923201      if Filename <> '' then
     
    31973206   endif
    31983207
     3208; ---------------------------------------------------------------------------
     3209defproc ParseTreeTitleFilename( Args, var Filename, var SortOption)
     3210   -- Strip appended SortOption
     3211   if leftstr( Args, 1) = '"' then
     3212      parse value Args with '"'Filename'"' SortOption
     3213   else
     3214      parse value Args with Filename SortOption
     3215   endif
     3216   Filename   = strip( Filename)
     3217   SortOption = strip( SortOption)
     3218
  • TabularUnified trunk/src/netlabs/macros/popup.e

    r4352 r4474  
    125125
    126126;compile if WANT_TREE
    127    LOAD_FILE_MENU__MSG = '~Load file'
    128    SORT_ASCENDING_MENU__MSG = '~Sort ascending'
    129    SORT_DATE_MENU__MSG = 'Sort by ~date'
    130    SORT_TIME_MENU__MSG = 'Sort by ~time'
    131    SORT_SIZE_MENU__MSG = 'Sort by ~size'
    132    SORT_EASIZE_MENU__MSG = 'Sort by ~EA size'
    133    SORT_FULLNAME_MENU__MSG = 'Sort by ~fully-qualified filename'
    134    SORT_NAME_MENU__MSG = 'Sort by ~name'
    135    SORT_EXTENSION_MENU__MSG = 'Sort by ~extension'
     127   LOAD_FILE_MENU__MSG       = '~Load file'
     128   SORT_ASCENDING_MENU__MSG  = '~Sort ascending'
     129   SORT_DATE_MENU__MSG       = 'Sort by ~date'
     130   SORT_TIME_MENU__MSG       = 'Sort by ~time'
     131   SORT_SIZE_MENU__MSG       = 'Sort by ~size'
     132   SORT_EASIZE_MENU__MSG     = 'Sort by ~EA size'
     133   SORT_FULLNAME_MENU__MSG   = 'Sort by ~fully-qualified filename'
     134   SORT_NAME_MENU__MSG       = 'Sort by ~name'
     135   SORT_EXTENSION_MENU__MSG  = 'Sort by e~xtension'
    136136   SORT_DESCENDING_MENU__MSG = 'Sort ~descending'
    137137
     
    279279   DefMenuItem( '',                                                           -- Sort by date
    280280                SORT_DATE_MENU__MSG,
    281                 'TreeSort' 'D',
     281                'TreeSort D',
    282282                SORT_XXXX_MENUP__MSG,
    283283                '')
    284284   DefMenuItem( '',                                                           -- Sort by time
    285285                SORT_TIME_MENU__MSG,
    286                 'TreeSort' 'T',
     286                'TreeSort T',
    287287                SORT_XXXX_MENUP__MSG,
    288288                '')
    289289   DefMenuItem( '',                                                           -- Sort by size
    290290                SORT_SIZE_MENU__MSG,
    291                 'TreeSort' 'S',
     291                'TreeSort S',
    292292                SORT_XXXX_MENUP__MSG,
    293293                '')
    294294   DefMenuItem( '',                                                           -- Sort by EA size
    295295                SORT_EASIZE_MENU__MSG,
    296                 'TreeSort' 'EA',
     296                'TreeSort EA',
    297297                SORT_XXXX_MENUP__MSG,
    298298                '')
    299299   DefMenuItem( '',                                                           -- Sort by fully-qualified filename
    300300                SORT_FULLNAME_MENU__MSG,
    301                 'TreeSort' 'F',
     301                'TreeSort F',
    302302                SORT_XXXX_MENUP__MSG,
    303303                '')
    304304   DefMenuItem( '',                                                           -- Sort by name
    305305                SORT_NAME_MENU__MSG,
    306                 'TreeSort' 'N',
     306                'TreeSort N',
    307307                SORT_XXXX_MENUP__MSG,
    308308                '')
     
    310310   DefMenuItem( '',                                                           -- Sort by extension
    311311                SORT_EXTENSION_MENU__MSG,
    312                 'TreeSort' 'EX',
     312                'TreeSort EX',
    313313                SORT_XXXX_MENUP__MSG,
    314314                '')
     
    321321   DefMenuItem( '',                                                           -- Sort by date
    322322                SORT_DATE_MENU__MSG,
    323                 'TreeSort' '/R' 'D',
     323                'TreeSort /R D',
    324324                SORT_XXXX_MENUP__MSG,
    325325                '')
    326326   DefMenuItem( '',                                                           -- Sort by time
    327327                SORT_TIME_MENU__MSG,
    328                 'TreeSort' '/R' 'T',
     328                'TreeSort /R T',
    329329                SORT_XXXX_MENUP__MSG,
    330330                '')
    331331   DefMenuItem( '',                                                           -- Sort by size
    332332                SORT_SIZE_MENU__MSG,
    333                 'TreeSort' '/R' 'S',
     333                'TreeSort /R S',
    334334                SORT_XXXX_MENUP__MSG,
    335335                '')
    336336   DefMenuItem( '',                                                           -- Sort by EA size
    337337                SORT_EASIZE_MENU__MSG,
    338                 'TreeSort' '/R' 'EA',
     338                'TreeSort /R EA',
    339339                SORT_XXXX_MENUP__MSG,
    340340                '')
    341341   DefMenuItem( '',                                                           -- Sort by fully-qualified filename
    342342                SORT_FULLNAME_MENU__MSG,
    343                 'TreeSort' '/R' 'F',
     343                'TreeSort /R F',
    344344                SORT_XXXX_MENUP__MSG,
    345345                '')
    346346   DefMenuItem( '',                                                           -- Sort by name
    347347                SORT_NAME_MENU__MSG,
    348                 'TreeSort' '/R' 'N',
     348                'TreeSort /R N',
    349349                SORT_XXXX_MENUP__MSG,
    350350                '')
     
    352352   DefMenuItem( '',                                                           -- Sort by extension
    353353                SORT_EXTENSION_MENU__MSG,
    354                 'TreeSort' '/R' 'EX',
     354                'TreeSort /R EX',
    355355                SORT_XXXX_MENUP__MSG,
    356356                '')
  • TabularUnified trunk/src/netlabs/macros/revert.e

    r4444 r4474  
    2020****************************************************************************/
    2121
    22 ;   Revert to saved - throw away changes and reload from disk.
     22; Revert to saved - throw away changes and reload from disk
    2323
    2424; The following command will throw away any changes made to a file since
     
    2727
    2828;    by Larry Margolis
    29 
    30 ; Changed:
    31 ;    o  Added restoring position
    32 ;    o  Changed the msg box
    33 
    34 ; Todo:
    35 ;    o  Make reload undo-able
    3629
    3730compile if not defined( SMALL)  -- If compiled separately
     
    6154      getfileid startfid
    6255      'VSyncCursor'
    63       call pSave_Pos( saved_pos)
     56      call pSave_Pos( SavedPos)
    6457
    6558      if filesinring() = 1 then
     
    8073            Cmd
    8174            'PostMe QuitSameFile'
     75            'PostMe RestorePos' SavedPos
    8276         elseif upcase( leftstr( .filename, 5)) = '.TREE' then
    8377            Cmd = substr( .filename, 2)
    8478            Cmd
    85             'PostMe QuitSameFile'
     79            -- 'PostMe QuitSameFile'  -- The Tree cmds already do this
     80            'PostMe RestorePos' SavedPos
    8681         elseif upcase( leftstr( .filename, 11)) = '.NEPMD_INFO' then
    8782            Cmd = 'NepmdInfo'
     
    116111      if Mode = 'BIN' then
    117112         Filename = .filename
    118          'o ''mc /be 'EnquoteFileSpec( Filename)' /PostMe RestorePos 'saved_pos''
     113         'o mc /be 'EnquoteFileSpec( Filename)' /PostMe RestorePos 'SavedPos''
    119114         if rc = 0 then
    120115            activatefile startfid
     
    127122         if not rc then
    128123            'QuitSameFile'
    129             'PostMe RestorePos 'saved_pos  -- postme required
     124            'PostMe RestorePos 'SavedPos  -- postme required
    130125         endif
    131126      endif
     
    139134         pActivateFile( startfid)
    140135      endif
    141       'RingSetFileNumber'  -- Why is that required here?
     136      -- This is also required when 'xcom quit' is replaced by 'quit'.
     137      -- It doesn't seem to work here automatically, so execute it here
     138      -- again:
     139      'RingSetFileNumber'
    142140   endif
    143141
  • TabularUnified trunk/src/netlabs/macros/tree.e

    r4285 r4474  
    180180   'xcom e /c .tree'
    181181   if rc & rc <> sayerror( 'New file') then
    182       sayerror ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext( rc)
     182      'SayError' ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext( rc)
    183183      return rc
    184184   endif
     
    187187   'xcom e /c .dirs'
    188188   if rc & rc <> sayerror( 'New file') then
    189       sayerror ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext( rc)
     189      'SayError' ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext( rc)
    190190      return rc
    191191   endif
     
    239239; ---------------------------------------------------------------------------
    240240defc TreeDir, Tree_Dir
    241    parse arg Filename
    242    DisplayFilename = Filename
    243    TreeTitle = '.TreeDir' DisplayFilename
    244 
     241   -- Strip appended SortOption
     242   ParseTreeTitleFilename( strip( arg( 1)), Filename, SortOption)
    245243   call Parse_Filename( Filename, .filename)
    246    Filename = StripquotesFileSpec( Filename)
    247244
    248245   if Filename = '' then
     
    264261   'xcom e /c .tree'
    265262   if rc & rc <> sayerror( 'New file') then
    266       sayerror ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext( rc)
     263      'SayError' ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext( rc)
    267264      return rc
    268265   endif
     
    273270   Attribute = 55        -- Want to see all files
    274271   rcx = TreeSearchDir( Filename, Attribute, FileCount, TotalSize, 0, treefid)
     272   TreeTitle = '.TreeDir 'arg( 1)
    275273   call TreeCommonFinish( treefid, FileCount, TotalSize, TreeTitle)
    276274
     
    338336compile if not DEBUG_TREE
    339337      if result & result <> 18 & result <> 3 then  -- unexpected error, skip remaining masks.
    340 sayerror 'result' result 'from DosFindFirst' filename
     338         'SayError result' result 'from DosFindFirst' filename
    341339         rc = result
    342340         leave
     
    460458compile if DEBUG_TREE
    461459defproc DebugMessage( msgstring)
    462    sayerror msgstring
     460   --'SayError' msgstring
     461   dprintf( msgstring)
    463462compile endif
    464463
     
    467466   revrse = ''
    468467   startmod = .modify
    469    arglist = upcase( arg( 1))
     468   SortOption = upcase( arg( 1))
    470469   getfileid thisfid
     470
     471   Filename = .filename
     472   Args = Filename
     473   TreeCmd = ''
     474   PrevSortOption = ''
     475   FileUnderCursor = ''
     476   if upcase( leftstr( Args, 5)) = '.TREE' then
     477      parse value Args with '.'TreeCmd Args
     478      -- Strip appended SortOption
     479      ParseTreeTitleFilename( Args, Filename, PrevSortOption)
     480      FileUnderCursor = GetTreeListFilename()
     481   endif
     482   Filename = strip( Filename)
     483   PrevSortOption = strip( PrevSortOption)
     484
    471485   call pSave_Mark( savemark)
    472486   mt = marktype()
     
    481495   endif
    482496   call NextCmdAltersText()
    483    do while arglist <> ''
     497   NormalizedOption = ''
     498   SortDirection    = '/F'
     499   SortRow          = ''
     500   do while SortOption <> ''
    484501      result = 0
    485       parse value arglist with thisarg arglist
    486       if     abbrev( '/REVERSE', thisarg, 2) then
     502      parse value SortOption with ThisOption SortOption
     503      if     abbrev( '/REVERSE', ThisOption, 2) then
    487504         revrse = 'R'
    488       elseif abbrev( '/FORWARD', thisarg, 2) then
     505         SortDirection = '/R'
     506      elseif abbrev( '/FORWARD', ThisOption, 2) then
    489507         revrse = ''
    490       elseif abbrev( 'DATE', thisarg, 1) then
     508      elseif abbrev( 'DATE', ThisOption, 1) then
     509         SortRow = 'D'
    491510         result = Sort( firstline, lastline, 1, 20, thisfid, revrse)
    492       elseif abbrev( 'TIME', thisarg, 1) then
     511      elseif abbrev( 'TIME', ThisOption, 1) then
     512         SortRow = 'T'
    493513         result = Sort( firstline, lastline, 13, 20, thisfid, revrse)
    494       elseif abbrev( 'SIZE', thisarg, 1) then
     514      elseif abbrev( 'SIZE', ThisOption, 1) then
     515         SortRow = 'S'
    495516         result = Sort( firstline, lastline, 21, 31, thisfid, revrse)
    496       elseif abbrev( 'EASIZE', thisarg, 2) then
     517      elseif abbrev( 'EASIZE', ThisOption, 2) then
     518         SortRow = 'EA'
    497519         result = Sort( firstline, lastline, 32, 42, thisfid, revrse)
    498       elseif abbrev( 'FILENAME', thisarg, 1) |
    499              abbrev( 'FULLNAME', thisarg, 2) then
     520      elseif abbrev( 'FILENAME', ThisOption, 1) |
     521             abbrev( 'FULLNAME', ThisOption, 2) then
     522         SortRow = 'F'
    500523         result = Sort( firstline, lastline, 52, 260, thisfid, 'CI'revrse)
    501       elseif abbrev( 'NAME', thisarg, 1) |
    502              abbrev( 'EXTENSION', thisarg, 2) then
    503          ext = leftstr( thisarg, 1) = 'E'
     524      elseif abbrev( 'NAME', ThisOption, 1) |
     525             abbrev( 'EXTENSION', ThisOption, 2) then
     526         ext = leftstr( ThisOption, 1) = 'E'
     527         if ext then
     528            SortRow = 'EX'
     529         else
     530            SortRow = 'N'
     531         endif
    504532         do l = firstline to lastline
    505533            line = textline( l)
     
    519547         enddo
    520548      else
    521          sayerror sayerrortext( -263) '-' thisarg
     549         'SayError' sayerrortext( -263) '-' ThisOption
    522550      endif
    523551      if result then
    524          sayerror 'Sort' ERROR_NUMBER__MSG result
     552         'SayError Sort' ERROR_NUMBER__MSG result
    525553      endif
    526554   enddo
     555   if TreeCmd <> '' then
     556      DisplayName = strip( '.'TreeCmd Filename SortDirection SortRow)
     557   else
     558      DisplayName = strip( Filename SortDirection SortRow)
     559   endif
    527560   .modify = startmod
    528561   call pRestore_Mark( savemark)
    529 
     562   .filename = DisplayName
     563   'RefreshInfoLine FILE'
     564   if FileUnderCursor <> '' then
     565      -- Place cursor on the same entry as before
     566      delim = \1
     567      SearchOptions = 't+fa'
     568      SearchArgs = delim''FileUnderCursor''delim''SearchOptions
     569      display -11 -- Enable only errors to the messageline
     570      'xcom l 'SearchArgs
     571      lrc = rc
     572      display 11
     573      if not lrc then
     574         -- Center line
     575         FoundLine = .line
     576         .cursory = .windowheight % 2
     577         FoundLine
     578      endif
     579   endif
     580
Note: See TracChangeset for help on using the changeset viewer.