summaryrefslogtreecommitdiff
path: root/svx/workben
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@suse.cz>2011-03-18 15:49:47 +0100
committerJan Holesovsky <kendy@suse.cz>2011-03-18 15:49:47 +0100
commit091e4aee3386f3bfee081dc8646494e0eb97f88a (patch)
treedd79298b4e8729ca7dc874274d4a33ea88fe107d /svx/workben
parentf0681adbf092e2b455db52535f2df882bc87343a (diff)
parent224bd63b3fa459baa0a6bb5cd03f5dc2ca475d82 (diff)
Merge remote-tracking branch 'origin/integration/dev300_m101'
Conflicts: avmedia/source/framework/mediacontrol.cxx connectivity/source/commontools/DateConversion.cxx desktop/source/deployment/registry/component/dp_component.cxx editeng/inc/editeng/numitem.hxx editeng/inc/editeng/txtrange.hxx editeng/source/editeng/editobj.cxx editeng/source/editeng/editview.cxx editeng/source/editeng/eehtml.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/misc/txtrange.cxx editeng/source/outliner/outlin2.cxx editeng/source/outliner/outlvw.cxx framework/source/layoutmanager/layoutmanager.cxx linguistic/source/lngsvcmgr.hxx sfx2/source/appl/app.cxx sfx2/source/appl/app.src sfx2/source/appl/appbas.cxx sfx2/source/appl/appcfg.cxx sfx2/source/appl/appdde.cxx sfx2/source/appl/appmain.cxx sfx2/source/appl/appopen.cxx sfx2/source/appl/appquit.cxx sfx2/source/appl/appserv.cxx sfx2/source/appl/childwin.cxx sfx2/source/appl/fileobj.cxx sfx2/source/appl/fileobj.hxx sfx2/source/appl/workwin.cxx sfx2/source/control/dispatch.cxx sfx2/source/control/macro.cxx sfx2/source/control/objface.cxx sfx2/source/control/request.cxx sfx2/source/control/shell.cxx sfx2/source/control/statcach.cxx sfx2/source/dialog/dinfdlg.cxx sfx2/source/dialog/dockwin.cxx sfx2/source/dialog/mailmodel.cxx sfx2/source/dialog/mailmodelapi.cxx sfx2/source/dialog/mgetempl.cxx sfx2/source/dialog/splitwin.cxx sfx2/source/dialog/styledlg.cxx sfx2/source/dialog/tabdlg.cxx sfx2/source/dialog/templdlg.cxx sfx2/source/dialog/tplcitem.cxx sfx2/source/dialog/tplpitem.cxx sfx2/source/doc/doctempl.cxx sfx2/source/doc/docvor.cxx sfx2/source/doc/new.cxx sfx2/source/doc/objcont.cxx sfx2/source/doc/objserv.cxx sfx2/source/doc/objxtor.cxx sfx2/source/inc/appdata.hxx sfx2/source/inc/helpid.hrc sfx2/source/inc/sfxlocal.hrc sfx2/source/inc/statcach.hxx sfx2/source/inc/templdgi.hxx sfx2/source/inc/virtmenu.hxx sfx2/source/inc/workwin.hxx sfx2/source/menu/mnumgr.cxx sfx2/source/menu/virtmenu.cxx sfx2/source/statbar/stbitem.cxx sfx2/source/view/frame.cxx sfx2/source/view/frame2.cxx sfx2/source/view/orgmgr.cxx sfx2/source/view/printer.cxx sfx2/source/view/prnmon.cxx sfx2/source/view/sfxbasecontroller.cxx sfx2/source/view/viewfrm.cxx sfx2/source/view/viewfrm2.cxx sfx2/source/view/viewprn.cxx sfx2/source/view/viewsh.cxx svx/inc/svx/svditer.hxx svx/source/dialog/sdstring.src svx/source/form/fmpage.cxx svx/source/form/formcontroller.cxx svx/source/svdraw/svdcrtv.cxx svx/source/svdraw/svditer.cxx svx/source/svdraw/svdview.cxx xmloff/source/forms/elementimport.cxx
Diffstat (limited to 'svx/workben')
-rwxr-xr-xsvx/workben/edittest.cxx1795
-rwxr-xr-x[-rw-r--r--]svx/workben/msview/makefile.mk0
-rwxr-xr-x[-rw-r--r--]svx/workben/msview/msview.cxx0
-rwxr-xr-x[-rw-r--r--]svx/workben/msview/msview.xml0
-rwxr-xr-x[-rw-r--r--]svx/workben/msview/xmlconfig.cxx0
-rwxr-xr-x[-rw-r--r--]svx/workben/msview/xmlconfig.hxx0
6 files changed, 1795 insertions, 0 deletions
diff --git a/svx/workben/edittest.cxx b/svx/workben/edittest.cxx
new file mode 100755
index 000000000000..9b2f4f2e2aac
--- /dev/null
+++ b/svx/workben/edittest.cxx
@@ -0,0 +1,1795 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svx.hxx"
+
+#include <editeng/editeng.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/editobj.hxx>
+#include <editeng/editstat.hxx>
+#include <eerdll.hxx>
+#include <editeng/flditem.hxx>
+#include <tools/urlobj.hxx>
+#include <svx/svxacorr.hxx>
+#include <tools/fsys.hxx>
+#include <svx/xpoly.hxx>
+#include <svtools/filedlg.hxx>
+
+#include <vcl/window.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/font.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/print.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/help.hxx>
+#include <vcl/scrbar.hxx>
+#include <vcl/wrkwin.hxx>
+#include <vcl/msgbox.hxx>
+
+#include <dialdll.hxx>
+
+
+#define SERVICE_SIMPLEREGISTRY "com.sun.star.registry.SimpleRegistry"
+#include <comphelper/processfactory.hxx>
+#include <comphelper/regpathhelper.hxx>
+#include <cppuhelper/servicefactory.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/registry/XSimpleRegistry.hpp>
+#include <sfx2/sfxuno.hxx>
+
+// SVX
+#include <editeng/lrspitem.hxx>
+#include <editeng/shdditem.hxx>
+#include <editeng/cntritem.hxx>
+#include <editeng/crsditem.hxx>
+#include <editeng/udlnitem.hxx>
+#include <editeng/lspcitem.hxx>
+#include <editeng/escpitem.hxx>
+#include <editeng/kernitem.hxx>
+#include <editeng/akrnitem.hxx>
+#include <editeng/wrlmitem.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/ulspitem.hxx>
+#include <editeng/postitem.hxx>
+#include <editeng/adjitem.hxx>
+#include <editeng/wghtitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/fontitem.hxx>
+#include <fwdtitem.hxx>
+
+// SVTOOLS
+#include <svl/undo.hxx>
+#include <svl/itemset.hxx>
+#include <svl/itempool.hxx>
+#include <svl/poolitem.hxx>
+#include <svtools/printdlg.hxx>
+
+#include <osl/file.hxx>
+#include <osl/process.h>
+#include <rtl/bootstrap.hxx>
+
+#define TB_LEFT 1
+#define TB_RIGHT 2
+#define TB_CENTER 3
+#define TB_UNDO 4
+#define TB_REDO 5
+#define TB_FONT1 6
+#define TB_FONT2 7
+#define TB_ITALIC 8
+#define TB_BOLD 9
+#define TB_UNDERLINE 10
+#define TB_BLACK 11
+#define TB_GREEN 12
+#define TB_OPEN 13
+#define TB_SAVE 14
+#define TB_SBL 15
+#define TB_SBSA 16
+#define TB_LR 17
+#define TB_DRAW 18
+#define TB_DEFTAB 19
+#define TB_OPEN2 20
+#define TB_SAVE2 21
+#define TB_STDSEL 33
+#define TB_MOVE 34
+#define TB_PARATTR1 35
+#define TB_ROTATE 38
+#define TB_RED 43
+#define TB_FLAT 46
+#define TB_BINOBJ1 47
+#define TB_BINOBJ3 49
+#define TB_BINOBJ4 50
+#define TB_BINOBJ1b 51
+#define TB_BINOBJ2b 52
+#define TB_ATTRIBS 54
+#define TB_IDLE 55
+#define TB_BLOCK 56
+#define TB_CLONEBIN 57
+#define TB_INSERT 58
+#define TB_PKERN 59
+#define TB_KERN 60
+#define TB_SUPER 61
+#define TB_SUB 62
+#define TB_PRINT 63
+#define TB_FONT 64
+#define TB_COLORS 65
+#define TB_WLM 66
+#define TB_OUTL 67
+#define TB_INSFLD 68
+#define TB_UPDFLD 69
+#define TB_ONLINESPELL 70
+#define TB_REDLINES 71
+#define TB_AUTOCORRECT 72
+#define TB_POLY 73
+#define TB_HYPH 74
+
+// VARS...
+short nRotation = 0;
+USHORT nZoom = 100;
+sal_Bool bURLClicked = sal_False;
+
+using namespace ::com::sun::star::connection;
+using namespace ::vos;
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::registry;
+using namespace ::com::sun::star::lang;
+
+
+
+Reference< XMultiServiceFactory > createApplicationServiceManager()
+{
+ Reference< XMultiServiceFactory > xMS;
+ try
+ {
+ Reference< XComponentContext > xComponentContext = ::cppu::defaultBootstrap_InitialComponentContext();
+ if ( xComponentContext.is() )
+ xMS = xMS.query( xComponentContext->getServiceManager() );
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ }
+
+ return xMS;
+}
+
+// --- class EditApp -------------------------------------------------
+
+SV_DECL_PTRARR_DEL( StringList, String*, 0, 4 );
+SV_IMPL_PTRARR( StringList, String* );
+StringList aSimpleHistory;
+
+class EditApp : public Application
+{
+public:
+ virtual void Main();
+};
+
+class MyEditEngine : public EditEngine
+{
+public:
+ MyEditEngine( SfxItemPool* pPool ) : EditEngine( pPool ) { ; }
+ virtual String CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rTxtColor, Color*& rFldColor );
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, USHORT nPos );
+ virtual void FieldSelected( const SvxFieldItem& rField, USHORT nPara, USHORT nPos );
+};
+
+XubString __EXPORT MyEditEngine::CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor )
+{
+ const SvxFieldData* pField = rField.GetField();
+ if ( !pField )
+ return String( RTL_CONSTASCII_USTRINGPARAM( "<Empty>" ) );
+
+ if ( pField->ISA( SvxDateField ) )
+ return ((const SvxDateField*)pField)->GetFormatted( LANGUAGE_SYSTEM, LANGUAGE_SYSTEM );
+ else if ( pField->ISA( SvxURLField ) )
+ {
+ const SvxURLField* pURL = (const SvxURLField*)pField;
+ if ( !bURLClicked )
+ {
+ delete rpTxtColor;
+ rpTxtColor = new Color( COL_BLUE );
+ }
+ else
+ {
+ delete rpTxtColor;
+ rpTxtColor = new Color( COL_RED );
+ delete rpFldColor;
+ rpFldColor = new Color( COL_YELLOW );
+ }
+ if ( pURL->GetFormat() == SVXURLFORMAT_URL )
+ return pURL->GetURL();
+ return pURL->GetRepresentation();
+ }
+ return String( RTL_CONSTASCII_USTRINGPARAM( "???" ) );
+}
+
+void __EXPORT MyEditEngine::FieldClicked( const SvxFieldItem& rField, USHORT nPara, USHORT nPos )
+{
+ EditEngine::FieldClicked( rField, nPara, nPos ); // Falls URL
+ const SvxFieldData* pField = rField.GetField();
+ if ( !pField )
+ return;
+
+ if ( pField->ISA( SvxURLField ) )
+ {
+ bURLClicked = TRUE;
+ UpdateFields();
+ }
+ else
+ Sound::Beep();
+}
+
+void __EXPORT MyEditEngine::FieldSelected( const SvxFieldItem& rField, USHORT nPara, USHORT nPos )
+{
+ const SvxFieldData* pField = rField.GetField();
+ if ( !pField )
+ return;
+
+ InfoBox( 0, String( RTL_CONSTASCII_USTRINGPARAM( "Feld selektiert!" ) ) ).Execute();
+}
+
+
+class MyView : public WorkWindow
+{
+private:
+ EditEngine* pEditEngine;
+ EditView* pEditView;
+
+public:
+ MyView( Window* pParent, EditEngine* pEditEngine );
+ ~MyView();
+
+ virtual void Paint( const Rectangle& );
+ virtual void Resize();
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ BOOL Drop( const DropEvent& rEvt );
+ BOOL QueryDrop( DropEvent& rEvt );
+};
+
+MyView::MyView( Window* pParent, EditEngine* pEE ) : WorkWindow( pParent, WinBits( WB_STDWORK ) )
+{
+ pEditEngine = pEE;
+ pEditView = new EditView( pEditEngine, this );
+ pEditEngine->InsertView( pEditView );
+ SetText( String( RTL_CONSTASCII_USTRINGPARAM( "Another View..." ) ) );
+// EnableDrop();
+ SetBackgroundBrush( Brush( Color( COL_LIGHTBLUE ) ) );
+ Show();
+}
+
+MyView::~MyView()
+{
+ pEditEngine->RemoveView( pEditView );
+ delete pEditView;
+}
+
+void __EXPORT MyView::Paint( const Rectangle& rRec )
+{
+ pEditView->Paint( rRec );
+}
+
+void __EXPORT MyView::Resize()
+{
+ Size aPaperSz( GetOutputSize() );
+// aPaperSz.Width() /= 2;
+// aPaperSz.Height() /= 2;
+ pEditView->SetOutputArea( Rectangle( Point( 0,0 ), aPaperSz ) );
+ pEditView->SetVisArea( Rectangle( Point( 0,0 ), aPaperSz ) );
+ Invalidate();
+ pEditView->ShowCursor();
+}
+
+ // --- MyView::KeyInput() --------------------------------------
+void __EXPORT MyView::KeyInput( const KeyEvent& rKEvt )
+{
+ pEditView->PostKeyEvent( rKEvt );
+}
+
+void __EXPORT MyView::MouseMove( const MouseEvent& rMEvt )
+{
+ Point aPos = PixelToLogic( rMEvt.GetPosPixel() );
+ if ( pEditView->GetOutputArea().IsInside( aPos ) )
+ SetPointer( pEditView->GetPointer() );
+ else
+ SetPointer( Pointer() );
+
+
+ pEditView->MouseMove( rMEvt );
+}
+
+void __EXPORT MyView::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ pEditView->MouseButtonDown( rMEvt );
+}
+
+void __EXPORT MyView::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ pEditView->MouseButtonUp( rMEvt );
+}
+
+void __EXPORT MyView::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_STARTDRAG )
+ pEditView->Command(rCEvt);
+}
+
+BOOL __EXPORT MyView::Drop( const DropEvent& rEvt )
+{
+ return pEditView->Drop( rEvt );
+}
+
+BOOL __EXPORT MyView::QueryDrop( DropEvent& rEvt )
+{
+ return pEditView->QueryDrop( rEvt );
+}
+
+// --- class EditMainWindow --------------------------------------------
+DECLARE_LIST( ViewList, MyView* );
+
+class EditViewWindow : public Window
+{
+private:
+ MyEditEngine* pEditEngine;
+ EditView* pEditView;
+ Pointer aStdPtr;
+ Pointer aURLPtr;
+ WorkWindow* pTmpWindow;
+ ViewList aViewList;
+
+ XubString aTestStr;
+
+
+public:
+ EditViewWindow( Window* pParent );
+ ~EditViewWindow();
+
+ virtual void Paint( const Rectangle& );
+ virtual void Resize();
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ void MarkOutputArea();
+ BOOL Drop( const DropEvent& rEvt );
+ BOOL QueryDrop( DropEvent& rEvt );
+
+ EditView* GetEditView() { return pEditView; }
+};
+
+class EditMainWindow : public WorkWindow
+{
+private:
+ ToolBox aToolBox;
+ ScrollBar aHScrollBar;
+ ScrollBar aVScrollBar;
+ EditViewWindow aViewWin;
+ Printer* pPrinter;
+
+ WorkWindow* pTmpWindow;
+
+ EditTextObject* pRTFObj;
+ EditTextObject* pBinObj;
+
+ FileDialog* pFileDialogBox;
+ FileDialog* pFileDialogBox2;
+
+
+protected:
+ void SetScrollBars();
+ void SetScrollBarRanges();
+ void CreatePolygon();
+
+ virtual void GetFocus();
+
+public:
+ EditMainWindow();
+ ~EditMainWindow();
+
+ virtual void Resize();
+
+ DECL_LINK( TBSelect, ToolBox * );
+ void UpdateToolBox();
+
+ DECL_LINK( HScrollHdl, ScrollBar * );
+ DECL_LINK( VScrollHdl, ScrollBar * );
+ DECL_LINK( ShowStatus, EditStatus * );
+ void SetTitle();
+};
+
+
+EditMainWindow::~EditMainWindow()
+{
+ delete pRTFObj;
+ delete pBinObj;
+ delete pFileDialogBox;
+ delete pFileDialogBox2;
+ delete pTmpWindow;
+ delete pPrinter;
+}
+
+EditMainWindow::EditMainWindow() :
+ WorkWindow( NULL, WB_APP | WB_STDWORK | WB_SVLOOK | WB_CLIPCHILDREN ) ,
+ aViewWin( this ),
+ aToolBox( this, WinBits( WB_BORDER | WB_SVLOOK | WB_SCROLL | WB_LINESPACING ) ),
+ aHScrollBar( this, WinBits( WB_HSCROLL | WB_DRAG ) ),
+ aVScrollBar( this, WinBits( WB_VSCROLL | WB_DRAG ) )
+{
+ pRTFObj = 0;
+ pBinObj = 0;
+
+ pFileDialogBox = new FileDialog( this, WinBits( WB_OPEN | WB_SVLOOK ) );
+ pFileDialogBox->SetText( String( RTL_CONSTASCII_USTRINGPARAM( "Open" ) ) );
+ pFileDialogBox->AddFilter( String( RTL_CONSTASCII_USTRINGPARAM( "Text" )), String( RTL_CONSTASCII_USTRINGPARAM( "*.txt" ) ) );
+ pFileDialogBox->AddFilter( String( RTL_CONSTASCII_USTRINGPARAM( "Rich Text Format" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.rtf" ) ) );
+ pFileDialogBox->AddFilter( String( RTL_CONSTASCII_USTRINGPARAM( "HTML" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.htm;*.html" ) ) );
+ pFileDialogBox->SetCurFilter( String( RTL_CONSTASCII_USTRINGPARAM( "Rich Text Format" ) ) );
+
+ pFileDialogBox2 = new FileDialog( this, WinBits( WB_SAVEAS| WB_SVLOOK ) );
+ pFileDialogBox2->SetText( String( RTL_CONSTASCII_USTRINGPARAM( "Save" ) ) );
+ pFileDialogBox2->AddFilter( String( RTL_CONSTASCII_USTRINGPARAM( "Text" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.txt" ) ) );
+ pFileDialogBox2->AddFilter( String( RTL_CONSTASCII_USTRINGPARAM( "Rich Text Format" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.rtf" ) ) );
+ pFileDialogBox2->AddFilter( String( RTL_CONSTASCII_USTRINGPARAM( "HTML" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "*.htm" ) ) );
+ pFileDialogBox2->SetCurFilter( String( RTL_CONSTASCII_USTRINGPARAM( "Rich Text Format" ) ) );
+
+ pPrinter = new Printer;
+ pPrinter->SetMapMode( MAP_100TH_MM );
+ aViewWin.SetMapMode( pPrinter->GetMapMode() );
+ aViewWin.GetEditView()->GetEditEngine()->SetRefDevice( pPrinter );
+
+
+
+ pTmpWindow = new WorkWindow( this, WB_STDWORK );
+
+ aToolBox.SetButtonType( BUTTON_TEXT );
+ aToolBox.SetLineCount( 4 );
+
+ {
+ aToolBox.InsertItem( TB_OPEN, String( RTL_CONSTASCII_USTRINGPARAM( "Open" ) ) );
+ aToolBox.InsertItem( TB_SAVE, String( RTL_CONSTASCII_USTRINGPARAM( "Save" ) ) );
+ aToolBox.InsertItem( TB_PRINT, String( RTL_CONSTASCII_USTRINGPARAM( "Print" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_LEFT, String( RTL_CONSTASCII_USTRINGPARAM( "L" ) ) );
+ aToolBox.InsertItem( TB_CENTER, String( RTL_CONSTASCII_USTRINGPARAM( "C" ) ) );
+ aToolBox.InsertItem( TB_RIGHT, String( RTL_CONSTASCII_USTRINGPARAM( "R" ) ) );
+ aToolBox.InsertItem( TB_BLOCK, String( RTL_CONSTASCII_USTRINGPARAM( "B" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_UNDO, String( RTL_CONSTASCII_USTRINGPARAM( "Undo" ) ) );
+ aToolBox.InsertItem( TB_REDO, String( RTL_CONSTASCII_USTRINGPARAM( "Redo" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_FONT1, String( RTL_CONSTASCII_USTRINGPARAM( "Font1" ) ) );
+ aToolBox.InsertItem( TB_FONT2, String( RTL_CONSTASCII_USTRINGPARAM( "Font2" ) ) );
+ aToolBox.InsertItem( TB_DEFTAB, String( RTL_CONSTASCII_USTRINGPARAM( "DefTab" ) ) );
+ aToolBox.InsertBreak();
+ aToolBox.InsertItem( TB_OPEN2, String( RTL_CONSTASCII_USTRINGPARAM( "Read" ) ) );
+ aToolBox.InsertItem( TB_SAVE2, String( RTL_CONSTASCII_USTRINGPARAM( "Write" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_FONT, String( RTL_CONSTASCII_USTRINGPARAM( "XXX" ) ) );
+ aToolBox.InsertItem( TB_ITALIC, String( RTL_CONSTASCII_USTRINGPARAM( "K" ) ) );
+ aToolBox.InsertItem( TB_BOLD, String( RTL_CONSTASCII_USTRINGPARAM( "F" ) ) );
+ aToolBox.InsertItem( TB_UNDERLINE, String( RTL_CONSTASCII_USTRINGPARAM( "U" ) ) );
+ aToolBox.InsertItem( TB_SUPER, String( RTL_CONSTASCII_USTRINGPARAM( "SP" ) ) );
+ aToolBox.InsertItem( TB_SUB, String( RTL_CONSTASCII_USTRINGPARAM( "SB" ) ) );
+ aToolBox.InsertItem( TB_PKERN, String( RTL_CONSTASCII_USTRINGPARAM( "PK" ) ) );
+ aToolBox.InsertItem( TB_KERN, String( RTL_CONSTASCII_USTRINGPARAM( "TK" ) ) );
+ aToolBox.InsertItem( TB_WLM, String( RTL_CONSTASCII_USTRINGPARAM( "W!" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_BLACK, String( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) );
+ aToolBox.InsertItem( TB_GREEN, String( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) );
+ aToolBox.InsertItem( TB_RED, String( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_SBL, String( RTL_CONSTASCII_USTRINGPARAM( "SBL" ) ) );
+ aToolBox.InsertItem( TB_SBSA, String( RTL_CONSTASCII_USTRINGPARAM( "SBSA" ) ) );
+ aToolBox.InsertItem( TB_LR, String( RTL_CONSTASCII_USTRINGPARAM( "LR" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_DRAW, String( RTL_CONSTASCII_USTRINGPARAM( "Draw!" ) ) );
+ aToolBox.InsertItem( TB_ROTATE, String( RTL_CONSTASCII_USTRINGPARAM( "Rotate!" ) ) );
+ aToolBox.InsertItem( TB_MOVE, String( RTL_CONSTASCII_USTRINGPARAM( "Move->2" ) ) );
+ aToolBox.InsertItem( TB_PARATTR1, String( RTL_CONSTASCII_USTRINGPARAM( "ParaAttr0" ) ) );
+ aToolBox.InsertItem( TB_ATTRIBS, String( RTL_CONSTASCII_USTRINGPARAM( "GetAttribs" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_INSFLD, String( RTL_CONSTASCII_USTRINGPARAM( "InsFld" ) ) );
+ aToolBox.InsertItem( TB_UPDFLD, String( RTL_CONSTASCII_USTRINGPARAM( "UpdFld" ) ) );
+ }
+ aToolBox.InsertBreak();
+ {
+ aToolBox.InsertItem( TB_ONLINESPELL, String( RTL_CONSTASCII_USTRINGPARAM( "Spell" ) ) );
+ aToolBox.InsertItem( TB_REDLINES, String( RTL_CONSTASCII_USTRINGPARAM( "RedLine" ) ) );
+ aToolBox.InsertItem( TB_AUTOCORRECT, String( RTL_CONSTASCII_USTRINGPARAM( "Auto*" ) ) );
+ aToolBox.InsertItem( TB_HYPH, String( RTL_CONSTASCII_USTRINGPARAM( "Hyph" ) ) );
+ aToolBox.InsertItem( TB_STDSEL, String( RTL_CONSTASCII_USTRINGPARAM( "StdSel" ) ) );
+ aToolBox.InsertItem( TB_FLAT, String( RTL_CONSTASCII_USTRINGPARAM( "FlatMode" ) ) );
+ aToolBox.InsertItem( TB_OUTL, String( RTL_CONSTASCII_USTRINGPARAM( "Ocomphelper" ) ) );
+ aToolBox.InsertItem( TB_POLY, String( RTL_CONSTASCII_USTRINGPARAM( "Poly" ) ) );
+ aToolBox.InsertItem( TB_COLORS, String( RTL_CONSTASCII_USTRINGPARAM( "Colors" ) ));
+ aToolBox.InsertItem( TB_IDLE, String( RTL_CONSTASCII_USTRINGPARAM( "Idle!" ) ) );
+ aToolBox.InsertItem( TB_INSERT, String( RTL_CONSTASCII_USTRINGPARAM( "Insert" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_BINOBJ1, String( RTL_CONSTASCII_USTRINGPARAM( ">BINObj" ) ) );
+ aToolBox.InsertItem( TB_BINOBJ1b, String( RTL_CONSTASCII_USTRINGPARAM( ">>BINObj" ) ) );
+ aToolBox.InsertItem( TB_BINOBJ2b, String( RTL_CONSTASCII_USTRINGPARAM( "<<BINObj" ) ) );
+ aToolBox.InsertItem( TB_CLONEBIN, String( RTL_CONSTASCII_USTRINGPARAM( "Clone" ) ) );
+ aToolBox.InsertSeparator();
+ aToolBox.InsertItem( TB_BINOBJ3, String( RTL_CONSTASCII_USTRINGPARAM( "StoreBin" ) ) );
+ aToolBox.InsertItem( TB_BINOBJ4, String( RTL_CONSTASCII_USTRINGPARAM( "CreatBin" ) ) );
+ }
+
+ aToolBox.SetPosPixel( Point( 0, 0 ) );
+ aToolBox.SetSelectHdl( LINK( this, EditMainWindow, TBSelect ) );
+
+ SetBackgroundBrush( Brush( Color( COL_LIGHTGRAY ) ) );
+
+ SetPen( PEN_NULL );
+ Show();
+
+ aVScrollBar.SetScrollHdl ( LINK( this, EditMainWindow, VScrollHdl ) );
+ aVScrollBar.SetLineSize( 300 );
+ aVScrollBar.SetPageSize( 2000 );
+ aHScrollBar.SetScrollHdl ( LINK( this, EditMainWindow, HScrollHdl ) );
+ aHScrollBar.SetLineSize( 300 );
+ aHScrollBar.SetPageSize( 2000 );
+ aHScrollBar.Enable();
+ aVScrollBar.Enable();
+
+ aViewWin.GetEditView()->GetEditEngine()->SetStatusEventHdl( LINK( this, EditMainWindow, ShowStatus ) );
+
+ SetTitle();
+
+ UpdateToolBox();
+ aToolBox.Show();
+ aViewWin.Show();
+}
+
+void EditMainWindow::SetTitle()
+{
+ String aHeading( String( RTL_CONSTASCII_USTRINGPARAM( "SvEdit! - Zoom " ) ) );
+ aHeading += String::CreateFromInt32(nZoom);
+ aHeading += '%';
+ EditEngine* pEditEngine = aViewWin.GetEditView()->GetEditEngine();
+ if ( pEditEngine->GetControlWord() & EE_CNTRL_STRETCHING )
+ {
+ USHORT nX, nY;
+ pEditEngine->GetGlobalCharStretching( nX, nY );
+ aHeading += String( RTL_CONSTASCII_USTRINGPARAM( ", Stretch=(" ) );
+ aHeading += String::CreateFromInt32(nX);
+ aHeading += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
+ aHeading += String::CreateFromInt32(nY);
+ aHeading += ')';
+ }
+ SetText( aHeading );
+}
+
+void EditMainWindow::UpdateToolBox()
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ EditEngine* pEditEngine = pEditView->GetEditEngine();
+ SfxItemSet aCurSet( pEditView->GetAttribs() );
+
+ ULONG nControl = pEditEngine->GetControlWord();
+ aToolBox.EnableItem( TB_UNDO, (BOOL)pEditEngine->GetUndoManager().GetUndoActionCount() );
+ aToolBox.EnableItem( TB_REDO, (BOOL)pEditEngine->GetUndoManager().GetRedoActionCount() );
+ aToolBox.EnableItem( TB_BINOBJ2b, (BOOL)(long)pBinObj );
+ aToolBox.EnableItem( TB_MOVE, pEditEngine->GetParagraphCount() > 3 );
+ aToolBox.CheckItem( TB_ONLINESPELL, nControl & EE_CNTRL_ONLINESPELLING ? TRUE : FALSE );
+ aToolBox.CheckItem( TB_AUTOCORRECT, nControl & EE_CNTRL_AUTOCORRECT ? TRUE : FALSE );
+// aToolBox.CheckItem( TB_HYPH, nControl & EE_CNTRL_HYPHENATE ? TRUE : FALSE );
+ aToolBox.CheckItem( TB_REDLINES, nControl & EE_CNTRL_NOREDLINES ? FALSE : TRUE );
+ aToolBox.CheckItem( TB_STDSEL, pEditView->GetSelectionMode() == EE_SELMODE_STD );
+ aToolBox.CheckItem( TB_FLAT, pEditEngine->IsFlatMode() );
+ aToolBox.CheckItem( TB_OUTL, ( nControl & EE_CNTRL_OUTLINER ) ? TRUE : FALSE );
+ aToolBox.CheckItem( TB_POLY, pEditEngine->GetPolygon() ? TRUE : FALSE );
+ aToolBox.CheckItem( TB_COLORS, ( nControl & EE_CNTRL_NOCOLORS ) ? FALSE : TRUE );
+ aToolBox.CheckItem( TB_IDLE, pEditEngine->IsIdleFormatterEnabled() );
+ aToolBox.CheckItem( TB_INSERT, pEditView->IsInsertMode() );
+
+ for ( USHORT nWhich = EE_ITEMS_START; nWhich <= EE_ITEMS_END; nWhich++)
+ {
+// if ( aCurSet.GetItemState( nWhich ) == SFX_ITEM_OFF )
+// ;
+// else if ( aCurSet.GetItemState( nWhich ) == SFX_ITEM_DONTCARE )
+// ;
+// else if ( aCurSet.GetItemState( nWhich ) == SFX_ITEM_ON )
+ {
+ const SfxPoolItem& rItem = aCurSet.Get( nWhich );
+ switch ( nWhich )
+ {
+ case EE_PARA_HYPHENATE:
+ aToolBox.CheckItem( TB_HYPH, ((SfxBoolItem&)rItem).GetValue() != 0 );
+ break;
+ case EE_PARA_LRSPACE:
+ aToolBox.CheckItem( TB_LR, ((SvxLRSpaceItem&)rItem).GetTxtLeft() != 0 );
+ break;
+ case EE_PARA_ULSPACE:
+ aToolBox.CheckItem( TB_SBSA, ((SvxULSpaceItem&)rItem).GetUpper() != 0 );
+ break;
+ case EE_PARA_SBL:
+ aToolBox.CheckItem( TB_SBL, ((SvxLineSpacingItem&)rItem).GetPropLineSpace() != 100 );
+ break;
+ case EE_PARA_JUST:
+ {
+ SvxAdjust e = ((SvxAdjustItem&)rItem).GetAdjust();
+ aToolBox.CheckItem( TB_LEFT, e == SVX_ADJUST_LEFT );
+ aToolBox.CheckItem( TB_RIGHT, e == SVX_ADJUST_RIGHT);
+ aToolBox.CheckItem( TB_CENTER, e == SVX_ADJUST_CENTER);
+ aToolBox.CheckItem( TB_BLOCK, e == SVX_ADJUST_BLOCK );
+ }
+ break;
+ case EE_PARA_TABS:
+ break;
+ case EE_CHAR_COLOR:
+ {
+ Color aColor( ((SvxColorItem&)rItem).GetValue() );
+ aToolBox.CheckItem( TB_BLACK, aColor == COL_BLACK );
+ aToolBox.CheckItem( TB_GREEN, aColor == COL_GREEN );
+ aToolBox.CheckItem( TB_RED, aColor == COL_RED );
+ }
+ break;
+ case EE_CHAR_FONTINFO:
+ {
+ FontFamily e = ((SvxFontItem&)rItem).GetFamily();
+ aToolBox.CheckItem( TB_FONT1, e == FAMILY_ROMAN );
+ aToolBox.CheckItem( TB_FONT2, e == FAMILY_SWISS );
+ }
+ break;
+ case EE_CHAR_FONTHEIGHT:
+ break;
+ case EE_CHAR_WEIGHT:
+ {
+ FontWeight e = ((SvxWeightItem&)rItem).GetWeight();
+ aToolBox.CheckItem( TB_BOLD, e == WEIGHT_BOLD );
+ }
+ break;
+ case EE_CHAR_UNDERLINE:
+ {
+ aToolBox.CheckItem( TB_UNDERLINE, ((SvxUnderlineItem&)rItem).GetLineStyle() );
+ }
+ break;
+ case EE_CHAR_WLM:
+ {
+ aToolBox.CheckItem( TB_WLM, ((SvxWordLineModeItem&)rItem).GetValue() );
+ }
+ break;
+ case EE_CHAR_PAIRKERNING:
+ {
+ aToolBox.CheckItem( TB_PKERN, ((SvxAutoKernItem&)rItem).GetValue() );
+ }
+ break;
+ case EE_CHAR_KERNING:
+ {
+ aToolBox.CheckItem( TB_KERN, (BOOL)((SvxKerningItem&)rItem).GetValue() );
+ }
+ break;
+ case EE_CHAR_ESCAPEMENT:
+ {
+ aToolBox.CheckItem( TB_SUPER, ((SvxEscapementItem&)rItem).GetEsc() > 0 );
+ aToolBox.CheckItem( TB_SUB, ((SvxEscapementItem&)rItem).GetEsc() < 0 );
+ }
+ break;
+ case EE_CHAR_STRIKEOUT:
+ break;
+ case EE_CHAR_ITALIC:
+ {
+ FontItalic e = ((SvxPostureItem&)rItem).GetPosture();
+ aToolBox.CheckItem( TB_ITALIC, e == ITALIC_NORMAL );
+ }
+ break;
+ case EE_CHAR_OUTLINE:
+ break;
+ case EE_CHAR_SHADOW:
+ break;
+ }
+ }
+ }
+}
+
+IMPL_LINK( EditMainWindow, TBSelect, ToolBox *, p )
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ EditEngine* pEditEngine = pEditView->GetEditEngine();
+ USHORT nId = aToolBox.GetCurItemId();
+ BOOL bChecked = aToolBox.IsItemChecked( nId );
+ SfxPoolItem* pNewItem = 0;
+ switch ( nId )
+ {
+ case TB_LEFT: pNewItem = new SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST );
+ break;
+ case TB_RIGHT: pNewItem = new SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST );
+ break;
+ case TB_CENTER: pNewItem = new SvxAdjustItem( SVX_ADJUST_CENTER, EE_PARA_JUST );
+ break;
+ case TB_BLOCK: pNewItem = new SvxAdjustItem( SVX_ADJUST_BLOCK, EE_PARA_JUST );
+ break;
+ case TB_HYPH: pNewItem = new SfxBoolItem( EE_PARA_HYPHENATE, !bChecked );
+ break;
+ case TB_UNDO: pEditView->Undo();
+ pEditView->ShowCursor();
+ break;
+ case TB_REDO: pEditView->Redo();
+ pEditView->ShowCursor();
+ break;
+ case TB_ONLINESPELL: {
+ ULONG nControl = pEditView->GetEditEngine()->GetControlWord();
+ if ( bChecked )
+ nControl = nControl & ~EE_CNTRL_ONLINESPELLING;
+ else
+ nControl = nControl | EE_CNTRL_ONLINESPELLING;
+ pEditView->GetEditEngine()->SetControlWord( nControl );
+ }
+ break;
+ case TB_REDLINES: {
+ ULONG nControl = pEditView->GetEditEngine()->GetControlWord();
+ if ( !bChecked )
+ nControl = nControl & ~EE_CNTRL_NOREDLINES;
+ else
+ nControl = nControl | EE_CNTRL_NOREDLINES;
+ pEditView->GetEditEngine()->SetControlWord( nControl );
+ }
+ break;
+ case TB_AUTOCORRECT: {
+ ULONG nControl = pEditView->GetEditEngine()->GetControlWord();
+ if ( bChecked )
+ nControl = nControl & ~EE_CNTRL_AUTOCORRECT;
+ else
+ nControl = nControl | EE_CNTRL_AUTOCORRECT;
+ pEditView->GetEditEngine()->SetControlWord( nControl );
+ }
+ break;
+ case TB_STDSEL: if ( bChecked )
+ pEditView->SetSelectionMode( EE_SELMODE_TXTONLY );
+ else
+ pEditView->SetSelectionMode( EE_SELMODE_STD );
+ break;
+ case TB_FLAT: pEditEngine->SetFlatMode( !pEditEngine->IsFlatMode() );
+ break;
+ case TB_COLORS: {
+ ULONG nControl = pEditView->GetEditEngine()->GetControlWord();
+ if ( bChecked )
+ nControl = nControl | EE_CNTRL_NOCOLORS;
+ else
+ nControl = nControl & ~EE_CNTRL_NOCOLORS;
+ pEditView->GetEditEngine()->SetControlWord( nControl );
+ }
+// aViewWin.Invalidate();
+ pEditView->GetEditEngine()->Draw( pEditView->GetWindow(), pEditView->GetOutputArea(), pEditView->GetVisArea().TopLeft() );
+ break;
+ case TB_OUTL: {
+ ULONG nControl = pEditView->GetEditEngine()->GetControlWord();
+ if ( !bChecked )
+ nControl = nControl | EE_CNTRL_OUTLINER;
+ else
+ nControl = nControl & ~EE_CNTRL_OUTLINER;
+ pEditView->GetEditEngine()->SetControlWord( nControl );
+ }
+ break;
+ case TB_POLY: {
+ if ( !bChecked )
+ CreatePolygon();
+ else
+ pEditView->GetEditEngine()->ClearPolygon();
+ }
+ break;
+ case TB_IDLE: pEditEngine->EnableIdleFormatter( !pEditEngine->IsIdleFormatterEnabled() );
+ break;
+ case TB_INSFLD: {
+ static BYTE nFld = 0;
+ if ( nFld > 2 )
+ nFld = 0;
+ if ( nFld == 0 )
+ {
+ SvxFieldItem aFld( SvxURLField( String( RTL_CONSTASCII_USTRINGPARAM( "www.mopo.de" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "Bla" ) ), SVXURLFORMAT_REPR ), EE_FEATURE_FIELD );
+ pEditView->InsertField( aFld );
+ }
+ else if ( nFld == 1 )
+ pEditView->InsertField( SvxFieldItem( SvxURLField( String( RTL_CONSTASCII_USTRINGPARAM( "www.mopo.de" ) ), String( RTL_CONSTASCII_USTRINGPARAM( "Morgenpost" ) ), SVXURLFORMAT_URL ), EE_FEATURE_FIELD ) );
+ else if ( nFld == 2 )
+ pEditView->InsertField( SvxFieldItem( SvxDateField( Date( 1,1,1995 ), SVXDATETYPE_FIX, SVXDATEFORMAT_D ), EE_FEATURE_FIELD ) );
+
+ nFld++;
+ }
+ break;
+ case TB_UPDFLD: pEditEngine->UpdateFields();
+ break;
+ case TB_INSERT: pEditView->SetInsertMode( !pEditView->IsInsertMode() );
+ break;
+ case TB_FONT1: pNewItem = new SvxFontItem( FAMILY_ROMAN, String( RTL_CONSTASCII_USTRINGPARAM( "Times New Roman" ) ), String(), PITCH_DONTKNOW, RTL_TEXTENCODING_MS_1252, EE_CHAR_FONTINFO );
+ break;
+ case TB_FONT2: pNewItem = new SvxFontItem( FAMILY_SWISS, String( RTL_CONSTASCII_USTRINGPARAM( "Helv" ) ), String(), PITCH_DONTKNOW, RTL_TEXTENCODING_MS_1252, EE_CHAR_FONTINFO );
+ break;
+/*
+ case TB_FONT:
+ {
+ FontDialog* pDlg = new FontDialog( this, WB_SVLOOK );
+ pDlg->SetPrinter( pPrinter );
+ Font aFont = pEditEngine->CreateFontFromItemSet( pEditView->GetAttribs() );
+ MapMode aPntMode( MAP_POINT );
+ MapMode aCurrent( aViewWin.GetMapMode() );
+ Size aSz( aViewWin.LogicToLogic( aFont.GetSize(), &aCurrent, &aPntMode ) );
+ aSz.Width() *= 10;
+ aSz.Height() *= 10;
+ aFont.SetSize( aSz );
+ pDlg->SetSelectFont( aFont );
+ if ( pDlg->Execute() )
+ {
+ Font aNewFont( pDlg->GetSelectFont() );
+ aSz = aViewWin.LogicToLogic( aNewFont.GetSize(), &aPntMode, &aCurrent );
+ aSz.Width() /= 10;
+ aSz.Height() /= 10;
+ aNewFont.SetSize( aSz );
+
+ SfxItemSet aSet( pEditEngine->GetEmptyItemSet() );
+
+ pEditEngine->SetFontInfoInItemSet( aSet, aNewFont );
+ pEditView->SetAttribs( aSet );
+ }
+ delete pDlg;
+ }
+ break;
+*/
+ case TB_BOLD: if ( bChecked )
+ pNewItem = new SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT);
+ else
+ pNewItem = new SvxWeightItem( WEIGHT_BOLD, EE_CHAR_WEIGHT);
+ break;
+ case TB_ITALIC: if ( bChecked )
+ pNewItem = new SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC );
+ else
+ pNewItem = new SvxPostureItem( ITALIC_NORMAL, EE_CHAR_ITALIC );
+ break;
+ case TB_UNDERLINE: if ( bChecked )
+ pNewItem = new SvxUnderlineItem( UNDERLINE_NONE, EE_CHAR_UNDERLINE );
+ else
+ pNewItem = new SvxUnderlineItem( UNDERLINE_SINGLE, EE_CHAR_UNDERLINE );
+ break;
+ case TB_WLM: pNewItem = new SvxWordLineModeItem( !bChecked, EE_CHAR_WLM );
+ break;
+ case TB_PKERN: pNewItem = new SvxAutoKernItem( !bChecked, EE_CHAR_PAIRKERNING );
+ break;
+ case TB_KERN: if ( bChecked )
+ pNewItem = new SvxKerningItem( 0, EE_CHAR_KERNING );
+ else
+ pNewItem = new SvxKerningItem( 100, EE_CHAR_KERNING);
+ break;
+ case TB_SUPER: if ( bChecked )
+ pNewItem = new SvxEscapementItem( SVX_ESCAPEMENT_OFF, EE_CHAR_ESCAPEMENT);
+ else
+// pNewItem = new SvxEscapementItem( SVX_ESCAPEMENT_SUPERSCRIPT, EE_CHAR_ESCAPEMENT);
+ pNewItem = new SvxEscapementItem( 50, 100, EE_CHAR_ESCAPEMENT );
+ break;
+ case TB_SUB: if ( bChecked )
+ pNewItem = new SvxEscapementItem( SVX_ESCAPEMENT_OFF, EE_CHAR_ESCAPEMENT);
+ else
+// pNewItem = new SvxEscapementItem( SVX_ESCAPEMENT_SUBSCRIPT, EE_CHAR_ESCAPEMENT);
+ pNewItem = new SvxEscapementItem( -50, 100, EE_CHAR_ESCAPEMENT );
+ break;
+ case TB_GREEN: pNewItem = new SvxColorItem( Color(COL_GREEN), EE_CHAR_COLOR);
+ break;
+ case TB_RED: pNewItem = new SvxColorItem( Color(COL_RED), EE_CHAR_COLOR);
+ break;
+ case TB_BLACK: pNewItem = new SvxColorItem( Color(COL_BLACK), EE_CHAR_COLOR);
+ break;
+ case TB_SBL: pNewItem = new SvxLineSpacingItem( 0, EE_PARA_SBL );
+ if ( bChecked )
+ {
+ ((SvxLineSpacingItem*)pNewItem)->SetInterLineSpace( 0 );
+ }
+ else
+ {
+ ((SvxLineSpacingItem*)pNewItem)->SetPropLineSpace( 150 );
+ }
+ break;
+ case TB_SBSA: pNewItem = new SvxULSpaceItem( EE_PARA_ULSPACE );
+ if ( !bChecked )
+ {
+ ((SvxULSpaceItem*)pNewItem)->SetUpper( 400 );
+ ((SvxULSpaceItem*)pNewItem)->SetLower( 400 );
+ }
+ break;
+ case TB_LR: pNewItem = new SvxLRSpaceItem( EE_PARA_LRSPACE );
+ if ( !bChecked )
+ {
+ ((SvxLRSpaceItem*)pNewItem)->SetTxtLeft( 1000 );
+ ((SvxLRSpaceItem*)pNewItem)->SetTxtFirstLineOfst( -500 );
+ ((SvxLRSpaceItem*)pNewItem)->SetRight( 500 );
+ }
+ break;
+ case TB_DEFTAB: if ( bChecked )
+ pEditEngine->SetDefTab( 2000 );
+ else
+ pEditEngine->SetDefTab( 600 );
+ pEditView->ShowCursor();
+ aToolBox.CheckItem( nId, !bChecked );
+ break;
+ case TB_DRAW: {
+ pTmpWindow->SetMapMode( aViewWin.GetMapMode() );
+ pTmpWindow->SetBackgroundBrush( Brush( Color( COL_GRAY ) ) );
+ pTmpWindow->SetFillInBrush( Brush( Color( COL_LIGHTGRAY ) ) );
+ pTmpWindow->Show();
+ pTmpWindow->Invalidate();
+ pTmpWindow->Update();
+ pTmpWindow->DrawText( Point( 20, 20 ), String( RTL_CONSTASCII_USTRINGPARAM( "It's a Test..." ) ) );
+ Rectangle aRect( Point( 500, 500 ), Size( 10000, 4000 ) );
+ pTmpWindow->DrawRect( aRect );
+ pEditEngine->Draw( pTmpWindow, aRect, Point( 0, 0 ) );
+ nRotation = 0;
+ }
+ break;
+ case TB_ROTATE: {
+ nRotation += 100;
+ if ( nRotation == 3600 )
+ nRotation = 0;
+ pTmpWindow->SetMapMode( aViewWin.GetMapMode() );
+ pTmpWindow->SetBackgroundBrush( Brush( Color( COL_LIGHTGRAY ) ) );
+ pTmpWindow->SetFillInBrush( Brush( Color( COL_LIGHTGRAY ) ) );
+ pTmpWindow->Show();
+ pTmpWindow->Invalidate();
+ pTmpWindow->Update();
+ pTmpWindow->DrawText( Point( 20, 20 ), String( RTL_CONSTASCII_USTRINGPARAM( "It's a Test..." ) ) );
+ Rectangle aRect( Point( 500, 500 ), Size( 10000, 4000 ) );
+ pEditEngine->Draw( pTmpWindow, Point( 2000, 4000 ), nRotation );
+ }
+ break;
+
+ case TB_MOVE:
+ {
+ ESelection aESel = pEditView->GetSelection();
+ USHORT nStartPara = Min( aESel.nStartPara, aESel.nEndPara );
+ USHORT nEndPara = Max( aESel.nStartPara, aESel.nEndPara );
+ pEditView->MoveParagraphs( Range(nStartPara,nEndPara), 2 );
+ }
+ break;
+ case TB_PARATTR1:
+ {
+ pEditEngine->SetUpdateMode( FALSE );
+ USHORT nPara = 0;
+ SfxItemSet aSet( pEditEngine->GetEmptyItemSet() );
+ aSet.Put( SvxFontItem( FAMILY_DECORATIVE, String( RTL_CONSTASCII_USTRINGPARAM( "StarBats" ) ), String(),PITCH_DONTKNOW, RTL_TEXTENCODING_MS_1252, EE_CHAR_FONTINFO ) );
+ aSet.Put( SvxColorItem( Color(COL_MAGENTA), EE_CHAR_COLOR ) );
+ aSet.Put( SvxFontHeightItem(600, 100, EE_CHAR_FONTHEIGHT) );
+ aSet.Put( SvxPostureItem( ITALIC_NORMAL, EE_CHAR_ITALIC ) );
+ aSet.Put( SvxLRSpaceItem( 0, 0, 1000, 0, EE_PARA_LRSPACE ) );
+ pEditView->SetParaAttribs( aSet, nPara );
+ pEditEngine->SetUpdateMode( TRUE );
+ pEditView->ShowCursor();
+ }
+ break;
+ case TB_BINOBJ1:
+ {
+ delete pBinObj;
+ pBinObj = pEditEngine->CreateTextObject();
+ }
+ break;
+ case TB_BINOBJ1b:
+ {
+ delete pBinObj;
+ pBinObj = pEditView->CreateTextObject();
+ }
+ break;
+ case TB_CLONEBIN:
+ {
+ if ( pBinObj )
+ {
+ EditTextObject* p = pBinObj->Clone();
+ delete pBinObj;
+ pBinObj = p;
+ }
+ }
+ break;
+ case TB_BINOBJ2b:
+ {
+ if ( pBinObj )
+ {
+ pEditView->InsertText( *pBinObj );
+ }
+ }
+ break;
+ case TB_BINOBJ3:
+ {
+ if ( !pFileDialogBox2->Execute() )
+ return FALSE;
+ DirEntry aDirEntry( pFileDialogBox2->GetPath() );
+ SvFileStream aStrm( aDirEntry.GetFull(), STREAM_WRITE | STREAM_TRUNC );
+ EditTextObject* pTmpObj = pEditEngine->CreateTextObject();
+ pTmpObj->Store( aStrm );
+ DBG_ASSERT( !aStrm.GetError(), "Store: Error!" );
+ delete pTmpObj;
+ }
+ break;
+ case TB_BINOBJ4:
+ {
+ if ( !pFileDialogBox->Execute() )
+ return FALSE;
+ DirEntry aDirEntry( pFileDialogBox->GetPath() );
+ SvFileStream aStrm( aDirEntry.GetFull(), STREAM_READ );
+ delete pBinObj;
+ pBinObj = EditTextObject::Create( aStrm );
+// EditTextObject* pTmpObj = pEditEngine->CreateTextObject( aStrm );
+// pEditEngine->SetText( *pTmpObj );
+// pEditView->ShowCursor();
+// delete pTmpObj;
+ }
+ break;
+ case TB_OPEN:
+ case TB_OPEN2:
+ {
+ if ( !pFileDialogBox->Execute() )
+ return FALSE;
+ DirEntry aDirEntry( pFileDialogBox->GetPath() );
+ aDirEntry.ToAbs();
+ String aFileName( aDirEntry.GetFull() );
+ SvFileStream aStrm( aFileName, STREAM_READ );
+ if ( aStrm.GetError() )
+ InfoBox( 0, String( RTL_CONSTASCII_USTRINGPARAM( "StreamError!" ) ) ).Execute();
+ Application::EnterWait();
+ if ( nId == TB_OPEN )
+ {
+ if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "rtf" ) )
+ pEditEngine->Read( aStrm, EE_FORMAT_RTF );
+ if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "htm" ) )
+ pEditEngine->Read( aStrm, EE_FORMAT_HTML );
+ if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "html" ) )
+ pEditEngine->Read( aStrm, EE_FORMAT_HTML );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "bin" ) )
+ pEditEngine->Read( aStrm, EE_FORMAT_BIN );
+ else
+ pEditEngine->Read( aStrm, EE_FORMAT_TEXT );
+
+ pEditView->ShowCursor();
+ }
+ else
+ {
+ if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "rtf" ) )
+ pEditView->Read( aStrm, EE_FORMAT_RTF );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "bin" ) )
+ pEditView->Read( aStrm, EE_FORMAT_BIN );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "html" ) )
+ pEditView->Read( aStrm, EE_FORMAT_HTML );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "htm" ) )
+ pEditView->Read( aStrm, EE_FORMAT_HTML );
+ else
+ pEditView->Read( aStrm, EE_FORMAT_TEXT );
+ }
+
+ Application::LeaveWait();
+
+ }
+ break;
+ case TB_PRINT:
+ {
+ pPrinter->SetPageQueueSize( 1 );
+ PrintDialog aPrnDlg( this );
+ aPrnDlg.SetPrinter( pPrinter );
+ if ( aPrnDlg.Execute() )
+ {
+ pPrinter->StartJob( String( RTL_CONSTASCII_USTRINGPARAM( "SvEdit - PrinterTest" ) ) );
+ pPrinter->StartPage();
+ Size aSz( pEditEngine->CalcTextWidth(), pEditEngine->GetTextHeight() );
+ Pen aPen( PEN_SOLID );
+ aPen.SetColor( Color( COL_BLACK ) );
+ pPrinter->SetPen( aPen );
+ Rectangle aR( Point( 2000, 4000 ), aSz );
+ pPrinter->DrawRect( aR );
+ // So folgt auf IIISi, 75DPI kein Ausdruck!
+// pPrinter->SetClipRegion( Region( aR ) );
+ pEditEngine->Draw( pPrinter, Point( 2000, 4000 ), nRotation );
+// pPrinter->SetClipRegion();
+ pPrinter->EndPage();
+ pPrinter->EndJob();
+ }
+ }
+ break;
+ case TB_SAVE:
+ case TB_SAVE2:
+ {
+ if ( !pFileDialogBox2->Execute() )
+ return FALSE;
+ DirEntry aDirEntry( pFileDialogBox2->GetPath() );
+// DirEntry aDirEntry( String( RTL_CONSTASCII_USTRINGPARAM( "d:\\xxx.rtf" ) ) );
+ SvFileStream aStrm( aDirEntry.GetFull(), STREAM_WRITE | STREAM_TRUNC );
+ Application::EnterWait();
+ if ( nId == TB_SAVE )
+ {
+ if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "rtf") )
+ pEditEngine->Write( aStrm, EE_FORMAT_RTF );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "bin" ) )
+ pEditEngine->Write( aStrm, EE_FORMAT_BIN );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "html" ) )
+ pEditEngine->Write( aStrm, EE_FORMAT_HTML );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "htm" ) )
+ pEditEngine->Write( aStrm, EE_FORMAT_HTML );
+ else
+ pEditEngine->Write( aStrm, EE_FORMAT_TEXT );
+ }
+ else
+ {
+ if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "rtf" ) )
+ pEditView->Write( aStrm, EE_FORMAT_RTF );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "bin" ) )
+ pEditView->Write( aStrm, EE_FORMAT_BIN );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "html" ) )
+ pEditView->Write( aStrm, EE_FORMAT_HTML );
+ else if ( aDirEntry.GetExtension().EqualsIgnoreCaseAscii( "htm" ) )
+ pEditView->Write( aStrm, EE_FORMAT_HTML );
+ else
+ pEditView->Write( aStrm, EE_FORMAT_TEXT );
+ }
+ Application::LeaveWait();
+ }
+ break;
+ case TB_ATTRIBS:
+ {
+ SfxItemSet aCurSet = pEditView->GetAttribs();
+ XubString aDebStr( String( RTL_CONSTASCII_USTRINGPARAM( "Attribute in Selektion:" ) ) );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "\nVorlage:" ) );
+ XubString aStyle;
+// pEditView->GetStyleSheet( aStyle, eFam );
+ aDebStr += aStyle;
+ for ( USHORT nWhich = EE_ITEMS_START; nWhich <= EE_ITEMS_END; nWhich++)
+ {
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "\n" ) );
+ aDebStr += String::CreateFromInt32( nWhich );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "\t" ) );
+ if ( aCurSet.GetItemState( nWhich ) == SFX_ITEM_OFF )
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "---" ) );
+ else if ( aCurSet.GetItemState( nWhich ) == SFX_ITEM_DONTCARE )
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "XXX" ) );
+ else if ( aCurSet.GetItemState( nWhich ) == SFX_ITEM_ON )
+ {
+ const SfxPoolItem& rItem = aCurSet.Get( nWhich );
+ switch ( nWhich )
+ {
+ case EE_PARA_LRSPACE:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FI=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxLRSpaceItem&)rItem).GetTxtFirstLineOfst() );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( ", LI=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxLRSpaceItem&)rItem).GetTxtLeft() );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( ", RI=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxLRSpaceItem&)rItem).GetRight() );
+ break;
+ case EE_PARA_ULSPACE:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "SB=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxULSpaceItem&)rItem).GetUpper() );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( ", SA=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxULSpaceItem&)rItem).GetLower() );
+ break;
+ case EE_PARA_SBL:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "SBL=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxLineSpacingItem&)rItem).GetInterLineSpace() );
+ break;
+ case EE_PARA_JUST:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "SvxAdust=" ) );
+ aDebStr += String::CreateFromInt32( (USHORT)((SvxAdjustItem&)rItem).GetAdjust() );
+ break;
+ case EE_PARA_TABS:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "Tabs = ?" ) );
+ break;
+ case EE_CHAR_COLOR:
+ {
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "Color= " ) );
+ Color aColor( ((SvxColorItem&)rItem).GetValue() );
+ aDebStr += String::CreateFromInt32( aColor.GetRed() );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
+ aDebStr += String::CreateFromInt32( aColor.GetGreen() );
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( ", " ) );
+ aDebStr += String::CreateFromInt32( aColor.GetBlue() );
+ }
+ break;
+ case EE_CHAR_FONTINFO:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "Font=" ) );
+ aDebStr += ((SvxFontItem&)rItem).GetFamilyName();
+ break;
+ case EE_CHAR_FONTHEIGHT:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "Groesse=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxFontHeightItem&)rItem).GetHeight() );
+ break;
+ case EE_CHAR_WEIGHT:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FontWeight=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxWeightItem&)rItem).GetWeight() );
+ break;
+ case EE_CHAR_UNDERLINE:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FontUnderline=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxUnderlineItem&)rItem).GetLineStyle() );
+ break;
+ case EE_CHAR_WLM:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "WordLineMode=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxWordLineModeItem&)rItem).GetValue() );
+ break;
+ case EE_CHAR_STRIKEOUT:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FontStrikeout=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxCrossedOutItem&)rItem).GetStrikeout() );
+ break;
+ case EE_CHAR_ITALIC:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FontPosture=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxPostureItem&)rItem).GetPosture() );
+ break;
+ case EE_CHAR_OUTLINE:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FontOutline=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxContourItem&)rItem).GetValue() );
+ break;
+ case EE_CHAR_SHADOW:
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "FontShadowed=" ) );
+ aDebStr += String::CreateFromInt32( ((SvxShadowedItem&)rItem).GetValue() );
+ break;
+ }
+ }
+ else
+ aDebStr += String( RTL_CONSTASCII_USTRINGPARAM( "?" ) );
+ }
+ InfoBox( 0, aDebStr ).Execute();
+ }
+ break;
+ }
+
+ if ( pNewItem )
+ {
+ SfxItemSet aSet = pEditView->GetEmptyItemSet();
+ aSet.Put( *pNewItem );
+ pEditView->SetAttribs( aSet );
+ delete pNewItem;
+ }
+ UpdateToolBox();
+ return 0;
+}
+
+void EditMainWindow::CreatePolygon()
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ Size aSz = pEditView->GetWindow()->GetOutputSize();
+ Point aOffset( aSz.Width()/8, aSz.Height()/8 );
+ aSz.Width() *= 3;
+ aSz.Width() /= 4;
+ aSz.Height() *= 3;
+ aSz.Height() /= 4;
+ Polygon aPoly( 5 );
+ aPoly.SetPoint( Point( aSz.Width()/2, 0 ), 0 );
+ aPoly.SetPoint( Point( aSz.Width(), aSz.Height()/3 ), 1 );
+ aPoly.SetPoint( Point( aSz.Width()/2, aSz.Height() ), 2 );
+ aPoly.SetPoint( Point( 0, aSz.Height()/2 ), 3 );
+ aPoly.SetPoint( Point( aSz.Width()/2, 0 ), 4 );
+ PolyPolygon aPPoly( aPoly );
+ pEditView->GetEditEngine()->SetPolygon( aPPoly );
+ pEditView->SetOutputArea( Rectangle( aOffset, aSz ) );
+ ULONG nWord = pEditView->GetControlWord();
+ nWord &= ~(EV_CNTRL_AUTOSCROLL);
+ pEditView->SetControlWord( nWord );
+ aViewWin.Invalidate();
+}
+
+void __EXPORT EditMainWindow::GetFocus()
+{
+ aViewWin.GrabFocus();
+}
+
+IMPL_LINK_INLINE_START( EditMainWindow, HScrollHdl, ScrollBar *, pScrl )
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ pEditView->Scroll( -pScrl->GetDelta(), 0, RGCHK_PAPERSZ1 );
+ return 0;
+}
+IMPL_LINK_INLINE_END( EditMainWindow, HScrollHdl, ScrollBar *, pScrl )
+
+IMPL_LINK_INLINE_START( EditMainWindow, VScrollHdl, ScrollBar *, pScrl )
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ pEditView->Scroll( 0, -pScrl->GetDelta(), RGCHK_PAPERSZ1 );
+ return 0;
+}
+IMPL_LINK_INLINE_END( EditMainWindow, VScrollHdl, ScrollBar *, pScrl )
+
+void EditMainWindow::SetScrollBarRanges()
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ long y = pEditView->GetEditEngine()->GetTextHeight();
+ long x = pEditView->GetEditEngine()->GetPaperSize().Width();
+
+ aHScrollBar.SetRange( Range( 0, x ) );
+ aVScrollBar.SetRange( Range( 0, y ) );
+}
+
+void EditMainWindow::SetScrollBars()
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ Size aSz = GetOutputSizePixel();
+ Size aRealSz( aSz );
+ long nScrollbarWidthPixel = aVScrollBar.GetSizePixel().Width();
+ long nTBHeight = aToolBox.GetSizePixel().Height();
+ aSz.Height() -= nTBHeight;
+ Size aOrgSz( aSz );
+
+ // VScroll...
+ aSz.Height() += 2;
+ Point aPoint( ( aSz.Width()- nScrollbarWidthPixel+1 ), -1+nTBHeight);
+ aSz.Width() = nScrollbarWidthPixel;
+ aVScrollBar.SetPosSizePixel( aPoint, aSz );
+
+ // HScroll...
+ aSz = aOrgSz;
+ Point aPoint2( 0, aRealSz.Height()-aHScrollBar.GetSizePixel().Height()+1 ); // TB-Height schon drin!
+ aSz.Width() -= aVScrollBar.GetSizePixel().Width();
+ aSz.Width() += 2;
+
+ aSz.Height() = nScrollbarWidthPixel;
+ aHScrollBar.SetPosSizePixel( aPoint2, aSz );
+
+ aHScrollBar.SetVisibleSize( pEditView->GetOutputArea().GetWidth() );
+ aVScrollBar.SetVisibleSize( pEditView->GetOutputArea().GetHeight() );
+
+ SetScrollBarRanges();
+
+ aVScrollBar.Show();
+ aHScrollBar.Show();
+}
+
+void __EXPORT EditMainWindow::Resize()
+{
+ long nBorder = aVScrollBar.GetSizePixel().Width();
+ long nExtra = 10;
+ Size aTBSz = aToolBox.CalcWindowSizePixel();
+ Size aOutSzPixel( GetOutputSizePixel() );
+ aToolBox.SetSizePixel( Size( aOutSzPixel.Width(), aTBSz.Height()) );
+
+ aViewWin.SetSizePixel( Size( aOutSzPixel.Width()-nBorder-2*nExtra, aOutSzPixel.Height()-aTBSz.Height()-2*nExtra-nBorder) );
+
+ aViewWin.SetPosPixel( Point( nExtra, aTBSz.Height()+nExtra ) );
+
+ SetScrollBars();
+
+ EditView* pEditView = aViewWin.GetEditView();
+ if ( pEditView && pEditView->GetEditEngine()->GetPolygon() )
+ CreatePolygon();
+}
+
+IMPL_LINK( EditMainWindow, ShowStatus, EditStatus *, pStat )
+{
+ EditView* pEditView = aViewWin.GetEditView();
+ EditEngine* pEditEngine = pEditView->GetEditEngine();
+ if ( ( pStat->GetStatusWord() & EE_STAT_TEXTWIDTHCHANGED ) || ( pStat->GetStatusWord() & EE_STAT_TEXTHEIGHTCHANGED ) )
+ {
+ aViewWin.MarkOutputArea();
+ if ( pEditEngine->GetTextHeight() < (ULONG)pEditView->GetOutputArea().GetHeight() )
+ {
+ // Wird durch RGCHK_PAPERSZ1 'geklippt'
+ if ( !( pEditEngine->GetControlWord() & EE_CNTRL_AUTOPAGESIZE) )
+ pEditView->Scroll( -(long)pEditEngine->CalcTextWidth(), -(long)pEditEngine->GetTextHeight(), RGCHK_PAPERSZ1 );
+ }
+ SetScrollBarRanges();
+ }
+ if ( pStat->GetStatusWord() & EE_STAT_HSCROLL )
+ aHScrollBar.SetThumbPos( pEditView->GetVisArea().Left() );
+ if ( pStat->GetStatusWord() & EE_STAT_VSCROLL )
+ aVScrollBar.SetThumbPos( pEditView->GetVisArea().Top() );
+
+ return 0;
+}
+
+
+EditViewWindow::~EditViewWindow()
+{
+ // erst die angemeldeten Views zerstoeren
+ // (melden sich selbst ab)
+ MyView* pView = aViewList.First();
+ while ( pView )
+ {
+ delete pView;
+ pView = aViewList.Next();
+ }
+
+ pEditEngine->RemoveView( pEditView );
+ delete pEditView;
+ // Beim Zerstoeren der Styles am Ende, EditEngine noch nicht kaputt,
+ // wird der Handler gerufen, ich zerstore hier aber schon die View!
+ pEditEngine->SetStatusEventHdl( Link() );
+// SvxAutoCorrect* pAutoCorrekt = pEditEngine->GetAutoCorrect();
+// pEditEngine->SetAutoCorrect( 0 );
+// delete pAutoCorrekt;
+ delete pEditEngine;
+}
+
+EditViewWindow::EditViewWindow( Window* pParent ) :
+ Window( pParent ), aURLPtr( POINTER_HAND )
+{
+ SetBackgroundBrush( Brush( Color( COL_WHITE ) ) );
+ SetMapMode( MAP_100TH_MM );
+// EnableDrop();
+
+ SfxItemPool* pPool = EditEngine::CreatePool();
+ Font aFont = GetSettings().GetStyleSettings().GetAppFont();
+ MapMode aPntMode( MAP_POINT );
+ MapMode aCurrent( GetMapMode() );
+ Size aSz( LogicToLogic( Size( 12, 0 ), &aPntMode, &aCurrent ) );
+ aFont.SetName( String( RTL_CONSTASCII_USTRINGPARAM( "Times New Roman" ) ) );
+ pPool->SetPoolDefaultItem( SvxFontItem( aFont.GetFamily(), aFont.GetName(), String(),aFont.GetPitch(), aFont.GetCharSet(), EE_CHAR_FONTINFO ) );
+ pPool->SetPoolDefaultItem( SvxFontHeightItem( aSz.Width(), 100, EE_CHAR_FONTHEIGHT ) );
+ pEditEngine = new MyEditEngine( pPool );
+
+ Size aPaperSz( 10000,8000 );
+ pEditEngine->SetPaperSize( aPaperSz );
+
+ pEditView = new EditView( pEditEngine, this );
+ pEditView->SetBackgroundColor( Color( COL_WHITE ) );
+ pEditView->SetOutputArea( Rectangle( Point( 100, 100 ), aPaperSz ) );
+ pEditEngine->SetDefaultLanguage( LANGUAGE_ENGLISH );
+ pEditEngine->InsertView( pEditView );
+
+ SetPosSizePixel( Point( 10, 10 ), Size( 600, 400 ) );
+ SetPen( PEN_NULL );
+ Show();
+
+ // Feldbefehle grau hinterlegen
+ ULONG n = pEditEngine->GetControlWord();
+ n = n | (EE_CNTRL_MARKFIELDS|EE_CNTRL_AUTOCOMPLETE);
+ pEditEngine->SetControlWord( n );
+
+ // Test: Autozentrierung
+// ULONG n = pEditEngine->GetControlWord();
+// n = n | EE_CNTRL_AUTOPAGESIZE;
+// pEditEngine->SetControlWord( n );
+
+ // OneLineSpeling
+#ifdef WNT
+// pEditEngine->CreateSpeller( DirEntry( String( RTL_CONSTASCII_USTRINGPARAM( "n:\\offenv\\wnti" ) ) ),
+// DirEntry( String( RTL_CONSTASCII_USTRINGPARAM( "n:\\offenv\\wnti" ) ) ) );
+// pEditEngine->GetSpeller()->SetActualLanguage( LANGUAGE_GERMAN );
+// pEditEngine->GetSpeller()->SetDefaultLanguage( LANGUAGE_GERMAN );
+// pEditEngine->GetSpeller()->SetMinTrail( 2 );
+
+ // AutoCorrect wird nie zerstoert
+// pEditEngine->SetAutoCorrect( new SvxAutoCorrect( String( RTL_CONSTASCII_USTRINGPARAM( "d:\\prj\\office\\autotext\\autocorr.dat" ) ) ) );
+#endif
+}
+
+void __EXPORT EditViewWindow::Paint( const Rectangle& rRec )
+{
+ if ( pEditView->GetEditEngine()->GetPolygon() )
+ {
+ // Die Punkte des Polygons beziehen sich auf die View...
+ MapMode aMapMode( GetMapMode() );
+ aMapMode.SetOrigin( pEditView->GetOutputArea().TopLeft() );
+ SetMapMode( aMapMode );
+ DrawPolyPolygon( *pEditView->GetEditEngine()->GetPolygon() );
+ aMapMode.SetOrigin( Point() );
+ SetMapMode( aMapMode );
+ }
+ pEditView->Paint( rRec );
+ MarkOutputArea();
+}
+
+void EditViewWindow::MarkOutputArea()
+{
+ static Rectangle aCurFrame;
+ Rectangle aOutArea( pEditView->GetOutputArea() );
+ aOutArea = LogicToPixel( aOutArea );
+ aOutArea.Left()--;
+ aOutArea.Right()++;
+ aOutArea.Top()--;
+ aOutArea.Bottom()++;
+ aOutArea = PixelToLogic( aOutArea );
+ SetPen( Pen( Color( COL_RED ) ) );
+ SetFillInBrush( Brush( BRUSH_NULL ) );
+ DrawRect( aOutArea );
+ if ( !aCurFrame.IsEmpty() )
+ {
+ if ( aCurFrame.Left() < aOutArea.Left() )
+ Invalidate( Rectangle( aCurFrame.TopLeft(), Size( aOutArea.Left()-aCurFrame.Left(), aCurFrame.GetHeight() ) ) );
+ if ( aCurFrame.Right() > aOutArea.Right() )
+ {
+ long nW = aCurFrame.Right() - aOutArea.Right();
+ Point aPos( aCurFrame.TopRight() );
+ aPos.X() -= nW;
+ Invalidate( Rectangle( aPos, Size( nW, aCurFrame.GetHeight() ) ) );
+ }
+ if ( aCurFrame.Top() < aOutArea.Top() )
+ Invalidate( Rectangle( aCurFrame.TopLeft(), Size( aCurFrame.GetWidth(), aOutArea.Top() - aCurFrame.Top() ) ) );
+ if ( aCurFrame.Bottom() > aOutArea.Bottom() )
+ {
+ long nH = aCurFrame.Bottom() - aOutArea.Bottom();
+ Point aPos( aCurFrame.BottomLeft() );
+ aPos.Y() -= nH;
+ Invalidate( Rectangle( aPos, Size( aCurFrame.GetWidth(), nH ) ) );
+ }
+ }
+ aCurFrame = aOutArea;
+}
+
+void __EXPORT EditViewWindow::Resize()
+{
+ Size aPaperSz( GetOutputSize() );
+ pEditView->SetOutputArea( Rectangle( Point(0,0), aPaperSz ) );
+ pEditEngine->SetPaperSize( Size( aPaperSz.Width()*1, aPaperSz.Height()*1 ) );
+ pEditView->ShowCursor();
+ Invalidate();
+}
+
+void __EXPORT EditViewWindow::KeyInput( const KeyEvent& rKEvt )
+{
+ sal_Unicode nCharCode = rKEvt.GetCharCode();
+
+ USHORT nCode = rKEvt.GetKeyCode().GetCode();
+ // Auswertung fuer besondere Einstellungen....
+ if ( ( nCode == KEY_A) && rKEvt.GetKeyCode().IsMod1() )
+ pEditView->SetSelection( ESelection( 0, 0, 0xFFFF, 0xFFFF ) );
+ else if ( ( nCode == KEY_R ) && rKEvt.GetKeyCode().IsMod2() )
+ Invalidate();
+ else if ( ( nCode == KEY_L ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ ULONG n = pEditEngine->GetControlWord();
+ n = n | EE_CNTRL_ONECHARPERLINE;
+ pEditEngine->SetControlWord( n );
+ pEditEngine->QuickFormatDoc();
+ }
+ else if ( ( nCode == KEY_Z ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ pEditView->RemoveAttribs();
+ }
+ else if ( ( nCode == KEY_V ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ pEditEngine->SetVertical( TRUE );
+ Invalidate();
+ }
+ else if ( ( ( nCode == KEY_ADD ) || ( nCode == KEY_SUBTRACT ) )&& rKEvt.GetKeyCode().IsMod2() )
+ {
+ short nDiff = ( nCode == KEY_ADD ) ? (+5) : (-5);
+ if ( nZoom > 1000 )
+ nDiff *= 20;
+ if ( nZoom <= 25 )
+ nDiff /= 5;
+ if ( ( nZoom + nDiff ) > 0 )
+ nZoom += nDiff;
+ MapMode aMapMode( MAP_100TH_MM, Point(0,0), Fraction(nZoom,100), Fraction(nZoom,100) );
+ SetMapMode( aMapMode );
+ ((EditMainWindow*)GetParent())->SetTitle();
+
+ if ( rKEvt.GetKeyCode().IsMod1() )
+ {
+ InfoBox( 0, String( RTL_CONSTASCII_USTRINGPARAM( "ChangingRefMapMode..." ) ) ).Execute();
+ pEditEngine->SetRefMapMode( aMapMode );
+ }
+ Invalidate();
+ }
+ else if ( rKEvt.GetKeyCode().IsMod2() &&
+ ( ( nCode == KEY_UP) || ( nCode == KEY_DOWN ) ||
+ ( nCode == KEY_LEFT ) || ( nCode == KEY_RIGHT ) ) )
+ {
+ if( rKEvt.GetKeyCode().IsMod1() )
+ {
+ ULONG nCtrl = pEditEngine->GetControlWord();
+ if ( ! ( nCtrl & EE_CNTRL_STRETCHING ) )
+ {
+ nCtrl |= EE_CNTRL_STRETCHING;
+ pEditEngine->SetControlWord( nCtrl );
+ }
+ USHORT nX, nY;
+ pEditEngine->GetGlobalCharStretching( nX, nY );
+ if ( ( nCode == KEY_DOWN ) && ( nY > 5 ) )
+ nY += 5;
+ else if ( nCode == KEY_UP )
+ nY -= 5;
+ else if ( nCode == KEY_RIGHT )
+ nX += 5;
+ else if ( ( nCode == KEY_LEFT ) && ( nX > 5 ) )
+ nX -= 5;
+ pEditEngine->SetGlobalCharStretching( nX, nY );
+ ((EditMainWindow*)GetParent())->SetTitle();
+ }
+ else // ZeichenAttr
+ {
+ SfxItemSet aAttrs( pEditView->GetAttribs() );
+ SfxItemSet aNewAttrs( pEditEngine->GetEmptyItemSet() );
+ const SvxFontWidthItem& rItem = (const SvxFontWidthItem&)aAttrs.Get( EE_CHAR_FONTWIDTH );
+ USHORT nProp = rItem.GetProp();
+ if ( nCode == KEY_RIGHT )
+ nProp += 5;
+ else if ( ( nCode == KEY_LEFT ) && ( nProp > 5 ) )
+ nProp -= 5;
+ aNewAttrs.Put( SvxFontWidthItem( 0, nProp, EE_CHAR_FONTWIDTH ) );
+ pEditView->SetAttribs( aNewAttrs );
+ }
+ }
+ else if ( ( nCode == KEY_O ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ MapMode aMapMode( GetMapMode() );
+ aMapMode.SetOrigin( Point( 41, 41 ) );
+ SetMapMode( aMapMode );
+ Invalidate();
+ }
+ else if ( ( nCode == KEY_B ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ SfxItemSet aSet = pEditView->GetEmptyItemSet();
+ aSet.Put( SvxFontHeightItem(800, 100, EE_CHAR_FONTHEIGHT) );
+ pEditView->SetAttribs( aSet );
+ }
+ else if ( ( nCode == KEY_P ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+// ESelection aSel = pEditView->GetSelection();
+// for ( ULONG n = aSel.nStartPara; n <= aSel.nEndPara; n++ )
+// {
+// InfoBox( 0, pEditEngine->GetText( n ) ).Execute();
+// }
+ InfoBox( 0, pEditView->GetSelected() ).Execute();
+
+ }
+ else if ( rKEvt.GetKeyCode().IsMod2() &&
+ ( nCode >= KEY_1 ) && ( nCode <= KEY_9 ) )
+ {
+ ULONG nEECtrl = pEditEngine->GetControlWord();
+ nEECtrl = nEECtrl | EE_CNTRL_AUTOPAGESIZE;
+ pEditEngine->SetControlWord( nEECtrl );
+
+ ULONG nEVCtrl = pEditView->GetControlWord();
+ nEVCtrl |= EV_CNTRL_AUTOSIZE;
+ pEditView->SetControlWord( nEVCtrl );
+
+ pEditView->SetAnchorMode( (EVAnchorMode)(nCode-KEY_1) );
+ pEditView->SetOutputArea( Rectangle( Point(0,0), GetOutputSize() ) );
+ pEditEngine->SetMaxAutoPaperSize( GetOutputSize() );
+ pEditEngine->SetPaperSize( Size( 0, 0 ) );
+ }
+ else if ( rKEvt.GetKeyCode().IsMod2() && ( nCode == KEY_0 ) )
+ {
+ ULONG nEVCtrl = pEditView->GetControlWord();
+ nEVCtrl = nEVCtrl | EV_CNTRL_AUTOSIZE;
+ pEditView->SetControlWord( nEVCtrl );
+
+ Size aOutSz( GetOutputSize() );
+ Size aPaperSz( aOutSz.Width() / 2, 0 );
+ pEditView->SetOutputArea( Rectangle( Point(), aPaperSz ) );
+ pEditEngine->SetPaperSize( aPaperSz );
+ // Max-Height wird bei View verwendet,
+ // MinSize/MaxSize nur, wenn AUTOPAGESIZE ( KEY_1 - KEY_9 )
+ pEditEngine->SetMaxAutoPaperSize( Size( aOutSz.Width() / 2, aOutSz.Height() / 2 ) );
+ pEditEngine->SetMinAutoPaperSize( Size( aOutSz.Width() / 8, aOutSz.Height() / 8 ) );
+ }
+ else if ( ( nCode == KEY_J ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ Size aTextSz( pEditEngine->CalcTextWidth(), pEditEngine->GetTextHeight() );
+ Rectangle aRect( pEditView->GetOutputArea().TopLeft(), aTextSz );
+ Brush aTmpBrush( Color( COL_LIGHTBLUE ), BRUSH_25 );
+ Brush aOldBrush( GetFillInBrush() );
+ SetFillInBrush( aTmpBrush );
+ DrawRect( aRect );
+ SetFillInBrush( aOldBrush );
+ pEditView->Paint( aRect );
+ }
+ else if ( ( nCode == KEY_H ) && rKEvt.GetKeyCode().IsMod2() )
+ {
+ Push();
+ Size aSz( pEditEngine->CalcTextWidth(), pEditEngine->GetTextHeight() );
+ Pen aPen( PEN_SOLID );
+ Brush aBrush( Color( COL_GRAY ), BRUSH_SOLID );
+ aPen.SetColor( Color( COL_BLACK ) );
+ SetPen( aPen );
+ SetFillInBrush( aBrush );
+ Rectangle aR( pEditView->GetOutputArea().TopLeft(), aSz );
+ DrawRect( aR );
+ Pop();
+ pEditEngine->Draw( this, pEditView->GetOutputArea() );
+ pEditView->ShowCursor( TRUE, TRUE );
+ }
+
+ // Eingabe an EditEngine...
+ else
+ {
+ BOOL bDone = pEditView->PostKeyEvent( rKEvt );
+ if ( !bDone )
+ Window::KeyInput( rKEvt );
+ }
+
+ ((EditMainWindow*)GetParent())->UpdateToolBox();
+}
+
+void __EXPORT EditViewWindow::MouseMove( const MouseEvent& rMEvt )
+{
+ Point aPos = PixelToLogic( rMEvt.GetPosPixel() );
+ if ( pEditView->GetOutputArea().IsInside( aPos ) )
+ {
+ const SvxFieldItem* pField = pEditView->GetFieldUnderMousePointer();
+ if ( pField )
+ SetPointer( aURLPtr );
+ else
+ SetPointer( pEditView->GetPointer() );
+
+// aPos -= pEditView->GetOutputArea().TopLeft();
+// aPos += pEditView->GetVisArea().TopLeft();
+// if ( pEditView->GetEditEngine()->IsTextPos( aPos, PixelToLogic( Size( 5, 0 ) ).Width() ) )
+// SetPointer( pEditView->GetPointer() );
+// else
+// SetPointer( Pointer( POINTER_REFHAND ) );
+
+ }
+ else
+ SetPointer( aStdPtr );
+
+// static long x = 0;
+// x++;
+// DBG_ASSERT( x < 1000, String( RTL_CONSTASCII_USTRINGPARAM( "?" ) ) );
+ pEditView->MouseMove( rMEvt );
+}
+
+void __EXPORT EditViewWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ GrabFocus();
+ pEditView->MouseButtonDown( rMEvt );
+}
+
+void __EXPORT EditViewWindow::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ pEditView->MouseButtonUp( rMEvt );
+ ((EditMainWindow*)GetParent())->UpdateToolBox();
+}
+
+void __EXPORT EditViewWindow::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
+ {
+ if( pEditView->IsWrongSpelledWordAtPos( rCEvt.GetMousePosPixel() ) )
+ pEditView->ExecuteSpellPopup( rCEvt.GetMousePosPixel() );
+ }
+ else
+ pEditView->Command(rCEvt);
+
+}
+
+BOOL __EXPORT EditViewWindow::Drop( const DropEvent& rEvt )
+{
+ return pEditView->Drop( rEvt );
+}
+
+BOOL __EXPORT EditViewWindow::QueryDrop( DropEvent& rEvt )
+{
+ return pEditView->QueryDrop( rEvt );
+}
+
+// --- aEditApp ------------------------------------------------------
+
+void __EXPORT EditApp::Main()
+{
+#ifdef WNT
+ SvFactory::Init();
+#endif
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xSMgr = createApplicationServiceManager();
+ ::comphelper::setProcessServiceFactory( xSMgr );
+
+ EditDLL aEditDll;
+ SvxGlobalItemData aItemData;
+ SvxFieldItem::GetClassManager().SV_CLASS_REGISTER( SvxDateField );
+ SvxFieldItem::GetClassManager().SV_CLASS_REGISTER( SvxURLField );
+
+ Help::EnableQuickHelp();
+
+ EditMainWindow aWindow;
+ Execute();
+}
+
+EditApp aEditApp;
diff --git a/svx/workben/msview/makefile.mk b/svx/workben/msview/makefile.mk
index 2ce9d573de1c..2ce9d573de1c 100644..100755
--- a/svx/workben/msview/makefile.mk
+++ b/svx/workben/msview/makefile.mk
diff --git a/svx/workben/msview/msview.cxx b/svx/workben/msview/msview.cxx
index a19838eec26b..a19838eec26b 100644..100755
--- a/svx/workben/msview/msview.cxx
+++ b/svx/workben/msview/msview.cxx
diff --git a/svx/workben/msview/msview.xml b/svx/workben/msview/msview.xml
index 6daffa62be2d..6daffa62be2d 100644..100755
--- a/svx/workben/msview/msview.xml
+++ b/svx/workben/msview/msview.xml
diff --git a/svx/workben/msview/xmlconfig.cxx b/svx/workben/msview/xmlconfig.cxx
index 1ee7475cc2d3..1ee7475cc2d3 100644..100755
--- a/svx/workben/msview/xmlconfig.cxx
+++ b/svx/workben/msview/xmlconfig.cxx
diff --git a/svx/workben/msview/xmlconfig.hxx b/svx/workben/msview/xmlconfig.hxx
index 3bc270fe820d..3bc270fe820d 100644..100755
--- a/svx/workben/msview/xmlconfig.hxx
+++ b/svx/workben/msview/xmlconfig.hxx