<?xml version="1.0"?>

<matrices xml:lang="en" updated="2001-03-19">

<metainfo>
  <title>AbiWord <abbr title="User Interface">UI</abbr> details</title>
  <shortdesc>This matrix describes the current extent of platform-specific support for various <abbr title="User Interface">UI</abbr> features in AbiWord.</shortdesc>
  
  <longdesc>
    <para>Unlike most applications, AbiWord was designed from the beginning to be part of a cross-platform suite consisting of multiple applications. Thus, each port of AbiWord combines together a mix of the following four kinds of code:</para>
    <list>
      <item>Cross-application (<abbr title="cross-application">XAP</abbr>) <abbr title="versus">vs.</abbr> application-specific (<abbr title="application-specific">AP</abbr>)</item>
      <item>Cross-platform (<abbr title="cross-platform">XP</abbr>) <abbr>vs.</abbr> platform-specific (Windows, Unix, <abbr title="et cetera">etc.</abbr>)</item>
    </list>
    <para>Any application-specific <abbr>UI</abbr> features which are entirely handled in <abbr>XP</abbr> code (such as keybindings, menu and toolbar layouts, string translations, <abbr>etc.</abbr>) are outside the scope of this document, and thus not listed here.</para>
  </longdesc>

</metainfo>

<header>
  <row>
    <cell value=" "/>
    <cell value="XP">Cross-platform.</cell>
    <cell value="Win">Windows version.</cell>
    <cell value="Unix">Unix version.</cell>
    <cell value="Gnome">Gnome version.</cell>
    <cell value="BeOS">Be<abbr title="Operating System">OS</abbr> version.</cell>
    <cell value="QNX">QNX version.</cell>
    <cell value="Mac">Macintosh version.</cell>
  </row>
</header>

<section>

    <info>
      <heading>Framework</heading>
      <description>Framework code needs to be ported once for each <abbr title="Graphical User Interface">GUI</abbr>, and can then be used in multiple applications.</description>
    </info>

    <matrix>

      <info>
         <heading>Utilities (abi/src/af/util)</heading>
      </info>
      
      <body>

        <row>
          <cell>Assert</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>Debug</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>String</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>Timer</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="untested"/>
        </row>

      </body>

    </matrix>

    <matrix>

      <info>
         <heading><abbr title="Two-dimensional">2D</abbr> Graphics (abi/src/af/gr)</heading>
      </info>
      
      <body>

        <row>
          <cell>Graphics</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="partially"/>
        </row>

        <row>
          <cell>Fonts</cell>
          <cell value="partially"><bug id="1212"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="partially"/>
        </row>

        <row>
          <cell>Images</cell>
          <cell value="partially"><bug id="1213"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

      </body>

    </matrix>

    <matrix>

      <info>
         <heading>Events (abi/src/af/ev)</heading>
      </info>
      
      <body>

        <row>
          <cell>Menu</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="partially"><bug id="483"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>Mouse</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Keyboard</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Toolbar</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="partially"/>
        </row>

      </body>

    </matrix>

    <matrix>

      <info>
         <heading>Application-neutral framework (abi/src/af/xap)</heading>
      </info>
      
      <body>

        <row>
          <cell>App</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>Frame</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="partially"/>
        </row>

        <row>
          <cell>Clipboard</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>DialogFactory</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell><abbr title="Toolbar">TB</abbr>ControlFactory</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

      </body>

    </matrix>

  </section>

  <section>

    <info>
      <heading>Application</heading>
      <description>The other half of getting the framework ported is to turn on the application-specific logic for AbiWord.</description>
    </info>

    <matrix>

      <info>
        <heading>Main (abi/src/wp/main)</heading>
      </info>

      <body>

        <row>
          <cell>Main</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="partially"><bug id="1214"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

      </body>

    </matrix>

    <matrix>

      <info>
        <heading>Application-specific logic (abi/src/wp/ap)</heading>
      </info>

      <body>

        <row>
          <cell>App</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>Frame</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>Clipboard</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>DialogFactory</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell><abbr title="Toolbar">TB</abbr>ControlFactory</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>LeftRuler</cell>
          <cell value="partially"><bug id="1215"/></cell>
          <cell value="yes"/>
          <cell value="partially"><bug id="694"/></cell>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>TopRuler</cell>
          <cell value="partially"><bug id="879"/></cell>
          <cell value="yes"/>
          <cell value="partially"><bug id="384"/>, <bug id="694"/></cell>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Prefs</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>StatusBar</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="partially"/>
        </row>

        <row>
          <cell><abbr title="Toolbar">TB</abbr>_FontCombo </cell>
          <cell value="partially"><bug id="1215"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell><abbr title="Toolbar">TB</abbr>_SizeCombo </cell>
          <cell value="partially"><bug id="1215"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell><abbr title="Toolbar">TB</abbr>_StyleCombo </cell>
          <cell value="partially"><bug id="1215"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell><abbr title="Toolbar">TB</abbr>_ZoomCombo </cell>
          <cell value="partially"><bug id="1215"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

      </body>

    </matrix>

  </section>

  <section>

    <info>
      <heading>Dialogs (<abbr title="Cross-application">XAP</abbr>)</heading>
      <description>Some dialogs can be used across multiple applications.</description>
    </info>

    <matrix>

      <body>

        <row>
          <cell>MessageBox</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
        </row>

        <row>
          <cell>File / Open, SaveAs</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="partially"/>
        </row>

        <row>
          <cell>File / Print</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="partially"><bug id="1323"/></cell>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>View / Zoom</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Font</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Window / More</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="na"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Help / About</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

      </body>

    </matrix>

  </section>

  <section>

    <info>
      <heading>Dialogs (<abbr title="Application-specific">AP</abbr>)</heading>
      <description>Most of the AbiWord dialogs are application-specific.</description>
    </info>

    <matrix>

      <body>

        <row>
          <cell>File / PageSetup</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Edit / Find</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Edit / Replace</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Edit / Goto</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Insert / Break</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Insert / PageNumber</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Insert / DateTime</cell>
          <cell value="partially"><bug id="1219"/></cell>
          <cell value="yes"/> 
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Insert / Field</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Insert / Symbol</cell>
          <cell value="yes"/>
          <cell value="partially"><bug id="1237"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Paragraph</cell>
          <cell value="partially"><bug id="1220"/>, <bug id="594"/>, <bug id="607"/>, <bug id="624"/></cell>
          <cell value="yes"/>
          <cell value="partially"><bug id="911"/></cell>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Bullets</cell>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Columns</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Tabs</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Change Case</cell>
          <cell value="buggy"><bug id="1231"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Format / Style</cell>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="no"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Tools / Spelling / Spelling</cell>
          <cell value="partially"><bug id="1217"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Tools / Language / Language</cell>
          <cell value="yes"/>
          <cell value="buggy"><bug id="1232"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

        <row>
          <cell>Tools / WordCount</cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>


        <row>
          <cell>Tools / Preferences</cell>
          <cell value="buggy"><bug id="1218"/></cell>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="yes"/>
          <cell value="unknown"/>
          <cell value="yes"/>
          <cell value="no"/>
        </row>

      </body>

    </matrix>

  </section>

</matrices>
