I messed up the last diff i sent. the right one is attached
Index: src/text/fmt/xp/fl_DocLayout.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fl_DocLayout.cpp,v
retrieving revision 1.84
diff -u -r1.84 fl_DocLayout.cpp
--- src/text/fmt/xp/fl_DocLayout.cpp 2000/06/15 07:07:15 1.84
+++ src/text/fmt/xp/fl_DocLayout.cpp 2000/06/16 04:38:16
@@ -168,9 +168,10 @@
if (m_pG->queryProperties(GR_Graphics::DGP_SCREEN))
{
- // add page view dimensions
- iHeight += fl_PAGEVIEW_PAGE_SEP * (count - 1);
- iHeight += fl_PAGEVIEW_MARGIN_Y * 2;
+ // add page view dimensions
+ UT_uint32 iPageSep = m_pView->getPageviewPageSep();
+ iHeight += iPageSep * (count - 1);
+ iHeight += iPageSep * 2;
}
return iHeight;
@@ -193,7 +194,7 @@
if (m_pG->queryProperties(GR_Graphics::DGP_SCREEN))
{
// add page view dimensions
- iWidth += fl_PAGEVIEW_MARGIN_X * 2;
+ iWidth += m_pView->getPageviewMarginX() * 2;
}
return iWidth;
@@ -303,7 +304,7 @@
m_vecPages.deleteNthItem(ndx);
delete pPage;
- // let the view know that we created a new page,
+ // let the view know that we deleted a page,
// so that it can update the scroll bar ranges
// and whatever else it needs to do.
Index: src/text/fmt/xp/fl_DocLayout.h
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fl_DocLayout.h,v
retrieving revision 1.43
diff -u -r1.43 fl_DocLayout.h
--- src/text/fmt/xp/fl_DocLayout.h 2000/05/29 23:41:11 1.43
+++ src/text/fmt/xp/fl_DocLayout.h 2000/06/16 04:38:16
@@ -41,12 +41,6 @@
class fl_PartOfBlock;
-// the following get used by view and layout code,
-// since they're private to the formatter, we stick 'em here
-#define fl_PAGEVIEW_PAGE_SEP 20 // must be <= MARGIN_Y
-#define fl_PAGEVIEW_MARGIN_X 25
-#define fl_PAGEVIEW_MARGIN_Y 25
-
// ----------------------------------------------------------------
/*
FL_DocLayout is a formatted representation of a specific PD_Document,
@@ -86,6 +80,7 @@
inline PD_Document* getDocument(void) const { return m_pDoc; }
inline fl_BlockLayout* getPendingBlock(void) const { return m_pPendingBlock;
};
inline fl_PartOfBlock* getPendingWord(void) const { return m_pPendingWord; };
+ inline void setPageSize(UT_sint32 iW, UT_sint32 iH) { m_pageSize.Set((double)
+iW/100.0, (double) iH/100.0, fp_PageSize::inch); }
UT_sint32 getHeight();
UT_sint32 getWidth();
Index: src/text/fmt/xp/fl_SectionLayout.h
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fl_SectionLayout.h,v
retrieving revision 1.35
diff -u -r1.35 fl_SectionLayout.h
--- src/text/fmt/xp/fl_SectionLayout.h 2000/04/20 00:52:24 1.35
+++ src/text/fmt/xp/fl_SectionLayout.h 2000/06/16 04:38:16
@@ -176,6 +176,11 @@
inline UT_sint32 getSpaceAfter(void) const { return
m_iSpaceAfter; }
inline UT_sint32 getSpaceAfterInLayoutUnits(void) const
{ return m_iSpaceAfterLayoutUnits; }
+ inline void setLeftMargin(UT_sint32 iM) { m_iLeftMargin = iM; }
+ inline void setRightMargin(UT_sint32 iM) { m_iRightMargin = iM; }
+ inline void setTopMargin(UT_sint32 iM) { m_iTopMargin = iM; }
+ inline void setBottomMargin(UT_sint32 iM) { m_iBottomMargin = iM; }
+
UT_uint32 getNumColumns(void) const;
UT_uint32 getColumnGap(void) const;
UT_uint32 getColumnGapInLayoutUnits(void) const;
Index: src/text/fmt/xp/fp_Page.h
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fp_Page.h,v
retrieving revision 1.22
diff -u -r1.22 fp_Page.h
--- src/text/fmt/xp/fp_Page.h 2000/05/18 06:10:05 1.22
+++ src/text/fmt/xp/fp_Page.h 2000/06/16 04:38:16
@@ -53,6 +53,7 @@
UT_sint32 getWidthInLayoutUnits(void) const;
UT_sint32 getHeight(void) const;
UT_sint32 getHeightInLayoutUnits(void) const;
+ void setSize(UT_sint32 iW, UT_sint32 iH) {
+m_pageSize.Set((double) iW/m_iResolution, (double) iH/m_iResolution,
+fp_PageSize::inch); }
UT_sint32 getBottom(void) const;
fp_Page* getNext(void) const;
fp_Page* getPrev(void) const;
@@ -83,6 +84,8 @@
fp_HdrFtrContainer* getHeaderContainer(fl_HdrFtrSectionLayout*);
fp_HdrFtrContainer* getFooterContainer(fl_HdrFtrSectionLayout*);
+
+ inline void reformat (void) { _reformat(); }
#ifdef FMT_TEST
void __dump(FILE * fp) const;
Index: src/text/fmt/xp/fv_View.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fv_View.cpp,v
retrieving revision 1.269
diff -u -r1.269 fv_View.cpp
--- src/text/fmt/xp/fv_View.cpp 2000/06/11 14:56:12 1.269
+++ src/text/fmt/xp/fv_View.cpp 2000/06/16 04:38:18
@@ -52,6 +52,7 @@
#include "ap_TopRuler.h"
#include "ap_LeftRuler.h"
#include "ap_Prefs.h"
+#include "ap_FrameData.h" // For accessing rulers
#include "sp_spell.h"
@@ -91,7 +92,7 @@
// m_bPointAP = UT_FALSE;
m_pAutoScrollTimer = NULL;
m_pAutoCursorTimer = NULL;
- m_pParentData = pParentData;
+ m_pParentData = pParentData;
// initialize prefs cache
pApp->getPrefsValueBool(AP_PREF_KEY_CursorBlink, &m_bCursorBlink);
@@ -125,6 +126,9 @@
m_startPosition = 0;
m_bShowPara = UT_FALSE;
m_bCursorIsOn = UT_FALSE;
+
+ m_ViewTypeChanged = UT_FALSE;
+ setViewType (FV_VIEWTYPE_PGLAYOUT);
}
FV_View::~FV_View()
@@ -4092,9 +4096,9 @@
UT_Bool bDirtyRunsOnly, UT_Bool bClip)
{
xxx_UT_DEBUGMSG(("FV_View::draw_3 [x %ld][y %ld][w %ld][h %ld][bClip %ld]\n"
- "\t\twith [yScrollOffset %ld][windowHeight %ld]\n",
- x,y,width,height,bClip,
- m_yScrollOffset,m_iWindowHeight));
+ "\t\twith [yScrollOffset %ld][windowHeight
+%ld]\n",
+ x,y,width,height,bClip,
+ m_yScrollOffset,m_iWindowHeight));
// this can happen when the frame size is decreased and
// only the toolbars show...
@@ -4122,6 +4126,23 @@
m_pG->setClipRect(&r);
}
+ switch (m_ViewType)
+ {
+ case FV_VIEWTYPE_PGLAYOUT:
+ _draw_pglayout (x, y, width, height, bDirtyRunsOnly, bClip);
+ break;
+ case FV_VIEWTYPE_NORMAL:
+ _draw_normal (x, y, width, height, bDirtyRunsOnly, bClip);
+ break;
+ default:
+ UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
+ }
+}
+
+void FV_View::_draw_pglayout (UT_sint32 x, UT_sint32 y,
+ UT_sint32 width, UT_sint32
+height,
+ UT_Bool bDirtyRunsOnly,
+UT_Bool bClip)
+{
// figure out where pages go, based on current window dimensions
// TODO: don't calc for every draw
// HYP: cache calc results at scroll/size time
@@ -4139,13 +4160,13 @@
if (!bDirtyRunsOnly)
{
- if (m_xScrollOffset < fl_PAGEVIEW_MARGIN_X)
+ if (m_xScrollOffset < (UT_sint32) fl_PAGEVIEW_MARGIN_X)
{
// fill left margin
m_pG->fillRect(clrMargin, 0, 0, fl_PAGEVIEW_MARGIN_X -
m_xScrollOffset, m_iWindowHeight);
}
- if (m_yScrollOffset < fl_PAGEVIEW_MARGIN_Y)
+ if (m_yScrollOffset < (UT_sint32) fl_PAGEVIEW_MARGIN_Y)
{
// fill top margin
m_pG->fillRect(clrMargin, 0, 0, m_iWindowWidth,
fl_PAGEVIEW_MARGIN_Y - m_yScrollOffset);
@@ -4301,6 +4322,291 @@
}
#endif
+}
+
+
+void FV_View::_draw_normal (UT_sint32 x, UT_sint32 y,
+ UT_sint32 width, UT_sint32
+height,
+ UT_Bool bDirtyRunsOnly,
+UT_Bool bClip)
+{
+ // figure out where pages go, based on current window dimensions
+ // TODO: don't calc for every draw
+ // HYP: cache calc results at scroll/size time
+ UT_sint32 iDocHeight = m_pLayout->getHeight();
+
+ // TODO: handle positioning within oversized viewport
+ // TODO: handle variable-size pages (envelope, landscape, etc.)
+
+ UT_RGBColor clrMargin(127,127,127); // dark gray
+
+ if (!bDirtyRunsOnly)
+ {
+ if (m_xScrollOffset < (UT_sint32) fl_PAGEVIEW_MARGIN_X)
+ {
+ // fill left margin
+ m_pG->fillRect(clrMargin, 0, 0, fl_PAGEVIEW_MARGIN_X -
+m_xScrollOffset, m_iWindowHeight);
+ }
+
+ if (m_yScrollOffset < (UT_sint32) fl_PAGEVIEW_MARGIN_Y)
+ {
+ // fill top margin
+ m_pG->fillRect(clrMargin, 0, 0, m_iWindowWidth,
+fl_PAGEVIEW_MARGIN_Y - m_yScrollOffset);
+ }
+ }
+
+ UT_sint32 curY = fl_PAGEVIEW_MARGIN_Y;
+ fp_Page* pPage = m_pLayout->getFirstPage();
+ while (pPage)
+ {
+ UT_sint32 iPageWidth = pPage->getWidth();
+ UT_sint32 iPageHeight = pPage->getHeight();
+ UT_sint32 adjustedTop = curY - m_yScrollOffset;
+ UT_sint32 adjustedBottom = adjustedTop + iPageHeight +
+fl_PAGEVIEW_PAGE_SEP;
+ if (adjustedTop > m_iWindowHeight)
+ {
+ // the start of this page is past the bottom
+ // of the window, so we don't need to draw it.
+
+ xxx_UT_DEBUGMSG(("not drawing page A: iPageHeight=%d curY=%d
+nPos=%d m_iWindowHeight=%d\n",
+ iPageHeight,
+ curY,
+ m_yScrollOffset,
+ m_iWindowHeight));
+
+ // since all other pages are below this one, we
+ // don't need to draw them either. exit loop now.
+ break;
+ }
+ else if (adjustedBottom < 0)
+ {
+ // the end of this page is above the top of
+ // the window, so we don't need to draw it.
+
+ xxx_UT_DEBUGMSG(("not drawing page B: iPageHeight=%d curY=%d
+nPos=%d m_iWindowHeight=%d\n",
+ iPageHeight,
+ curY,
+ m_yScrollOffset,
+ m_iWindowHeight));
+ }
+ else if (adjustedTop > y + height)
+ {
+ // the top of this page is beyond the end
+ // of the clipping region, so we don't need
+ // to draw it.
+
+ xxx_UT_DEBUGMSG(("not drawing page C: iPageHeight=%d curY=%d
+nPos=%d m_iWindowHeight=%d y=%d h=%d\n",
+ iPageHeight,
+ curY,
+ m_yScrollOffset,
+ m_iWindowHeight,
+ y,height));
+ }
+ else if (adjustedBottom < y)
+ {
+ // the bottom of this page is above the top
+ // of the clipping region, so we don't need
+ // to draw it.
+
+ xxx_UT_DEBUGMSG(("not drawing page D: iPageHeight=%d curY=%d
+nPos=%d m_iWindowHeight=%d y=%d h=%d\n",
+ iPageHeight,
+ curY,
+ m_yScrollOffset,
+ m_iWindowHeight,
+ y,height));
+ }
+ else
+ {
+ // this page is on screen and intersects the clipping region,
+ // so we *DO* draw it.
+
+ xxx_UT_DEBUGMSG(("drawing page E: iPageHeight=%d curY=%d
+nPos=%d m_iWindowHeight=%d y=%d h=%d\n",
+
+iPageHeight,curY,m_yScrollOffset,m_iWindowHeight,y,height));
+
+ dg_DrawArgs da;
+
+ da.bDirtyRunsOnly = bDirtyRunsOnly;
+ da.pG = m_pG;
+ da.xoff = fl_PAGEVIEW_MARGIN_X - m_xScrollOffset;
+ da.yoff = adjustedTop;
+
+ UT_sint32 adjustedLeft = fl_PAGEVIEW_MARGIN_X -
+m_xScrollOffset;
+ UT_sint32 adjustedRight = adjustedLeft + iPageWidth;
+
+ adjustedBottom -= fl_PAGEVIEW_PAGE_SEP;
+
+ UT_RGBColor clrPaper(255,255,255);
+
+ if (!bDirtyRunsOnly || pPage->needsRedraw())
+ {
+
+m_pG->fillRect(clrPaper,adjustedLeft+1,adjustedTop+1,iPageWidth-1,iPageHeight-1);
+ }
+
+ pPage->draw(&da);
+
+ // draw page decorations
+ UT_RGBColor clr(0,0,0); // black
+ UT_RGBColor clrLG(211,211,211); // light grey
+ m_pG->setColor(clrLG);
+
+ // one pixel border
+ m_pG->drawLine(adjustedLeft, adjustedTop, adjustedRight,
+adjustedTop);
+ m_pG->drawLine(adjustedRight, adjustedTop, adjustedRight,
+adjustedBottom);
+ m_pG->drawLine(adjustedRight, adjustedBottom, adjustedLeft,
+adjustedBottom);
+ m_pG->drawLine(adjustedLeft, adjustedBottom, adjustedLeft,
+adjustedTop);
+ m_pG->setColor(clr);
+
+ // fill to right of page
+ m_pG->fillRect(clrPaper, adjustedRight + 1, adjustedTop,
+m_iWindowWidth - (adjustedRight + 1), iPageHeight + 1);
+
+ // fill separator below page
+ m_pG->fillRect(clrMargin, adjustedLeft, adjustedBottom + 1,
+m_iWindowWidth - adjustedLeft, fl_PAGEVIEW_PAGE_SEP);
+ }
+
+ curY += iPageHeight + fl_PAGEVIEW_PAGE_SEP;
+
+ pPage = pPage->getNext();
+ }
+
+ if (curY < iDocHeight)
+ {
+ // fill below bottom of document
+ UT_sint32 y = curY - m_yScrollOffset + 1;
+ UT_sint32 h = m_iWindowHeight - y;
+
+ m_pG->fillRect(clrMargin, 0, y, m_iWindowWidth, h);
+ }
+
+ if (bClip)
+ {
+ m_pG->setClipRect(NULL);
+ }
+
+#if 0
+ {
+ // Some test code for the graphics interface.
+ UT_RGBColor clrRed(255,0,0);
+ m_pG->setColor(clrRed);
+ m_pG->drawLine(10,10,20,10);
+ m_pG->drawLine(20,11,30,11);
+ m_pG->fillRect(clrRed,50,10,10,10);
+ m_pG->fillRect(clrRed,60,20,10,10);
+ }
+#endif
+}
+
+void FV_View::setViewType(FVViewType inViewType)
+{
+ UT_uint32 count, iNumPages = m_pLayout->countPages();
+ UT_sint32 iPageWidth, iPageHeight;
+ fp_Page * pPage = m_pLayout->getNthPage (0);
+ iPageWidth = pPage->getWidth ();
+ iPageHeight = pPage->getHeight ();
+
+ switch (inViewType)
+ {
+ case FV_VIEWTYPE_PGLAYOUT:
+ if (m_ViewType != inViewType || !m_ViewTypeChanged)
+ {
+ if (m_ViewTypeChanged && m_ViewType == FV_VIEWTYPE_NORMAL)
+ {
+ fl_DocSectionLayout * section = m_pLayout ->
+getFirstSection();
+ UT_ASSERT (section);
+
+ UT_uint32 existingMarginT = section->getTopMargin();
+ UT_uint32 existingMarginB =
+section->getBottomMargin();
+ UT_uint32 existingMarginR = section->getRightMargin();
+ UT_uint32 existingMarginL = section->getLeftMargin();
+
+ m_iTopMargin = 100;
+ m_iBottomMargin = 100;
+ m_iRightMargin = 100;
+ m_iLeftMargin = 100;
+
+ while (section)
+ {
+ section->setTopMargin(m_iTopMargin);
+ section->setBottomMargin(m_iBottomMargin);
+ section->setRightMargin(m_iRightMargin);
+ section->setLeftMargin (m_iLeftMargin);
+ section = section->getNextDocSection ();
+ }
+
+ iPageWidth += m_iRightMargin + m_iLeftMargin -
+existingMarginL - existingMarginR;
+ iPageHeight += m_iTopMargin + m_iBottomMargin -
+existingMarginT - existingMarginB;
+
+ // Set new size for all pages
+ for (count=1; count != iNumPages+1; ++count)
+ {
+ pPage->setSize (iPageWidth, iPageHeight);
+ pPage->reformat();
+ if (count != iNumPages) pPage =
+m_pLayout->getNthPage (count);
+ }
+
+ // Set page size for new pages
+ m_pLayout->setPageSize (iPageWidth, iPageHeight);
+ }
+ fl_PAGEVIEW_MARGIN_X = 25;
+ fl_PAGEVIEW_MARGIN_Y = 25;
+ fl_PAGEVIEW_PAGE_SEP = 20;
+ }
+ break;
+
+ case FV_VIEWTYPE_NORMAL:
+ if (m_ViewType != inViewType)
+ {
+ fl_DocSectionLayout * section = m_pLayout ->
+getFirstSection();
+
+ fl_PAGEVIEW_MARGIN_X = 0;
+ fl_PAGEVIEW_MARGIN_Y = 0;
+ fl_PAGEVIEW_PAGE_SEP = 1;
+
+ UT_ASSERT (section);
+
+ UT_uint32 existingMarginT = section->getTopMargin();
+ UT_uint32 existingMarginB = section->getBottomMargin();
+ UT_uint32 existingMarginR = section->getRightMargin();
+ UT_uint32 existingMarginL = section->getLeftMargin();
+
+ m_iTopMargin = 0;
+ m_iBottomMargin = 0;
+ m_iRightMargin = NORMAL_VIEW_MARGIN_L;
+ m_iLeftMargin = NORMAL_VIEW_MARGIN_L;
+
+ while (section)
+ {
+ section->setTopMargin(m_iTopMargin);
+ section->setBottomMargin(m_iBottomMargin);
+ section->setRightMargin(m_iRightMargin);
+ section->setLeftMargin (m_iLeftMargin);
+ section = section->getNextDocSection ();
+ }
+
+ iPageWidth += m_iRightMargin + m_iLeftMargin - existingMarginL
+- existingMarginR;
+ iPageHeight += m_iTopMargin + m_iBottomMargin -
+existingMarginT - existingMarginB;
+
+ for (count=1; count != iNumPages+1; ++count)
+ {
+ pPage->setSize (iPageWidth, iPageHeight);
+ pPage->reformat();
+ if (count != iNumPages) pPage = m_pLayout->getNthPage
+(count);
+ }
+ // Set page size for new pages
+ m_pLayout->setPageSize (iPageWidth, iPageHeight);
+ }
+ break;
+
+ default:
+ UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
+ }
+ m_ViewType = inViewType;
+ draw(NULL);
+ m_ViewTypeChanged = UT_TRUE;
+
+ // We need to redraw the rulers, for obvious reasons
+ XAP_Frame * pFrame = (XAP_Frame *) getParentData();
+ AP_FrameData * pFrameData = (AP_FrameData *) pFrame->getFrameData();
+ pFrameData->m_pTopRuler->draw(NULL);
+ pFrameData->m_pLeftRuler->draw(NULL);
}
void FV_View::cmdScroll(AV_ScrollCmd cmd, UT_uint32 iPos)
Index: src/text/fmt/xp/fv_View.h
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fv_View.h,v
retrieving revision 1.122
diff -u -r1.122 fv_View.h
--- src/text/fmt/xp/fv_View.h 2000/06/10 13:58:21 1.122
+++ src/text/fmt/xp/fv_View.h 2000/06/16 04:38:18
@@ -52,6 +52,8 @@
class UT_AlphaHashTable;
class PP_AttrProp;
+#define NORMAL_VIEW_MARGIN_L 15
+
typedef enum _FVDocPos
{
FV_DOCPOS_BOB, FV_DOCPOS_EOB, // block
@@ -84,6 +86,13 @@
UT_uint32 page;
};
+typedef enum _FVViewType
+{
+ FV_VIEWTYPE_PGLAYOUT, // The default "page layout" view
+ FV_VIEWTYPE_NORMAL, // A "normal" less-WYSIWYG view that does not show
+margins or individual pages
+ FV_VIEWTYPE_OUTLINE // An outline view. Currently unimplemented.
+} FVViewType;
+
class FV_View : public AV_View
{
friend class fl_DocListener;
@@ -234,12 +243,26 @@
FV_DocCount countWords(void);
- void setShowPara(UT_Bool);
+ void setShowPara(UT_Bool);
inline UT_Bool getShowPara(void) const { return m_bShowPara; };
+
+ inline UT_uint32 getPageviewPageSep(void) const { return
+fl_PAGEVIEW_PAGE_SEP; };
+ inline UT_uint32 getPageviewMarginX(void) const { return
+fl_PAGEVIEW_MARGIN_X; };
+ inline UT_uint32 getPageviewMarginY(void) const { return
+fl_PAGEVIEW_MARGIN_Y; };
+
+ inline FVViewType getViewType (void) const { return m_ViewType; };
+ void setViewType(FVViewType inViewType);
+
protected:
void _generalUpdate(void);
+ // _draw() is now a function that just calls the appropriate view-specific
+one.
void _draw(UT_sint32, UT_sint32, UT_sint32,
UT_sint32, UT_Bool bDirtyRunsOnly, UT_Bool bClip=UT_FALSE);
+
+ // The following functions are candidates for the one that actaully
+ // draws the view. The right one is called by _draw().
+ void _draw_pglayout(UT_sint32, UT_sint32, UT_sint32, UT_sint32, UT_Bool
+bDirtyRunsOnly, UT_Bool bClip=UT_FALSE);
+ void _draw_normal(UT_sint32, UT_sint32, UT_sint32, UT_sint32, UT_Bool
+bDirtyRunsOnly, UT_Bool bClip=UT_FALSE);
void _drawBetweenPositions(PT_DocPosition left,
PT_DocPosition right);
void _clearBetweenPositions(PT_DocPosition left,
PT_DocPosition right, UT_Bool bFullLineHeightRect);
@@ -279,9 +302,9 @@
void _updateInsertionPoint();
void _fixInsertionPointCoords();
void _xorInsertionPoint();
- UT_Bool _hasPointMoved(void);
- void _saveCurrentPoint(void);
- void _clearOldPoint(void);
+ UT_Bool _hasPointMoved(void);
+ void _saveCurrentPoint(void);
+ void _clearOldPoint(void);
void _drawSelection();
void _swapSelectionOrientation(void);
void _extSel(UT_uint32 iOldPoint);
@@ -319,7 +342,7 @@
FL_DocLayout* m_pLayout;
PD_Document* m_pDoc;
GR_Graphics* m_pG;
- void * m_pParentData;
+ void * m_pParentData;
PT_DocPosition m_iSelectionAnchor;
PT_DocPosition m_iSelectionLeftAnchor;
@@ -363,6 +386,11 @@
static void _prefsListener( XAP_App *, XAP_Prefs *, UT_AlphaHashTable *, void
*);
UT_Bool m_bShowPara;
+
+ UT_uint32 fl_PAGEVIEW_PAGE_SEP, fl_PAGEVIEW_MARGIN_X,
+fl_PAGEVIEW_MARGIN_Y;
+ FVViewType m_ViewType;
+ UT_Bool m_ViewTypeChanged;
+ UT_sint32 m_iTopMargin, m_iBottomMargin, m_iLeftMargin, m_iRightMargin;
};
#endif /* FV_VIEW_H */
Index: src/wp/ap/xp/ap_EditMethods.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v
retrieving revision 1.208
diff -u -r1.208 ap_EditMethods.cpp
--- src/wp/ap/xp/ap_EditMethods.cpp 2000/06/11 14:20:08 1.208
+++ src/wp/ap/xp/ap_EditMethods.cpp 2000/06/16 04:38:20
@@ -239,6 +239,8 @@
static EV_EditMethod_Fn viewStatus;
static EV_EditMethod_Fn viewPara;
static EV_EditMethod_Fn viewHeadFoot;
+ static EV_EditMethod_Fn viewPageLayout;
+ static EV_EditMethod_Fn viewNormal;
static EV_EditMethod_Fn zoom;
static EV_EditMethod_Fn dlgZoom;
@@ -519,6 +521,8 @@
EV_EditMethod(NF(viewStatus), 0, ""),
EV_EditMethod(NF(viewPara), 0, ""),
EV_EditMethod(NF(viewHeadFoot), 0, ""),
+ EV_EditMethod(NF(viewPageLayout), 0, ""),
+ EV_EditMethod(NF(viewNormal), 0, ""),
EV_EditMethod(NF(zoom), 0, ""),
EV_EditMethod(NF(dlgZoom), 0, ""),
@@ -3888,6 +3892,20 @@
// TODO: synch this implementation with ap_GetState_View
s_TellNotImplemented(pFrame, "View Headers and Footers", __LINE__);
+ return UT_TRUE;
+}
+
+Defun1(viewPageLayout)
+{
+ ABIWORD_VIEW;
+ pView->setViewType(FV_VIEWTYPE_PGLAYOUT);
+ return UT_TRUE;
+}
+
+Defun1(viewNormal)
+{
+ ABIWORD_VIEW;
+ pView->setViewType(FV_VIEWTYPE_NORMAL);
return UT_TRUE;
}
Index: src/wp/ap/xp/ap_Menu_ActionSet.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_ActionSet.cpp,v
retrieving revision 1.27
diff -u -r1.27 ap_Menu_ActionSet.cpp
--- src/wp/ap/xp/ap_Menu_ActionSet.cpp 2000/04/15 12:35:17 1.27
+++ src/wp/ap/xp/ap_Menu_ActionSet.cpp 2000/06/16 04:38:21
@@ -99,6 +99,8 @@
_s(AP_MENU_ID_EDIT_GOTO, 0,1,0, "go",
NULL, NULL);
_s(AP_MENU_ID_VIEW, 1,0,0, NULL,
NULL, NULL);
+ _s(AP_MENU_ID_VIEW_PGLAYOUT, 0,0,1, "viewPageLayout",
+ap_GetState_Viewmode, NULL);
+ _s(AP_MENU_ID_VIEW_NORMAL, 0,0,1, "viewNormal",
+ap_GetState_Viewmode, NULL);
_s(AP_MENU_ID_VIEW_TOOLBARS, 1,0,0, NULL, NULL,
NULL);
_s(AP_MENU_ID_VIEW_TB_STD, 0,0,1, "viewStd",
ap_GetState_Bars, NULL);
_s(AP_MENU_ID_VIEW_TB_FORMAT, 0,0,1, "viewFormat",
ap_GetState_Bars, NULL);
Index: src/wp/ap/xp/ap_Menu_Functions.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_Functions.cpp,v
retrieving revision 1.29
diff -u -r1.29 ap_Menu_Functions.cpp
--- src/wp/ap/xp/ap_Menu_Functions.cpp 2000/05/18 06:10:07 1.29
+++ src/wp/ap/xp/ap_Menu_Functions.cpp 2000/06/16 04:38:21
@@ -552,3 +552,33 @@
return s;
}
+
+Defun_EV_GetMenuItemState_Fn(ap_GetState_Viewmode)
+{
+ ABIWORD_VIEW;
+ UT_ASSERT(pView);
+
+ FVViewType viewtype=pView->getViewType();
+
+ EV_Menu_ItemState s = EV_MIS_ZERO;
+
+
+ switch(id)
+ {
+ case AP_MENU_ID_VIEW_PGLAYOUT:
+ if (viewtype == FV_VIEWTYPE_PGLAYOUT)
+ s = EV_MIS_Toggled;
+ break;
+
+ case AP_MENU_ID_VIEW_NORMAL:
+ if (viewtype == FV_VIEWTYPE_NORMAL)
+ s = EV_MIS_Toggled;
+ break;
+
+ default:
+ UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
+ break;
+ }
+
+ return s;
+}
Index: src/wp/ap/xp/ap_Menu_Functions.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_Functions.h,v
retrieving revision 1.11
diff -u -r1.11 ap_Menu_Functions.h
--- src/wp/ap/xp/ap_Menu_Functions.h 1999/10/15 07:53:58 1.11
+++ src/wp/ap/xp/ap_Menu_Functions.h 2000/06/16 04:38:21
@@ -39,6 +39,7 @@
Defun_EV_GetMenuItemState_Fn(ap_GetState_Window);
Defun_EV_GetMenuItemState_Fn(ap_GetState_Bars);
Defun_EV_GetMenuItemState_Fn(ap_GetState_View);
+Defun_EV_GetMenuItemState_Fn(ap_GetState_Viewmode);
Defun_EV_GetMenuItemState_Fn(ap_GetState_Suggest);
Index: src/wp/ap/xp/ap_Menu_Id.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_Id.h,v
retrieving revision 1.17
diff -u -r1.17 ap_Menu_Id.h
--- src/wp/ap/xp/ap_Menu_Id.h 2000/02/17 18:38:07 1.17
+++ src/wp/ap/xp/ap_Menu_Id.h 2000/06/16 04:38:21
@@ -71,6 +71,8 @@
AP_MENU_ID_VIEW,
+ AP_MENU_ID_VIEW_PGLAYOUT,
+ AP_MENU_ID_VIEW_NORMAL,
AP_MENU_ID_VIEW_TOOLBARS,
AP_MENU_ID_VIEW_TB_STD,
AP_MENU_ID_VIEW_TB_FORMAT,
Index: src/wp/ap/xp/ap_Menu_LabelSet_en-US.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_LabelSet_en-US.h,v
retrieving revision 1.26
diff -u -r1.26 ap_Menu_LabelSet_en-US.h
--- src/wp/ap/xp/ap_Menu_LabelSet_en-US.h 2000/04/15 12:35:17 1.26
+++ src/wp/ap/xp/ap_Menu_LabelSet_en-US.h 2000/06/16 04:38:21
@@ -70,6 +70,8 @@
MenuLabel(AP_MENU_ID_EDIT_GOTO, "&Go To",
"Move the insertion point to a specific location")
MenuLabel(AP_MENU_ID_VIEW, "&View",
NULL)
+ MenuLabel(AP_MENU_ID_VIEW_PGLAYOUT, "&Page Layout",
+"Switch to the Page Layout view mode.")
+ MenuLabel(AP_MENU_ID_VIEW_NORMAL, "&Normal",
+ "Switch to the Normal view mode.")
MenuLabel(AP_MENU_ID_VIEW_TOOLBARS, "&Toolbars", NULL)
MenuLabel(AP_MENU_ID_VIEW_TB_STD, "&Standard", "Show
or hide the standard toolbar")
MenuLabel(AP_MENU_ID_VIEW_TB_FORMAT, "&Formatting", "Show or hide
the formatting toolbar")
Index: src/wp/ap/xp/ap_Menu_Layouts_MainMenu.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_Layouts_MainMenu.h,v
retrieving revision 1.17
diff -u -r1.17 ap_Menu_Layouts_MainMenu.h
--- src/wp/ap/xp/ap_Menu_Layouts_MainMenu.h 2000/02/17 18:38:07 1.17
+++ src/wp/ap/xp/ap_Menu_Layouts_MainMenu.h 2000/06/16 04:38:21
@@ -66,6 +66,9 @@
EndSubMenu()
BeginSubMenu(AP_MENU_ID_VIEW)
+ MenuItem(AP_MENU_ID_VIEW_PGLAYOUT)
+ MenuItem(AP_MENU_ID_VIEW_NORMAL)
+ Separator()
BeginSubMenu(AP_MENU_ID_VIEW_TOOLBARS)
MenuItem(AP_MENU_ID_VIEW_TB_STD)
MenuItem(AP_MENU_ID_VIEW_TB_FORMAT)
Index: src/wp/ap/xp/ap_TopRuler.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_TopRuler.cpp,v
retrieving revision 1.84
diff -u -r1.84 ap_TopRuler.cpp
--- src/wp/ap/xp/ap_TopRuler.cpp 2000/06/12 23:54:11 1.84
+++ src/wp/ap/xp/ap_TopRuler.cpp 2000/06/16 04:38:22
@@ -1527,7 +1527,6 @@
switch (m_draggingWhat)
{
case DW_NOTHING:
- UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
return;
case DW_LEFTMARGIN: