Various QNX Patches.

From: phearbear (phearbear@home.se)
Date: Mon Mar 25 2002 - 23:14:53 EST

  • Next message: Jonathan Blandford: "Re: [AbiCalc] Spreadsheet proposal"

    This patch contains a few dialogs, updated and moved clipboard code into
    the xap where it should be, added cursor support, and some more various
    fixes.

    /Johan Björk

    Index: wp/ap/qnx/ap_QNXApp.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXApp.cpp,v
    retrieving revision 1.29
    diff -u -r1.29 ap_QNXApp.cpp
    --- wp/ap/qnx/ap_QNXApp.cpp 20 Mar 2002 17:45:04 -0000 1.29
    +++ wp/ap/qnx/ap_QNXApp.cpp 26 Mar 2002 03:12:22 -0000
    @@ -339,118 +339,56 @@
     
     //////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////
    -#define CLIP_FORMAT_COUNT 2
    -#define Ph_CLIPBOARD_TYPE_RTF "RTF"
    +#define Ph_CLIPBOARD_RTF "RTF"
    +#define Ph_CLIPBOARD_TEXT "TEXT"
     
     void AP_QNXApp::copyToClipboard(PD_DocumentRange * pDocRange)
     {
    - PhClipHeader clip[CLIP_FORMAT_COUNT]; //RTF and 8 bit text
             UT_ByteBuf rtfbuf, txtbuf;
    - int format_count;
     
    - // copy the given subset of the given document to the
    - // system clipboard in a variety of formats.
    - //
    - m_pClipboard->clearClipboard();
    -
    - // also put RTF on the clipboard
    - format_count = 0;
    -
             IE_Exp_RTF * pExpRtf = new IE_Exp_RTF(pDocRange->m_pDoc);
             if (pExpRtf)
             {
    - UT_Error status;
    - status = pExpRtf->copyToBuffer(pDocRange,&rtfbuf);
    + pExpRtf->copyToBuffer(pDocRange,&rtfbuf);
                     UT_Byte b = 0;
                     rtfbuf.append(&b,1); // null terminate string
                     UT_DEBUGMSG(("CopyToClipboard: copying %d bytes in RTF format.",rtfbuf.getLength()));
    -#if defined(USE_ABI_CLIPBOARD)
    - m_pClipboard->addData(AP_CLIPBOARD_RTF,(UT_Byte *)rtfbuf.getPointer(0),rtfbuf.getLength());
    -#else
    - strcpy(clip[format_count].type, Ph_CLIPBOARD_TYPE_RTF);
    - clip[format_count].length = rtfbuf.getLength();
    - clip[format_count].data = (void *)rtfbuf.getPointer(0);
    - format_count++;
    -#endif
                     DELETEP(pExpRtf);
             }
    -
             // put raw 8bit text on the clipboard
    -
             IE_Exp_Text * pExpText = new IE_Exp_Text(pDocRange->m_pDoc);
             if (pExpText)
             {
    - UT_Error status;
    - status = pExpText->copyToBuffer(pDocRange,&txtbuf);
    + pExpText->copyToBuffer(pDocRange,&txtbuf);
                     UT_Byte b = 0;
                     txtbuf.append(&b,1); // null terminate string
                     UT_DEBUGMSG(("CopyToClipboard: copying %d bytes in TEXTPLAIN format.\n",txtbuf.getLength()));
    -#if defined(USE_ABI_CLIPBOARD)
    - m_pClipboard->addData(AP_CLIPBOARD_TEXTPLAIN_8BIT,(UT_Byte *)txtbuf.getPointer(0),txtbuf.getLength());
    -#else
    - strcpy(clip[format_count].type, Ph_CLIPBOARD_TYPE_TEXT);
    - clip[format_count].length = txtbuf.getLength();
    - clip[format_count].data = (void *)txtbuf.getPointer(0);
    - format_count++;
    -#endif
                     DELETEP(pExpText);
             }
    + if(rtfbuf.getLength() > 0)
    + m_pClipboard->addData(Ph_CLIPBOARD_RTF,(UT_Byte *)rtfbuf.getPointer(0),rtfbuf.getLength());
    + if(txtbuf.getLength() > 0)
    + m_pClipboard->addData(Ph_CLIPBOARD_TEXT,(UT_Byte *)txtbuf.getPointer(0),txtbuf.getLength());
     
    -#if !defined(USE_ABI_CLIPBOARD)
    - PhClipboardCopy(PhInputGroup(NULL), format_count, clip);
    -#endif
    + return;
     }
     
     void AP_QNXApp::pasteFromClipboard(PD_DocumentRange * pDocRange, bool bUseClipboard,
                                                                             bool bHonorFormatting)
     {
    - PhClipHeader *clip;
    - void *handle;
    -
             // paste from the system clipboard using the best-for-us format
             // that is present.
    + unsigned char * pData = NULL;
    + UT_uint32 iLen=0;
     
    -
    - handle = PhClipboardPasteStart(PhInputGroup(NULL));
    -
    - if (handle && (clip = PhClipboardPasteType(handle, Ph_CLIPBOARD_TYPE_RTF)) && bHonorFormatting) {
    - unsigned char * pData = (unsigned char *)clip->data;
    - UT_uint32 iLen = clip->length;
    + if (bHonorFormatting && m_pClipboard->getClipboardData(AP_CLIPBOARD_RTF,(void**)&pData,&iLen)) {
                     iLen = MyMin(iLen,strlen((const char *) pData));
                     UT_DEBUGMSG(("PasteFromClipboard: pasting %d bytes in RTF format.\n",iLen));
                     IE_Imp_RTF * pImpRTF = new IE_Imp_RTF(pDocRange->m_pDoc);
                     pImpRTF->pasteFromBuffer(pDocRange,pData,iLen);
                     DELETEP(pImpRTF);
             }
    - else if (handle && (clip = PhClipboardPasteType(handle, Ph_CLIPBOARD_TYPE_TEXT))) {
    - unsigned char * pData = (unsigned char *)clip->data;
    - UT_uint32 iLen = clip->length;
    - iLen = MyMin(iLen,strlen((const char *) pData));
    - UT_DEBUGMSG(("PasteFromClipboard: pasting %d bytes in TEXTPLAIN format.\n",iLen));
    - IE_Imp_Text * pImpText = new IE_Imp_Text(pDocRange->m_pDoc);
    - pImpText->pasteFromBuffer(pDocRange,pData,iLen);
    - DELETEP(pImpText);
    - }
    - else if (m_pClipboard->hasFormat(AP_CLIPBOARD_RTF))
    - {
    - unsigned char * pData = NULL;
    - UT_uint32 iLen = 0;
    - bool bResult;
    - bResult = m_pClipboard->getClipboardData(AP_CLIPBOARD_RTF,(void**)&pData,&iLen);
    - UT_ASSERT(bResult);
    - iLen = MyMin(iLen,strlen((const char *) pData));
    - UT_DEBUGMSG(("PasteFromClipboard: pasting %d bytes in RTF format.\n",iLen));
    - IE_Imp_RTF * pImpRTF = new IE_Imp_RTF(pDocRange->m_pDoc);
    - pImpRTF->pasteFromBuffer(pDocRange,pData,iLen);
    - DELETEP(pImpRTF);
    - }
    - else if (m_pClipboard->hasFormat(AP_CLIPBOARD_TEXTPLAIN_8BIT))
    - {
    - unsigned char * pData = NULL;
    - UT_uint32 iLen = 0;
    - bool bResult;
    - bResult = m_pClipboard->getClipboardData(AP_CLIPBOARD_TEXTPLAIN_8BIT,(void**)&pData,&iLen);
    - UT_ASSERT(bResult);
    + else if (m_pClipboard->getClipboardData(AP_CLIPBOARD_TEXTPLAIN_8BIT,(void**)&pData,&iLen)) {
                     iLen = MyMin(iLen,strlen((const char *) pData));
                     UT_DEBUGMSG(("PasteFromClipboard: pasting %d bytes in TEXTPLAIN format.\n",iLen));
                     IE_Imp_Text * pImpText = new IE_Imp_Text(pDocRange->m_pDoc);
    @@ -459,36 +397,15 @@
             }
             else {
                     // TODO figure out what to do with an image....
    - UT_DEBUGMSG(("PasteFromClipboard: TODO support this format..."));
    + UT_DEBUGMSG(("PasteFromClipboard: No TEXT or RTF data in clipboard. TODO: Add Image support"));
             }
             
    - if (handle) {
    - PhClipboardPasteFinish(handle);
    - }
    -
             return;
     }
     
     bool AP_QNXApp::canPasteFromClipboard(void)
     {
    - void *handle;
    -
    - handle = PhClipboardPasteStart(PhInputGroup(NULL));
    - if (handle) {
    - if (PhClipboardPasteType(handle, Ph_CLIPBOARD_TYPE_RTF) ||
    - PhClipboardPasteType(handle, Ph_CLIPBOARD_TYPE_TEXT)) {
    - PhClipboardPasteFinish(handle);
    - return true;
    - }
    - PhClipboardPasteFinish(handle);
    - }
    -
    - if (m_pClipboard->hasFormat(AP_CLIPBOARD_RTF))
    - return true;
    - if (m_pClipboard->hasFormat(AP_CLIPBOARD_TEXTPLAIN_8BIT))
    - return true;
    -
    - return false;
    + return true;
     }
     
     /*****************************************************************/
    Index: wp/ap/qnx/ap_QNXDialog_All.h
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_All.h,v
    retrieving revision 1.23
    diff -u -r1.23 ap_QNXDialog_All.h
    --- wp/ap/qnx/ap_QNXDialog_All.h 24 Oct 2001 22:13:10 -0000 1.23
    +++ wp/ap/qnx/ap_QNXDialog_All.h 26 Mar 2002 03:12:22 -0000
    @@ -43,7 +43,11 @@
     # include "xap_QNXDlg_Zoom.h"
     # include "xap_QNXDlg_Insert_Symbol.h"
     # include "xap_QNXDlg_Language.h"
    -# include "xap_QNXDlg_PluginManager.h"
    +# include "xap_QNXDlg_PluginManager.h"
    +# include "xap_QNXDlg_Password.h"
    +# include "xap_QNXDlg_ClipArt.h"
    +# include "xap_QNXDlg_Encoding.h"
    +# include "xap_QNXDlg_Image.h"
     
     # include "ap_QNXDialog_Replace.h"
     # include "ap_QNXDialog_Break.h"
    @@ -66,7 +70,6 @@
     # include "ap_QNXDialog_HdrFtr.h"
     # include "ap_QNXDialog_InsertBookmark.h"
     # include "ap_QNXDialog_InsertHyperlink.h"
    -
             // ... add new dialogs here ...
     
     #else
    @@ -83,8 +86,12 @@
             DeclareDialog(XAP_DIALOG_ID_INSERT_SYMBOL, XAP_QNXDialog_Insert_Symbol)
             DeclareDialog(XAP_DIALOG_ID_INSERT_PICTURE, XAP_QNXDialog_FileOpenSaveAs)
             DeclareDialog(XAP_DIALOG_ID_PLUGIN_MANAGER, XAP_QNXDialog_PluginManager)
    -
             DeclareDialog(XAP_DIALOG_ID_ABOUT, XAP_QNXDialog_About)
    + DeclareDialog(XAP_DIALOG_ID_PASSWORD, XAP_QNXDialog_Password)
    + DeclareDialog(XAP_DIALOG_ID_CLIPART,XAP_QNXDialog_ClipArt)
    + DeclareDialog(XAP_DIALOG_ID_ENCODING,XAP_QNXDialog_Encoding)
    + DeclareDialog(XAP_DIALOG_ID_IMAGE,XAP_QNXDialog_Image)
    +
     
             DeclareDialog(AP_DIALOG_ID_REPLACE, AP_QNXDialog_Replace)
             DeclareDialog(AP_DIALOG_ID_FIND, AP_QNXDialog_Replace)
    Index: wp/ap/qnx/ap_QNXDialog_HdrFtr.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_HdrFtr.cpp,v
    retrieving revision 1.2
    diff -u -r1.2 ap_QNXDialog_HdrFtr.cpp
    --- wp/ap/qnx/ap_QNXDialog_HdrFtr.cpp 21 Mar 2002 11:41:29 -0000 1.2
    +++ wp/ap/qnx/ap_QNXDialog_HdrFtr.cpp 26 Mar 2002 03:12:22 -0000
    @@ -16,7 +16,8 @@
      * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
      * 02111-1307, USA.
      */
    -
    +#include <Ph.h>
    +#include <Pt.h>
     #include "ut_string.h"
     #include "ut_assert.h"
     #include "ut_debugmsg.h"
    @@ -29,9 +30,80 @@
     #include "ap_Dialog_Id.h"
     #include "ap_Dialog_HdrFtr.h"
     #include "ap_QNXDialog_HdrFtr.h"
    +#include "ut_qnxHelper.h"
     
     /*****************************************************************/
     
    +int ph_event_ok( PtWidget_t *widget, AP_QNXDialog_HdrFtr * dlg,
    + PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(widget && dlg);
    +dlg->event_OK();
    +
    +}
    +
    +void AP_QNXDialog_HdrFtr::event_OK(void)
    +{
    +setAnswer(AP_Dialog_HdrFtr::a_OK);
    +done=1;
    +}
    +
    +int ph_event_cancel( PtWidget_t *widget,AP_QNXDialog_HdrFtr *dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(widget && dlg);
    +dlg->event_Cancel();
    +}
    +
    +void AP_QNXDialog_HdrFtr::event_Cancel(void)
    +{
    +
    +setAnswer(AP_Dialog_HdrFtr::a_CANCEL);
    +done=1;
    +}
    +
    +int ph_event_close( PtWidget_t *widget, AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(widget && dlg);
    +dlg->done=1;
    +}
    +
    +int ph_activate_restart( PtWidget_t *widget, AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(widget && dlg);
    +dlg->RestartChanged();
    +}
    +
    +int ph_HdrFirst( PtWidget_t *widget,AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(dlg);
    +dlg->CheckChanged(AP_Dialog_HdrFtr::HdrFirst);
    +}
    +int ph_HdrLast( PtWidget_t *widget,AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(dlg);
    +dlg->CheckChanged(AP_Dialog_HdrFtr::HdrLast);
    +}
    +int ph_HdrEven( PtWidget_t *widget,AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(dlg);
    +dlg->CheckChanged(AP_Dialog_HdrFtr::HdrEven);
    +}
    +int ph_FtrFirst( PtWidget_t *widget,AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(dlg);
    +dlg->CheckChanged(AP_Dialog_HdrFtr::FtrFirst);
    +}
    +int ph_FtrLast( PtWidget_t *widget,AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(dlg);
    +dlg->CheckChanged(AP_Dialog_HdrFtr::FtrLast);
    +}
    +int ph_FtrEven( PtWidget_t *widget,AP_QNXDialog_HdrFtr * dlg, PtCallbackInfo_t *info)
    +{
    +UT_ASSERT(dlg);
    +dlg->CheckChanged(AP_Dialog_HdrFtr::FtrEven);
    +}
    +
     XAP_Dialog * AP_QNXDialog_HdrFtr::static_constructor(XAP_DialogFactory * pFactory,
                                                                                                              XAP_Dialog_Id id)
     {
    @@ -52,32 +124,283 @@
     void AP_QNXDialog_HdrFtr::runModal(XAP_Frame * pFrame)
     {
             UT_ASSERT(pFrame);
    -
    -/*
    - NOTE: This template can be used to create a working stub for a
    - new dialog on this platform. To do so:
    + PtWidget_t *mainWindow = _constructWindow();
    + UT_ASSERT(mainWindow);
    + connectFocus(mainWindow,pFrame);
             
    - 1. Copy this file (and its associated header file) and rename
    - them accordingly.
    + // To center the dialog, we need the frame of its parent.
    + XAP_QNXFrame * pQNXFrame = static_cast<XAP_QNXFrame *>(pFrame);
    + UT_ASSERT(pQNXFrame);
    +
    + // Get the Window of the parent frame
    + PtWidget_t * parentWindow = pQNXFrame->getTopLevelWindow();
    + UT_ASSERT(parentWindow);
    +
    + // Center our new dialog in its parent and make it a transient
    + // so it won't get lost underneath
    + // Make it modal, and stick it up top
    + UT_QNXCenterWindow(parentWindow, mainWindow);
    + UT_QNXBlockWidget(parentWindow, 1);
    +
    + // Show the top level dialog,
    + PtRealizeWidget(mainWindow);
    +
    + // Run the event loop for this window.
    + int count;
    + count = PtModalStart();
    + done=0;
    + do {
    + PtProcessEvent();
    + } while (!done);
    +
    + PtModalEnd(MODAL_END_ARG(count));
    + UT_QNXBlockWidget(parentWindow,0);
    + PtDestroyWidget(mainWindow);
    +}
     
    - 2. Do a case sensitive global replace on the words Stub and STUB
    - in both files.
    +PtWidget_t * AP_QNXDialog_HdrFtr::_constructWindow(void)
    +{
    +const XAP_StringSet *pSS = m_pApp->getStringSet();
    +PtWidget_t *mainWindow;
    +PtWidget_t *PtButton_ok;
    +PtWidget_t *PtButton_cancel;
    +PtWidget_t *toggleHeadEven;
    +PtWidget_t *toggleHeadFirst;
    +PtWidget_t *toggleHeadLast;
    +PtWidget_t *toggleFootEven;
    +PtWidget_t *toggleFootFirst;
    +PtWidget_t *toggleFootLast;
    +PtWidget_t *toggleRestartNewSection;
    +PtWidget_t *textRestartNumber;
    +PtWidget_t *UpDown;
    +PtWidget_t *Pane1;
    +PtWidget_t *RestartLabel;
    +
    + /* The window itself */
    + PhDim_t dim = { 496,355 };
    + PtArg_t args[] = {
    + Pt_ARG(Pt_ARG_DIM,&dim,0),
    + Pt_ARG(Pt_ARG_WINDOW_TITLE,pSS->getValue(AP_STRING_ID_DLG_HdrFtr_Title),0),
    + Pt_ARG(Pt_ARG_WINDOW_RENDER_FLAGS,0,ABI_MODAL_WINDOW_RENDER_FLAGS),
    + Pt_ARG(Pt_ARG_WINDOW_MANAGED_FLAGS,0,ABI_MODAL_WINDOW_MANAGE_FLAGS)
    + };
    +
    + /* Top PtPane, lower */
    + PhArea_t area1 = { { 0, 0 }, { 496, 322 } };
    + PtArg_t args1[] = {
    + Pt_ARG( Pt_ARG_AREA, &area1, 0 ),
    + Pt_ARG( Pt_ARG_FLAGS, 256,256 ),
    + Pt_ARG( Pt_ARG_ANCHOR_FLAGS, 1440,8191 ),
    + };
    +/* 'Header' PtPane */
    + PhArea_t area2 = { { 3, 23 }, { 486, 95 } };
    + PtArg_t args2[] = {
    + Pt_ARG( Pt_ARG_AREA, &area2, 0 ),
    + Pt_ARG( Pt_ARG_FLAGS, 256,256 ),
    + Pt_ARG( Pt_ARG_BEVEL_WIDTH, 1, 0 ),
    + };
    + /* PtToggle , diff head even page */
    + PhArea_t area3 = { { 5, 5 }, { 466, 24 } };
    + PtArg_t args3[] = {
    + Pt_ARG( Pt_ARG_AREA, &area3, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING, pSS->getValue(AP_STRING_ID_DLG_HdrFtr_HeaderEven), 0 ),
    + };
    + /* PtToggle, diff head first page */
    + PhArea_t area4 = { { 5, 31 }, { 469, 24 } };
    + PtArg_t args4[] = {
    + Pt_ARG( Pt_ARG_AREA, &area4, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,pSS->getValue(AP_STRING_ID_DLG_HdrFtr_HeaderFirst), 0 ),
    + };
    + /* PtToggle diff head last page */
    + PhArea_t area5 = { { 5, 58 }, { 469, 24 } };
    + PtArg_t args5[] = {
    + Pt_ARG( Pt_ARG_AREA, &area5, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING, pSS->getValue(AP_STRING_ID_DLG_HdrFtr_HeaderLast) , 0 ),
    + };
    + /* Head label */
    + PhArea_t area6 = { { 5, 0 }, { 206, 21 } };
    + PtArg_t args6[] = {
    + Pt_ARG( Pt_ARG_AREA, &area6, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,pSS->getValue(AP_STRING_ID_DLG_HdrFtr_HeaderFrame) , 0 ),
    + };
    + /* Footer label */
    + PhArea_t area7 = { { 5, 133 }, { 308, 21 } };
    + PtArg_t args7[] = {
    + Pt_ARG( Pt_ARG_AREA, &area7, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,pSS->getValue(AP_STRING_ID_DLG_HdrFtr_FooterFrame) , 0 ),
    + };
    + /*PtPane Footer*/
    + PhArea_t area8 = { { 3, 159 }, { 486, 110 } };
    + PtArg_t args8[] = {
    + Pt_ARG( Pt_ARG_AREA, &area8, 0 ),
    + Pt_ARG( Pt_ARG_FLAGS, 256,256 ),
    + Pt_ARG( Pt_ARG_BEVEL_WIDTH, 1, 0 ),
    + };
    + /*PtToggle Diff foot first page */
    + PhArea_t area9 = { { 5, 31 }, { 472, 24 } };
    + PtArg_t args9[] = {
    + Pt_ARG( Pt_ARG_AREA, &area9, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING, pSS->getValue(AP_STRING_ID_DLG_HdrFtr_FooterFirst), 0 ),
    + };
    + /*PtToggle Diff foor last page */
    + PhArea_t area10 = { { 5, 58 }, { 469, 24 } };
    + PtArg_t args10[] = {
    + Pt_ARG( Pt_ARG_AREA, &area10, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING, pSS->getValue(AP_STRING_ID_DLG_HdrFtr_FooterLast), 0 ),
    + };
    + /*PtToggle, diff foot on even page */
    + PhArea_t area11 = { { 5, 5 }, { 472, 24 } };
    + PtArg_t args11[] = {
    + Pt_ARG( Pt_ARG_AREA, &area11, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING, pSS->getValue(AP_STRING_ID_DLG_HdrFtr_FooterEven), 0 ),
    + };
    + /* PtToggle, restart page number on new section */
    + PhArea_t area12 = { { 10, 282 }, { 268, 24 } };
    + PtArg_t args12[] = {
    + Pt_ARG( Pt_ARG_AREA, &area12, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,pSS->getValue(AP_STRING_ID_DLG_HdrFtr_RestartCheck), 0 ),
    + };
    + /* PtLabel restart numbering at.. */
    + PhArea_t area13 = { { 288, 285 }, { 139, 21 } };
    + PtArg_t args13[] = {
    + Pt_ARG( Pt_ARG_AREA, &area13, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,pSS->getValue(AP_STRING_ID_DLG_HdrFtr_RestartNumbers) , 0 ),
    + };
    + /*PtText, where to restart numbering. */
    + PhArea_t area14 = { { 432, 280 }, { 37, 27 } };
    + PtArg_t args14[] = {
    + Pt_ARG( Pt_ARG_AREA, &area14, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,"0",0),
    + Pt_ARG( Pt_ARG_EDIT_MASK, "####", 0 ),
    + };
    + /*PtUpDown */
    + PhArea_t area15 = { { 468, 280 }, { 18, 27 } };
    + PtArg_t args15[] = {
    + Pt_ARG( Pt_ARG_AREA, &area15, 0 ),
    + };
    + /*PtPane for OK buttons. */
    + PhArea_t area16 = { { 0, 321 }, { 496, 33 } };
    + PtArg_t args16[] = {
    + Pt_ARG( Pt_ARG_AREA, &area16, 0 ),
    + Pt_ARG( Pt_ARG_FLAGS, 258,1334445470 ),
    + Pt_ARG( Pt_ARG_FILL_COLOR, 0xc0c0c0, 0 ),
    + Pt_ARG( Pt_ARG_BASIC_FLAGS, 67056,4194303 ),
    + };
    + /* PtButton Cancel */
    + PhArea_t area17 = { { 320, 2 }, { 82, 27 } };
    + PtArg_t args17[] = {
    + Pt_ARG( Pt_ARG_AREA, &area17, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING,pSS->getValue(XAP_STRING_ID_DLG_Cancel) , 0 ),
    + Pt_ARG( Pt_ARG_ANCHOR_FLAGS, 48,8191 ),
    + };
    + /* PtButton OK*/
    + PhArea_t area18 = { { 408, 2 }, { 82, 27 } };
    + PtArg_t args18[] = {
    + Pt_ARG( Pt_ARG_AREA, &area18, 0 ),
    + Pt_ARG( Pt_ARG_TEXT_STRING, pSS->getValue(XAP_STRING_ID_DLG_OK), 0 ),
    + };
    +
    + mainWindow=PtCreateWidget( PtWindow,NULL,sizeof(args) / sizeof(PtArg_t),args);
    + Pane1=PtCreateWidget( PtPane, NULL, sizeof(args1) / sizeof(PtArg_t), args1 );
    + PtCreateWidget( PtPane, NULL, sizeof(args2) / sizeof(PtArg_t), args2 );
    + toggleHeadEven=PtCreateWidget( PtToggleButton, NULL, sizeof(args3) / sizeof(PtArg_t), args3 );
    + toggleHeadFirst=PtCreateWidget( PtToggleButton, NULL, sizeof(args4) / sizeof(PtArg_t), args4 );
    + toggleHeadLast=PtCreateWidget( PtToggleButton, NULL, sizeof(args5) / sizeof(PtArg_t), args5 );
    + PtCreateWidget( PtLabel, Pane1, sizeof(args6) / sizeof(PtArg_t), args6 );
    + PtCreateWidget( PtLabel,Pane1, sizeof(args7) / sizeof(PtArg_t), args7 );
    + PtCreateWidget( PtPane, Pane1, sizeof(args8) / sizeof(PtArg_t), args8 );
    + toggleFootFirst=PtCreateWidget( PtToggleButton, NULL, sizeof(args9) / sizeof(PtArg_t), args9 );
    + toggleFootLast=PtCreateWidget( PtToggleButton, NULL, sizeof(args10) / sizeof(PtArg_t), args10 );
    + toggleFootEven=PtCreateWidget( PtToggleButton, NULL, sizeof(args11) / sizeof(PtArg_t), args11 );
    + toggleRestartNewSection=PtCreateWidget( PtToggleButton, Pane1, sizeof(args12) / sizeof(PtArg_t), args12 );
    + RestartLabel=PtCreateWidget( PtLabel, Pane1, sizeof(args13) / sizeof(PtArg_t), args13 );
    + textRestartNumber=PtCreateWidget( PtText, Pane1, sizeof(args14) / sizeof(PtArg_t), args14 );
    + UpDown=PtCreateWidget( PtUpDown, Pane1, sizeof(args15) / sizeof(PtArg_t), args15 );
    + PtCreateWidget( PtPane, mainWindow, sizeof(args16) / sizeof(PtArg_t), args16 );
    + PtButton_cancel=PtCreateWidget( PtButton, NULL, sizeof(args17) / sizeof(PtArg_t), args17 );
    + PtButton_ok=PtCreateWidget( PtButton, NULL, sizeof(args18) / sizeof(PtArg_t), args18 );
     
    - 3. Add stubs for any required methods expected by the XP class.
    - If the build fails because you didn't do this step properly,
    - you've just broken the donut rule.
    -
    - 4. Replace this useless comment with specific instructions to
    - whoever's porting your dialog so they know what to do.
    - Skipping this step may not cost you any donuts, but it's
    - rude.
    -
    - This file should *only* be used for stubbing out platforms which
    - you don't know how to implement. When implementing a new dialog
    - for your platform, you're probably better off starting with code
    - from another working dialog.
    -*/
    +
    + PtAddCallback(PtButton_cancel,Pt_CB_ACTIVATE,ph_event_cancel,this);
    + PtAddCallback(PtButton_ok,Pt_CB_ACTIVATE,ph_event_ok,this);
    + PtAddCallback(mainWindow,Pt_CB_WINDOW_CLOSING,ph_event_close,this);
    + PtAddCallback(toggleRestartNewSection,Pt_CB_ACTIVATE,ph_activate_restart,this);
    + PtAddCallback(toggleHeadEven,Pt_CB_ACTIVATE,ph_HdrEven,this);
    + PtAddCallback(toggleHeadFirst,Pt_CB_ACTIVATE,ph_HdrFirst,this);
    + PtAddCallback(toggleHeadLast,Pt_CB_ACTIVATE,ph_HdrLast,this);
    + PtAddCallback(toggleFootEven,Pt_CB_ACTIVATE,ph_FtrEven,this);
    + PtAddCallback(toggleFootFirst,Pt_CB_ACTIVATE,ph_FtrFirst,this);
    + PtAddCallback(toggleFootLast,Pt_CB_ACTIVATE,ph_FtrLast,this);
    +
    +
    + m_wHdrFtr[HdrEven]= toggleHeadEven;
    + m_wHdrFtr[HdrFirst]= toggleHeadFirst;
    + m_wHdrFtr[HdrLast]= toggleHeadLast;
    + m_wHdrFtr[FtrEven]= toggleFootEven;
    + m_wHdrFtr[FtrFirst]= toggleFootFirst;
    + m_wHdrFtr[FtrLast]= toggleFootLast;
    + m_RestartLabel=RestartLabel;
    + m_RestartUpDown= UpDown;
    + m_RestartText=textRestartNumber;
    + m_RestartToggle=toggleRestartNewSection;
    + /* Set up the default state */
    +
    + if(isRestart()) {
    + PtSetResource(toggleRestartNewSection,Pt_ARG_FLAGS,Pt_TRUE,Pt_SET);
    + } else {
    + PtSetResource(m_RestartLabel, Pt_ARG_FLAGS,Pt_TRUE,Pt_GHOST|Pt_BLOCKED);
    + PtSetResource(m_RestartUpDown,Pt_ARG_FLAGS,Pt_TRUE,Pt_GHOST|Pt_BLOCKED);
    + PtSetResource(m_RestartText,Pt_ARG_FLAGS,Pt_TRUE,Pt_GHOST|Pt_BLOCKED);
    + }
    +
    + UT_sint32 j = (UT_sint32) HdrEven;
    + for(j = (UT_sint32) HdrEven ; j<= (UT_sint32) FtrLast; j++)
    + {
    + bool value = getValue( (HdrFtr_Control) j);
    + if(value)
    + {
    + PtSetResource(m_wHdrFtr[j],Pt_ARG_FLAGS,Pt_TRUE,Pt_SET);
    + }
    + else
    + {
    + PtSetResource(m_wHdrFtr[j],Pt_ARG_FLAGS,Pt_FALSE,Pt_SET);
    + }
    + }
    +return mainWindow;
    +}
     
    - UT_ASSERT(UT_NOT_IMPLEMENTED);
    +void AP_QNXDialog_HdrFtr::CheckChanged(AP_Dialog_HdrFtr::HdrFtr_Control which)
    +{
    +bool value=false;
    +long *flags;
    +
    +PtGetResource(m_wHdrFtr[which],Pt_ARG_FLAGS,&flags,0);
    +if(*flags & Pt_SET)
    + value=true;
    +setValue(which,value,true);
     }
     
    +
    +void AP_QNXDialog_HdrFtr::RestartChanged(void)
    +{
    +char *text;
    +long * flags;
    +UT_sint32 RestartValue;
    +
    +PtGetResource(m_RestartText,Pt_ARG_TEXT_STRING,&text,0);
    +PtGetResource(m_RestartToggle,Pt_ARG_FLAGS,&flags,0);
    +
    +RestartValue=atoi(text);
    +if(Pt_SET & *flags)
    + {
    + PtSetResource(m_RestartLabel, Pt_ARG_FLAGS,Pt_FALSE,Pt_GHOST|Pt_BLOCKED);
    + PtSetResource(m_RestartUpDown,Pt_ARG_FLAGS,Pt_FALSE,Pt_GHOST|Pt_BLOCKED);
    + PtSetResource(m_RestartText,Pt_ARG_FLAGS,Pt_FALSE,Pt_GHOST|Pt_BLOCKED);
    + setRestart(true,RestartValue,true);
    + }else {
    + PtSetResource(m_RestartLabel, Pt_ARG_FLAGS,Pt_TRUE,Pt_GHOST|Pt_BLOCKED);
    + PtSetResource(m_RestartUpDown,Pt_ARG_FLAGS,Pt_TRUE,Pt_GHOST|Pt_BLOCKED);
    + PtSetResource(m_RestartText,Pt_ARG_FLAGS,Pt_TRUE,Pt_GHOST|Pt_BLOCKED);
    + setRestart(false,RestartValue,true);
    + }
    +}
    Index: wp/ap/qnx/ap_QNXDialog_HdrFtr.h
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_HdrFtr.h,v
    retrieving revision 1.2
    diff -u -r1.2 ap_QNXDialog_HdrFtr.h
    --- wp/ap/qnx/ap_QNXDialog_HdrFtr.h 21 Mar 2002 11:41:31 -0000 1.2
    +++ wp/ap/qnx/ap_QNXDialog_HdrFtr.h 26 Mar 2002 03:12:22 -0000
    @@ -34,9 +34,19 @@
             virtual void runModal(XAP_Frame * pFrame);
     
             static XAP_Dialog * static_constructor(XAP_DialogFactory *, XAP_Dialog_Id id);
    -
    -protected:
    + int done;
    + void event_OK(void);
    + void event_Cancel(void);
    + void CheckChanged(HdrFtr_Control which);
    + void RestartChanged(void);
     
    +protected:
    + PtWidget_t * m_wHdrFtr[6];
    + PtWidget_t * m_RestartLabel;
    + PtWidget_t * m_RestartUpDown;
    + PtWidget_t * m_RestartText;
    + PtWidget_t * m_RestartToggle;
    + PtWidget_t * _constructWindow(void);
     };
     
     #endif /* AP_QNXDIALOG_HDRFTR_H */
    Index: wp/ap/qnx/ap_QNXDialog_PageNumbers.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_PageNumbers.cpp,v
    retrieving revision 1.7
    diff -u -r1.7 ap_QNXDialog_PageNumbers.cpp
    --- wp/ap/qnx/ap_QNXDialog_PageNumbers.cpp 12 Feb 2001 00:59:28 -0000 1.7
    +++ wp/ap/qnx/ap_QNXDialog_PageNumbers.cpp 26 Mar 2002 03:12:22 -0000
    @@ -309,7 +309,7 @@
             m_vecalign.addItem((void *)AP_Dialog_PageNumbers::id_LALIGN);
             m_vecalign.addItem((void *)AP_Dialog_PageNumbers::id_CALIGN);
             PtAddCallback(combo2, Pt_CB_SELECTION, s_alignment_changed, this);
    - UT_QNXComboSetPos(combo2, 1);
    + UT_QNXComboSetPos(combo2, 3);
     
             //Create the preview area
             //frame1 = gtk_frame_new (pSS->getValue(AP_STRING_ID_DLG_PageNumbers_Preview));
    Index: af/xap/qnx/xap_QNXDlg_PluginManager.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXDlg_PluginManager.cpp,v
    retrieving revision 1.5
    diff -u -r1.5 xap_QNXDlg_PluginManager.cpp
    --- af/xap/qnx/xap_QNXDlg_PluginManager.cpp 20 Mar 2002 17:44:32 -0000 1.5
    +++ af/xap/qnx/xap_QNXDlg_PluginManager.cpp 26 Mar 2002 03:12:23 -0000
    @@ -379,7 +379,7 @@
             const XAP_StringSet * pSS = m_pApp->getStringSet();
     
             PtArg_t args[10];
    - int n;
    + int n=0;
     
             PtSetArg(&args[n++], Pt_ARG_WINDOW_TITLE, pSS->getValue(XAP_STRING_ID_DLG_PLUGIN_MANAGER_TITLE) , 0);
             PtSetArg(&args[n++], Pt_ARG_WINDOW_RENDER_FLAGS, 0, ABI_MODAL_WINDOW_RENDER_FLAGS);
    Index: af/xap/qnx/xap_QNXDlg_PluginManager.h
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXDlg_PluginManager.h,v
    retrieving revision 1.2
    diff -u -r1.2 xap_QNXDlg_PluginManager.h
    --- af/xap/qnx/xap_QNXDlg_PluginManager.h 20 Jun 2001 11:08:06 -0000 1.2
    +++ af/xap/qnx/xap_QNXDlg_PluginManager.h 26 Mar 2002 03:12:23 -0000
    @@ -43,6 +43,12 @@
     
     protected:
             PtWidget_t * m_windowMain;
    + PtWidget_t * m_clist;
    + PtWidget_t * m_name;
    + PtWidget_t * m_author;
    + PtWidget_t * m_version;
    + PtWidget_t * m_desc;
    +
     
             void _constructWindowContents (PtWidget_t * container);
             virtual PtWidget_t * _constructWindow ();
    @@ -51,12 +57,6 @@
             void _refreshAll ();
             void _refreshTab1 ();
             void _refreshTab2 ();
    -
    - PtWidget_t * m_clist;
    - PtWidget_t * m_name;
    - PtWidget_t * m_author;
    - PtWidget_t * m_version;
    - PtWidget_t * m_desc;
     
             XAP_Frame * m_pFrame;
             int done;
    Index: af/xap/qnx/xap_QNXDlg_Encoding.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXDlg_Encoding.cpp,v
    retrieving revision 1.1
    diff -u -r1.1 xap_QNXDlg_Encoding.cpp
    --- af/xap/qnx/xap_QNXDlg_Encoding.cpp 13 Jun 2001 21:09:05 -0000 1.1
    +++ af/xap/qnx/xap_QNXDlg_Encoding.cpp 26 Mar 2002 03:12:23 -0000
    @@ -131,6 +131,7 @@
             if(mainWindow && GTK_IS_WIDGET(mainWindow))
                     gtk_widget_destroy(mainWindow);
     #else
    + UT_ASSERT(UT_NOT_IMPLEMENTED);
             _setAnswer (XAP_Dialog_Encoding::a_CANCEL);
     #endif
     }
    Index: af/xap/qnx/xap_QNXDlg_Password.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXDlg_Password.cpp,v
    retrieving revision 1.1
    diff -u -r1.1 xap_QNXDlg_Password.cpp
    --- af/xap/qnx/xap_QNXDlg_Password.cpp 17 Oct 2001 17:17:05 -0000 1.1
    +++ af/xap/qnx/xap_QNXDlg_Password.cpp 26 Mar 2002 03:12:23 -0000
    @@ -36,6 +36,18 @@
     
     /*****************************************************************/
     
    +int pass_validate( XAP_QNXDialog_Password *dlg,
    + char const *password_entered )
    +{
    +dlg->SetPassword((char*)password_entered);
    +return Pt_PWD_ACCEPT;
    +}
    +
    +void * XAP_QNXDialog_Password::SetPassword(char* pass)
    +{
    +m_pass=strdup(pass);
    +}
    +
     XAP_Dialog * XAP_QNXDialog_Password::static_constructor(XAP_DialogFactory * pFactory,
                                                                                                              XAP_Dialog_Id id)
     {
    @@ -47,40 +59,52 @@
                                                                                                XAP_Dialog_Id id)
             : XAP_Dialog_Password(pDlgFactory,id)
     {
    +m_pass=0;
     }
     
     XAP_QNXDialog_Password::~XAP_QNXDialog_Password(void)
     {
    +if(m_pass)
    + free(m_pass);
     }
     
     void XAP_QNXDialog_Password::runModal(XAP_Frame * pFrame)
    -{
    +{
             UT_ASSERT(pFrame);
    -
    -/*
    - NOTE: This template can be used to create a working stub for a
    - new dialog on this platform. To do so:
    + int pwdreturn;
    + const XAP_StringSet * pSS = m_pApp->getStringSet();
    + char **buttons=(char**)calloc(2,sizeof(char*));
    + buttons[0]= (char*) pSS->getValue(XAP_STRING_ID_DLG_Cancel);
    + buttons[1]=(char*)pSS->getValue(XAP_STRING_ID_DLG_OK);
    +
    +
    + // To center the dialog, we need the frame of its parent.
    + XAP_QNXFrame * pQNXFrame = static_cast<XAP_QNXFrame *>(pFrame);
    + UT_ASSERT(pQNXFrame);
    +
    + // Get the Window of the parent frame
    + PtWidget_t * parentWindow = pQNXFrame->getTopLevelWindow();
    + UT_ASSERT(parentWindow);
             
    - 1. Copy this file (and its associated header file) and rename
    - them accordingly.
    -
    - 2. Do a case sensitive global replace on the words Stub and STUB
    - in both files.
    -
    - 3. Add stubs for any required methods expected by the XP class.
    - If the build fails because you didn't do this step properly,
    - you've just broken the donut rule.
    -
    - 4. Replace this useless comment with specific instructions to
    - whoever's porting your dialog so they know what to do.
    - Skipping this step may not cost you any donuts, but it's
    - rude.
    -
    - This file should *only* be used for stubbing out platforms which
    - you don't know how to implement. When implementing a new dialog
    - for your platform, you're probably better off starting with code
    - from another working dialog.
    -*/
    -
    - UT_ASSERT(UT_NOT_IMPLEMENTED);
    + pwdreturn=PtPassword(parentWindow, /* Parent */
    + NULL, /* Location */
    + pSS->getValue(XAP_STRING_ID_DLG_Password_Title), /* Title*/
    + NULL, /* Image*/
    + pSS->getValue(XAP_STRING_ID_DLG_Password_Title), /* Msg */
    + NULL, /* font*/
    + (const char **)buttons, /* button strings */
    + NULL, /* font*/
    + NULL, /* font*/
    + pass_validate, /* fake validation.*/
    + this, /* validate data.*/
    + "*",
    + Pt_CENTER|Pt_BLOCK_ALL);
    + if(pwdreturn == Pt_PWD_CANCEL)
    + setAnswer(XAP_Dialog_Password::a_Cancel);
    + if(pwdreturn == Pt_PWD_ACCEPT) {
    + setPassword(m_pass);
    + setAnswer(XAP_Dialog_Password::a_OK);
    + }
    + free(buttons);
     }
    +
    Index: af/xap/qnx/xap_QNXDlg_Password.h
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXDlg_Password.h,v
    retrieving revision 1.1
    diff -u -r1.1 xap_QNXDlg_Password.h
    --- af/xap/qnx/xap_QNXDlg_Password.h 17 Oct 2001 17:17:05 -0000 1.1
    +++ af/xap/qnx/xap_QNXDlg_Password.h 26 Mar 2002 03:12:23 -0000
    @@ -36,9 +36,9 @@
             virtual void runModal(XAP_Frame * pFrame);
     
             static XAP_Dialog * static_constructor(XAP_DialogFactory *, XAP_Dialog_Id id);
    -
    + void *SetPassword(char* pass);
     protected:
    -
    +char *m_pass;
     };
     
     #endif /* XAP_QNXDIALOG_PASSWORD_H */
    Index: af/xap/qnx/xap_QNXClipboard.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXClipboard.cpp,v
    retrieving revision 1.3
    diff -u -r1.3 xap_QNXClipboard.cpp
    --- af/xap/qnx/xap_QNXClipboard.cpp 6 Feb 2001 22:54:17 -0000 1.3
    +++ af/xap/qnx/xap_QNXClipboard.cpp 26 Mar 2002 03:12:23 -0000
    @@ -18,6 +18,7 @@
      */
     
     #include <string.h>
    +#include <Ph.h>
     
     #include "ut_debugmsg.h"
     #include "ut_string.h"
    @@ -50,14 +51,31 @@
     //////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////
     
    +#define Ph_CLIPBOARD_RTF "RTF"
    +#define Ph_CLIPBOARD_TEXT "TEXT"
    +
     bool XAP_QNXClipboard::addData(const char* format, void* pData, UT_sint32 iNumBytes)
     {
    - return XAP_FakeClipboard::addData(format, pData, iNumBytes);
    +
    + if(strcmp(Ph_CLIPBOARD_TEXT,format)==0){
    + PhClipboardCopyString(PhInputGroup(0),(char*)pData);
    + }
    + else if(strcmp(Ph_CLIPBOARD_RTF,format)==0) {
    + PhClipHeader clip = {Ph_CLIPBOARD_RTF,iNumBytes,0,pData};
    + PhClipboardCopy(PhInputGroup(0),1,&clip);
    + }
    + else
    + XAP_FakeClipboard::addData(format, pData, iNumBytes);
     }
     
     bool XAP_QNXClipboard::hasFormat(const char *format)
     {
    - return XAP_FakeClipboard::hasFormat(format);
    + void *cbdata;
    + cbdata=PhClipboardPasteStart(PhInputGroup(0));
    + if(!PhClipboardPasteType(cbdata,(char*)format)|| (XAP_FakeClipboard::hasFormat(format)==false))
    + return false;
    +PhClipboardPasteFinish(cbdata);
    +return true;
     }
     
     bool XAP_QNXClipboard::clearClipboard()
    @@ -67,7 +85,15 @@
     
     bool XAP_QNXClipboard::getClipboardData(const char* format, void ** ppData, UT_uint32 * pLen)
     {
    - return XAP_FakeClipboard::getClipboardData(format, ppData, pLen);
    + void *cbdata;
    + PhClipHeader *clip;
    + cbdata=PhClipboardPasteStart(PhInputGroup(0));
    + clip=PhClipboardPasteType(cbdata,(char*)format);
    +if(clip){
    + (char*)*ppData=strdup((char*)clip->data);
    +
    + *pLen=strlen((char*)*ppData);
    + return true;
    +}
    +return XAP_FakeClipboard::getClipboardData(format, ppData, pLen);
     }
    -
    -
    Index: af/xap/qnx/xap_QNXFrame.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/af/xap/qnx/xap_QNXFrame.cpp,v
    retrieving revision 1.22
    diff -u -r1.22 xap_QNXFrame.cpp
    --- af/xap/qnx/xap_QNXFrame.cpp 17 Sep 2001 13:45:57 -0000 1.22
    +++ af/xap/qnx/xap_QNXFrame.cpp 26 Mar 2002 03:12:23 -0000
    @@ -532,9 +532,7 @@
             char execstring[4096];
     
             //TODO: I should use spawn here
    - snprintf(execstring, 4096, "voyager -u %s &", szURL);
    - system(execstring);
    -
    + spawnlp(P_NOWAITO,"voyager","voyager","-u",szURL,NULL);
             return true;
     }
     
    Index: af/gr/qnx/gr_QNXGraphics.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/af/gr/qnx/gr_QNXGraphics.cpp,v
    retrieving revision 1.41
    diff -u -r1.41 gr_QNXGraphics.cpp
    --- af/gr/qnx/gr_QNXGraphics.cpp 21 Mar 2002 11:41:23 -0000 1.41
    +++ af/gr/qnx/gr_QNXGraphics.cpp 26 Mar 2002 03:12:23 -0000
    @@ -486,6 +486,7 @@
     //////////////////////////////////////////////////////////////////
     void GR_Font::s_getGenericFontProperties(const char *szFontName, FontFamilyEnum * pff, FontPitchEnum * pfp, bool * pbTrueType)
     {
    +
     #if 0
        switch (xx & 0xf0)
        {
    @@ -506,9 +507,10 @@
        *pbTrueType = ((xx & TMPF_TRUETYPE) == TMPF_TRUETYPE);
     #endif
             printf("SET GENERIC FONT ... WHY HERE?\n");
    - *pff = FF_Unknown;
    + *pff = FF_Roman;
             *pfp = FP_Variable;
             *pbTrueType = 0;
    +//XXX.
     }
     
     
    @@ -824,81 +826,92 @@
     
     void GR_QNXGraphics::setCursor(GR_Graphics::Cursor c)
     {
    -#if 0
    +unsigned short cursor_number=0;
             if (m_cursor == c)
                     return;
             
             m_cursor = c;
    -
    - GdkCursorType cursor_number;
    -
    +
             switch (c)
             {
             default:
                     UT_ASSERT(UT_NOT_IMPLEMENTED);
                     /*FALLTHRU*/
             case GR_CURSOR_DEFAULT:
    - cursor_number = GDK_TOP_LEFT_ARROW;
    + cursor_number = Ph_CURSOR_POINTER;
                     break;
                     
             case GR_CURSOR_IBEAM:
    - cursor_number = GDK_XTERM;
    + cursor_number = Ph_CURSOR_POINTER; //XXX: Wtf is IBEAM ?
                     break;
     
             case GR_CURSOR_RIGHTARROW:
    - cursor_number = GDK_SB_RIGHT_ARROW; //GDK_ARROW;
    + cursor_number = Ph_CURSOR_DRAG_RIGHT;
                     break;
                     
     #ifdef BIDI_ENABLED
    -//#error choose a suitable cursor; this is just a placeholder !!!
             case GR_CURSOR_LEFTARROW:
    - cursor_number = GDK_SB_LEFT_ARROW; //GDK_ARROW;
    + cursor_number = Ph_CURSOR_DRAG_LEFT; //GDK_ARROW;
                     break;
     #endif
     
             case GR_CURSOR_IMAGE:
    - cursor_number = GDK_FLEUR;
    + cursor_number = Ph_CURSOR_POINTER; //XXX: ???
                     break;
                     
             case GR_CURSOR_IMAGESIZE_NW:
    - cursor_number = GDK_TOP_LEFT_CORNER;
    + cursor_number = Ph_CURSOR_DRAG_TL;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_N:
    - cursor_number = GDK_TOP_SIDE;
    + cursor_number = Ph_CURSOR_DRAG_TOP;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_NE:
    - cursor_number = GDK_TOP_RIGHT_CORNER;
    + cursor_number = Ph_CURSOR_DRAG_TR;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_E:
    - cursor_number = GDK_RIGHT_SIDE;
    + cursor_number = Ph_CURSOR_DRAG_RIGHT;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_SE:
    - cursor_number = GDK_BOTTOM_RIGHT_CORNER;
    + cursor_number = Ph_CURSOR_DRAG_BR;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_S:
    - cursor_number = GDK_BOTTOM_SIDE;
    + cursor_number = Ph_CURSOR_DRAG_BOTTOM;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_SW:
    - cursor_number = GDK_BOTTOM_LEFT_CORNER;
    + cursor_number = Ph_CURSOR_DRAG_BL;
                     break;
                     
             case GR_CURSOR_IMAGESIZE_W:
    - cursor_number = GDK_LEFT_SIDE;
    + cursor_number = Ph_CURSOR_DRAG_LEFT;
    + break;
    +
    + case GR_CURSOR_LEFTRIGHT:
    + cursor_number=Ph_CURSOR_DRAG_HORIZONTAL;
    + break;
    + case GR_CURSOR_UPDOWN:
    + cursor_number=Ph_CURSOR_DRAG_VERTICAL;
    + break;
    + case GR_CURSOR_EXCHANGE:
    + cursor_number=Ph_CURSOR_POINTER;
    + break;
    + case GR_CURSOR_GRAB:
    + cursor_number=Ph_CURSOR_MOVE;
    + break;
    + case GR_CURSOR_LINK:
    + cursor_number=Ph_CURSOR_FINGER;
    + break;
    + case GR_CURSOR_WAIT:
    + cursor_number= Ph_CURSOR_WAIT;
                     break;
             }
     
    - GdkCursor * cursor = gdk_cursor_new(cursor_number);
    - gdk_window_set_cursor(m_pWin, cursor);
    - gdk_cursor_destroy(cursor);
    -#else
    - UT_DEBUGMSG(("TODO: Set the cursor type "));
    -#endif
    + PtSetResource(m_pWin,Pt_ARG_CURSOR_TYPE,cursor_number,0);
     }
     
     GR_Graphics::Cursor GR_QNXGraphics::getCursor(void) const
    Index: config/platforms/nto.mk
    ===================================================================
    RCS file: /cvsroot/abi/src/config/platforms/nto.mk,v
    retrieving revision 1.10
    diff -u -r1.10 nto.mk
    --- config/platforms/nto.mk 21 Mar 2002 18:30:37 -0000 1.10
    +++ config/platforms/nto.mk 26 Mar 2002 03:12:24 -0000
    @@ -40,7 +40,7 @@
     
     # Define tools (should gcc be cc/qcc ... same for ar?)
     CC = qcc
    -CCC = g++
    +CCC = QCC -Vgcc_ntox86_gpp
     RANLIB = touch
     
     # Suffixes



    This archive was generated by hypermail 2.1.4 : Mon Mar 25 2002 - 22:15:38 EST