faqts : Computers : Programming : Languages : Tse : Block

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

Entry

TSE: Block: Convert: Line: Column: How to toggle between a column block and a line block?

Oct 28th, 2006 08:46
Knud van Eeden,


----------------------------------------------------------------------
--- Knud van Eeden --- 28 October 2020 - 05:45 pm --------------------
TSE: Block: Convert: Line: Column: How to toggle between a column 
block and a line block?
===
If the current mark type is a column block, then
convert it to a line block.
otherwise convert it to a column type marked block
===
--- cut here: begin --------------------------------------------------
 INTEGER PROC FNBlockGetLineNumberFirstI()
  RETURN( Query( BlockBegLine ) )
 END
 INTEGER PROC FNBlockGetLineNumberLastI()
  RETURN( Query( BlockEndLine ) )
 END
 INTEGER PROC FNBlockGetLineLengthMaxI()
  INTEGER lineLengthMaxI = 0
  INTEGER lineLengthI = 0
  INTEGER downB = TRUE
  PushPosition()
  GotoBlockBegin()
  WHILE ( IsCursorInBlock() ) AND ( downB )
   lineLengthI = CurrLineLen()
   IF ( lineLengthMaxI < lineLengthI )
    lineLengthMaxI = lineLengthI
   ENDIF
   downB = Down()
  ENDWHILE
  PopPosition()
  RETURN( lineLengthMaxI )
 END
 INTEGER PROC FNBlockConvertLineToColumnB( INTEGER xMinI )
  IF NOT IsBlockMarked()
   Warn( "Please mark a block first" )
   RETURN( FALSE )
  ENDIF
  MarkColumn( FNBlockGetLineNumberFirstI(), xMinI, 
FNBlockGetLineNumberLastI(), FNBlockGetLineLengthMaxI() )
  RETURN( TRUE )
 END
 INTEGER PROC FNBlockConvertColumnToLineB()
  IF NOT IsBlockMarked()
   Warn( "Please mark a block first" )
   RETURN( FALSE )
  ENDIF
  RETURN( MarkLine( FNBlockGetLineNumberFirstI(), 
FNBlockGetLineNumberLastI() ) <> 0 )
 END
 INTEGER PROC FNBlockSetToggleColumnLineB()
  INTEGER toggleB = FALSE
  INTEGER typeB = IsBlockMarked()
  IF ( typeB == _COLUMN_ )
   toggleB = FNBlockConvertColumnToLineB()
  ELSE
   toggleB = FNBlockConvertLineToColumnB( 0 )
  ENDIF
  RETURN( toggleB )
 END
 PROC Main()
  Message( FNBlockSetToggleColumnLineB() )
 END
 <F12> Main()
--- cut here: end ----------------------------------------------------
===
Tested successfully on
Microsoft Windows XP Professional (service pack 2),
running
TSE 4.x
===
Internet: see also:
---
TSE: Block: Link: Can you give an overview of links?
http://www.faqts.com/knowledge_base/view.phtml/aid/42860/fid/898
----------------------------------------------------------------------