« Inauguration du Portail Régional des chambres des métiers du Nord et du Pas-de-Calais | Main | OOoCon2006 : Votes are opened »

Feb 06, 2006

ActiveCell : ViewData string meaning

In my previous blog concerning ActiveCell, i proposed a hack to retreive the current column and row, based on some magic string found in CurrentController.ViewData

We all agree that the best will be to extend the existing API. Waiting for it, here is the explanation.
Please note that in most cases, the currentSelection object should be sufficient.

This string is built in <OOoSources>/sc/source/ui/view/viewdata.cxx ScViewData::WriteUserData (thanks to noelp for pointing it). I analyzed it to see what information were stored there

so here is the magic,

but, first, as promised on the dev@api list, i put this statement
"this hack is based on an internal representation of the information not guaranted to be kept over versions"

On a new Calc file
print ThisComponent.CurrentController.ViewData
100/60/1;0;tw:270;17/34/0/0/0/0/2/0/0/0/0;;

here is the meaning identified for each portion

  • 100/60/1;0
  • zoom ratio (%) in normal view
  • zoom ratio (%) in page break view
  • current view mode (0|1 = normal|page break)
  • Active sheet index (0 based)
  • tw:270
  • tw : Nammed constant TAG_TABBARWIDTH
  • 270 : Width of the zone diplaying the sheets tabs (unit : pixels ?)
  • 17/34/0/0/0/0/2/0/0/0/0 - For each calc sheet, semi-colon separated.
  • active col (0 based)
  • active row (0 based)
  • split/freeze vertical (0|1|2) - 1 = split ; 2 = freeze
  • split/freeze horizontal (0|1|2) - 1 = split ; 2 = freeze
  • vertical position = in cell if fixed, in screen unit if frozen
  • horizontal position = in cell if fixed, in screen unit if frozen
  • active zone in the splitted|frozen sheet (0..3 from let to right, top to bottom)
  • X1 = 0 (always ?) - the col of the upper left cell of zone 0 (upper left)
  • X2 the col of the upper left cell of zone 3 (bottom right)
  • Y1 = 0 (always ?) - the row of the upper left cell of zone 0 (upper left)
  • Y2 the row of the upper left cell of zone 3 (bottom right)
                            X2 and Y2 can also be seen as lengths in cell number.
The information are available only if the sheet has been activated/view at least once since the file creation. In our cases, the default calc  document is created with three sheets but  only the first (default) has been accessed

These informations can also be found in the settings.xml file inside the calc file

      <config:config-item-map-entry config:name="Feuille1">
       <config:config-item config:name="CursorPositionX" config:type="int">2</config:config-item>
       <config:config-item config:name="CursorPositionY" config:type="int">14</config:config-item>
       <config:config-item config:name="HorizontalSplitMode" config:type="short">0</config:config-item>
       <config:config-item config:name="VerticalSplitMode" config:type="short">0</config:config-item>
       <config:config-item config:name="HorizontalSplitPosition" config:type="int">0</config:config-item>
       <config:config-item config:name="VerticalSplitPosition" config:type="int">0</config:config-item>
       <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
       <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
       <config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
       <config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
       <config:config-item config:name="PositionBottom" config:type="int">0</config:config-item>
      </config:config-item-map-entry>

(Post originally written by Laurent Godard on the old Nuxeo blogs.)

Comments

About Us

We're the friendly employees of Nuxeo, a leading open source software vendor, which develops a complete Enterprise Content Management (ECM) software platform to help companies better produce, process, publish, archive, expose and find their information from digital assets to transactional documents.

» Follow us @nuxeo (Twitter)

» Connect on LinkedIn

» Visit Nuxeo.com

 

Customize & Configure
Nuxeo • Studio

Nuxeo • DM
Online Trial

Nuxeo • DM
Download

Nuxeo • DAM
Download

Nuxeo Connect support