diff options
Diffstat (limited to 'sd/source/ui/notes')
-rwxr-xr-x | sd/source/ui/notes/EditWindow.cxx | 883 | ||||
-rwxr-xr-x | sd/source/ui/notes/EditWindow.hxx | 128 | ||||
-rwxr-xr-x | sd/source/ui/notes/NotesChildWindow.cxx | 63 | ||||
-rwxr-xr-x | sd/source/ui/notes/NotesChildWindow.src | 45 | ||||
-rwxr-xr-x | sd/source/ui/notes/NotesDockingWindow.cxx | 114 | ||||
-rwxr-xr-x | sd/source/ui/notes/NotesDockingWindow.hxx | 56 | ||||
-rwxr-xr-x | sd/source/ui/notes/TextLogger.cxx | 129 | ||||
-rwxr-xr-x | sd/source/ui/notes/makefile.mk | 60 |
8 files changed, 1478 insertions, 0 deletions
diff --git a/sd/source/ui/notes/EditWindow.cxx b/sd/source/ui/notes/EditWindow.cxx new file mode 100755 index 000000000000..54e3589bc87e --- /dev/null +++ b/sd/source/ui/notes/EditWindow.cxx @@ -0,0 +1,883 @@ +/************************************************************************* + * + * 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_sd.hxx" + +#include "EditWindow.hxx" + +#include "sdmod.hxx" +#include <i18npool/mslangid.hxx> +#include <com/sun/star/i18n/ScriptType.hpp> +#include <editeng/editeng.hxx> +#include <editeng/editview.hxx> +#include <vcl/scrbar.hxx> +#include <editeng/eeitem.hxx> +#include "sdresid.hxx" +#include <svl/itempool.hxx> +#include <editeng/fhgtitem.hxx> +#include <vos/mutex.hxx> +#include <vcl/svapp.hxx> +#include <unotools/linguprops.hxx> +#include <unotools/lingucfg.hxx> +#include <editeng/fontitem.hxx> +#include <editeng/editstat.hxx> + +#define SCROLL_LINE 24 + +using namespace com::sun::star::accessibility; +using namespace com::sun::star; +using namespace com::sun::star::uno; + +namespace sd { namespace notes { + +EditWindow::EditWindow (Window* pParentWindow, SfxItemPool* pItemPool) + : Window (pParentWindow, WinBits()), + DropTargetHelper(this), + mpEditView(NULL), + mpEditEngine(NULL), + mpHorizontalScrollBar(NULL), + mpVerticalScrollBar(NULL), + mpScrollBox(NULL) +{ + SetMapMode(MAP_PIXEL); + + // compare DataChanged + SetBackground (GetSettings().GetStyleSettings().GetWindowColor()); + + maModifyTimer.SetTimeout(2000); + maModifyTimer.Start(); + + maCursorMoveTimer.SetTimeout(500); + + CreateEditView(); + + SvxFontHeightItem aItem (GetFont().GetSize().Height(), 100, + EE_CHAR_FONTHEIGHT); + pItemPool->SetPoolDefaultItem (aItem); + aItem.SetWhich(EE_CHAR_FONTHEIGHT_CJK); + pItemPool->SetPoolDefaultItem (aItem); + aItem.SetWhich(EE_CHAR_FONTHEIGHT_CTL); + pItemPool->SetPoolDefaultItem (aItem); + + InsertText (UniString::CreateFromAscii("EditWindow created and ready.\n")); +} + + +EditWindow::~EditWindow (void) +{ + maCursorMoveTimer.Stop(); + maModifyTimer.Stop(); + + if (mpEditView != NULL) + { + EditEngine *pEditEngine = mpEditView->GetEditEngine(); + if (pEditEngine) + { + pEditEngine->SetStatusEventHdl(Link()); + pEditEngine->RemoveView (mpEditView); + } + } + delete mpEditView; + delete mpHorizontalScrollBar; + delete mpVerticalScrollBar; + delete mpScrollBox; + +} + +//////////////////////////////////////// + + +void SmGetLeftSelectionPart(const ESelection aSel, + USHORT &nPara, USHORT &nPos) + // returns paragraph number and position of the selections left part +{ + // compare start and end of selection and use the one that comes first + if ( + (aSel.nStartPara < aSel.nEndPara) || + (aSel.nStartPara == aSel.nEndPara && aSel.nStartPos < aSel.nEndPos) + ) + { nPara = aSel.nStartPara; + nPos = aSel.nStartPos; + } + else + { nPara = aSel.nEndPara; + nPos = aSel.nEndPos; + } +} + + + + +EditEngine * EditWindow::GetEditEngine (void) +{ + if (mpEditEngine == NULL) + mpEditEngine = CreateEditEngine (); + return mpEditEngine; +} + + + + +EditEngine* EditWindow::CreateEditEngine (void) +{ + EditEngine* pEditEngine = mpEditEngine; + if (pEditEngine == NULL) + { + mpEditEngineItemPool = EditEngine::CreatePool(); + + // + // set fonts to be used + // + SvtLinguOptions aOpt; + SvtLinguConfig().GetOptions( aOpt ); + // + struct FontDta { + INT16 nFallbackLang; + INT16 nLang; + USHORT nFontType; + USHORT nFontInfoId; + } aTable[3] = + { + // info to get western font to be used + { LANGUAGE_ENGLISH_US, LANGUAGE_NONE, + DEFAULTFONT_SERIF, EE_CHAR_FONTINFO }, + // info to get CJK font to be used + { LANGUAGE_JAPANESE, LANGUAGE_NONE, + DEFAULTFONT_CJK_TEXT, EE_CHAR_FONTINFO_CJK }, + // info to get CTL font to be used + { LANGUAGE_ARABIC_SAUDI_ARABIA, LANGUAGE_NONE, + DEFAULTFONT_CTL_TEXT, EE_CHAR_FONTINFO_CTL } + }; + aTable[0].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage, ::com::sun::star::i18n::ScriptType::LATIN); + aTable[1].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage_CJK, ::com::sun::star::i18n::ScriptType::ASIAN); + aTable[2].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage_CTL, ::com::sun::star::i18n::ScriptType::COMPLEX); + // + for (int i = 0; i < 3; ++i) + { + const FontDta &rFntDta = aTable[i]; + LanguageType nLang = (LANGUAGE_NONE == rFntDta.nLang) ? + rFntDta.nFallbackLang : rFntDta.nLang; + Font aFont = Application::GetDefaultDevice()->GetDefaultFont( + rFntDta.nFontType, nLang, DEFAULTFONT_FLAGS_ONLYONE); + mpEditEngineItemPool->SetPoolDefaultItem( + SvxFontItem( + aFont.GetFamily(), + aFont.GetName(), + aFont.GetStyleName(), + aFont.GetPitch(), + aFont.GetCharSet(), + rFntDta.nFontInfoId)); + } + + // set font heights + SvxFontHeightItem aFontHeigt( + Application::GetDefaultDevice()->LogicToPixel( + Size (0, 10), MapMode (MAP_POINT)).Height(), 100, + EE_CHAR_FONTHEIGHT ); + mpEditEngineItemPool->SetPoolDefaultItem( aFontHeigt); + aFontHeigt.SetWhich (EE_CHAR_FONTHEIGHT_CJK); + mpEditEngineItemPool->SetPoolDefaultItem( aFontHeigt); + aFontHeigt.SetWhich (EE_CHAR_FONTHEIGHT_CTL); + mpEditEngineItemPool->SetPoolDefaultItem( aFontHeigt); + + pEditEngine = new EditEngine (mpEditEngineItemPool); + + pEditEngine->EnableUndo (TRUE); + pEditEngine->SetDefTab (USHORT( + Application::GetDefaultDevice()->GetTextWidth( + UniString::CreateFromAscii("XXXX")))); + + pEditEngine->SetControlWord( + (pEditEngine->GetControlWord() + | EE_CNTRL_AUTOINDENTING) & + (~EE_CNTRL_UNDOATTRIBS) & + (~EE_CNTRL_PASTESPECIAL)); + + pEditEngine->SetWordDelimiters ( + UniString::CreateFromAscii(" .=+-*/(){}[];\"")); + pEditEngine->SetRefMapMode (MAP_PIXEL); + pEditEngine->SetPaperSize (Size(800, 0)); + pEditEngine->EraseVirtualDevice(); + pEditEngine->ClearModifyFlag(); + } + + return pEditEngine; +} + + + + +void EditWindow::DataChanged (const DataChangedEvent&) +{ + const StyleSettings aSettings (GetSettings().GetStyleSettings()); + + SetBackground( aSettings.GetWindowColor() ); + + // edit fields in other Applications use this font instead of + // the application font thus we use this one too + SetPointFont( aSettings.GetFieldFont() ); + EditEngine* pEditEngine = GetEditEngine(); + + if (pEditEngine!=NULL && mpEditEngineItemPool!=NULL) + { + //! + //! see also SmDocShell::GetEditEngine() ! + //! + + // pEditEngine->SetDefTab( USHORT( GetTextWidth( C2S("XXXX") ) ) ); + + USHORT aFntInfoId[3] = { + EE_CHAR_FONTINFO, EE_CHAR_FONTINFO_CJK, EE_CHAR_FONTINFO_CTL }; + for (int i = 0; i < 3; ++i) + { + const SfxPoolItem *pItem = mpEditEngineItemPool->GetPoolDefaultItem( aFntInfoId[i] ); + if( pItem ) + { + const SvxFontItem *pFntItem = ((const SvxFontItem *) pItem); + const Font &rFnt = aSettings.GetFieldFont(); + SvxFontItem aFntItem( rFnt.GetFamily(), rFnt.GetName(), + rFnt.GetStyleName(), rFnt.GetPitch(), + pFntItem->GetCharSet(), + aFntInfoId[i] ); + mpEditEngineItemPool->SetPoolDefaultItem( aFntItem ); + } + } + + SvxFontHeightItem aItem( GetFont().GetSize().Height(), 100, + EE_CHAR_FONTHEIGHT ); + mpEditEngineItemPool->SetPoolDefaultItem( aItem ); + aItem.SetWhich( EE_CHAR_FONTHEIGHT_CJK ); + mpEditEngineItemPool->SetPoolDefaultItem( aItem ); + aItem.SetWhich( EE_CHAR_FONTHEIGHT_CTL ); + mpEditEngineItemPool->SetPoolDefaultItem( aItem ); + + // forces new settings to be used + // unfortunately this resets the whole edit engine + // thus we need to save at least the text + String aTxt( pEditEngine->GetText( LINEEND_LF ) ); + pEditEngine->Clear(); //#77957 incorrect font size + pEditEngine->SetText( aTxt ); + } + + String aText (mpEditEngine->GetText (LINEEND_LF)); + mpEditEngine->Clear(); + mpEditEngine->SetText (aText); + + AdjustScrollBars(); + Resize(); +} + + + + +void EditWindow::Resize (void) +{ + if (!mpEditView) + CreateEditView(); + + if (mpEditView != NULL) + { + mpEditView->SetOutputArea(AdjustScrollBars()); + mpEditView->ShowCursor(); + + DBG_ASSERT( mpEditView->GetEditEngine(), "EditEngine missing" ); + const long nMaxVisAreaStart = mpEditView->GetEditEngine()->GetTextHeight() - + mpEditView->GetOutputArea().GetHeight(); + if (mpEditView->GetVisArea().Top() > nMaxVisAreaStart) + { + Rectangle aVisArea(mpEditView->GetVisArea() ); + aVisArea.Top() = (nMaxVisAreaStart > 0 ) ? nMaxVisAreaStart : 0; + aVisArea.SetSize(mpEditView->GetOutputArea().GetSize()); + mpEditView->SetVisArea(aVisArea); + mpEditView->ShowCursor(); + } + InitScrollBars(); + } + Invalidate(); +} + + + + +void EditWindow::MouseButtonUp(const MouseEvent &rEvt) +{ + if (mpEditView != NULL) + mpEditView->MouseButtonUp(rEvt); + else + Window::MouseButtonUp (rEvt); + + // ggf FormulaCursor neu positionieren + // CursorMoveTimerHdl(&aCursorMoveTimer); +} + + + + +void EditWindow::MouseButtonDown(const MouseEvent &rEvt) +{ + if (mpEditView != NULL) + mpEditView->MouseButtonDown(rEvt); + else + Window::MouseButtonDown (rEvt); + + GrabFocus(); +} + + + + +void EditWindow::Command(const CommandEvent& rCEvt) +{ + /* if (rCEvt.GetCommand() == COMMAND_CONTEXTMENU) + { + GetParent()->ToTop(); + + Point aPoint = rCEvt.GetMousePosPixel(); + PopupMenu* pPopupMenu = new PopupMenu(SmResId(RID_COMMANDMENU)); + + // added for replaceability of context menus #96085, #93782 + Menu* pMenu = NULL; + ::com::sun::star::ui::ContextMenuExecuteEvent aEvent; + aEvent.SourceWindow = VCLUnoHelper::GetInterface( this ); + aEvent.ExecutePosition.X = aPoint.X(); + aEvent.ExecutePosition.Y = aPoint.Y(); + if ( GetView()->TryContextMenuInterception( *pPopupMenu, pMenu, aEvent ) ) + { + if ( pMenu ) + { + delete pPopupMenu; + pPopupMenu = (PopupMenu*) pMenu; + } + } + + pPopupMenu->SetSelectHdl(LINK(this, EditWindow, MenuSelectHdl)); + + pPopupMenu->Execute( this, aPoint ); + delete pPopupMenu; + } + else*/ if (mpEditView) + mpEditView->Command( rCEvt ); + else + Window::Command (rCEvt); + +} +IMPL_LINK_INLINE_START( EditWindow, MenuSelectHdl, Menu *, EMPTYARG ) +{ + /* SmViewShell *pViewSh = rCmdBox.GetView(); + if (pViewSh) + pViewSh->GetViewFrame()->GetDispatcher()->Execute( + SID_INSERTCOMMAND, SFX_CALLMODE_STANDARD, + new SfxInt16Item(SID_INSERTCOMMAND, pMenu->GetCurItemId()), 0L); +*/ + return 0; +} +IMPL_LINK_INLINE_END( EditWindow, MenuSelectHdl, Menu *, EMPTYARG ) + +void EditWindow::KeyInput(const KeyEvent& ) +{ + /* if (rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE) + { + BOOL bCallBase = TRUE; + SfxViewShell* pViewShell = SfxViewShell::Current(); + if ( pViewShell && pViewShell->ISA(SmViewShell) ) + { + SmDocShell* pDocSh = (SmDocShell*) pViewShell->GetViewFrame()->GetObjectShell(); + if (pDocSh) + { + // fuert zum (sofortigen) Zerstoeren von this! + pDocSh->DoInPlaceActivate( FALSE ); + bCallBase = FALSE; + } + } + if ( bCallBase ) + Window::KeyInput( rKEvt ); + } + else + { + // Timer neu starten, um den Handler (auch bei längeren Eingaben) + // möglichst nur einmal am Ende aufzurufen. + aCursorMoveTimer.Start(); + + DBG_ASSERT( mpEditView, "EditView missing (NULL pointer)" ); + if (!mpEditView) + CreateEditView(); + if ( !mpEditView->PostKeyEvent(rKEvt) ) + { + if ( !SfxViewShell::Current()->KeyInput(rKEvt) ) + { + // fuert bei F1 (Hilfe) zum Zerstoeren von this! + Flush(); + if ( aModifyTimer.IsActive() ) + aModifyTimer.Stop(); + Window::KeyInput(rKEvt); + } + else + { + //SFX hat evtl. Slot an der View gecallt und dabei (wg. Hack + //im SFX) den Focus auf die View gesetzt + SfxViewShell* pVShell = SfxViewShell::Current(); + if ( pVShell && pVShell->ISA(SmViewShell) && + ((SmViewShell*)pVShell)->GetGraphicWindow().HasFocus() ) + { + GrabFocus(); + } + } + } + else + { + // have doc-shell modified only for formula input/change and not + // cursor travelling and such things... + SmDocShell *pDocShell = GetDoc(); + if (pDocShell) + pDocShell->SetModified( GetEditEngine()->IsModified() ); + + aModifyTimer.Start(); + } + } + */ +} + + + + +void EditWindow::Paint(const Rectangle& rRect) +{ + if (!mpEditView) + CreateEditView(); + mpEditView->Paint(rRect); +} + + + + +void EditWindow::CreateEditView (void) +{ + EditEngine* pEditEngine = GetEditEngine(); + + //! pEditEngine and mpEditView may be 0. + //! For example when the program is used by the document-converter + if (mpEditView==NULL && pEditEngine!=NULL) + { + mpEditView = new EditView (pEditEngine, this); + pEditEngine->InsertView (mpEditView); + + if (mpVerticalScrollBar == NULL) + mpVerticalScrollBar = new ScrollBar ( + this, WinBits(WB_VSCROLL | WB_DRAG)); + if (mpHorizontalScrollBar == NULL) + mpHorizontalScrollBar = new ScrollBar ( + this, WinBits(WB_HSCROLL | WB_DRAG)); + if (mpScrollBox == NULL) + mpScrollBox = new ScrollBarBox (this); + mpVerticalScrollBar->SetScrollHdl(LINK(this, EditWindow, ScrollHdl)); + mpHorizontalScrollBar->SetScrollHdl(LINK(this, EditWindow, ScrollHdl)); + + mpEditView->SetOutputArea(AdjustScrollBars()); + + ESelection eSelection; + + mpEditView->SetSelection(eSelection); + Update(); + mpEditView->ShowCursor(TRUE, TRUE); + + pEditEngine->SetStatusEventHdl( + LINK(this, EditWindow, EditStatusHdl)); + SetPointer(mpEditView->GetPointer()); + + SetScrollBarRanges(); + } +} + + + + +IMPL_LINK( EditWindow, EditStatusHdl, EditStatus *, EMPTYARG ) +{ + if (!mpEditView) + return 1; + else + { + SetScrollBarRanges(); + return 0; + } +} + +IMPL_LINK_INLINE_START( EditWindow, ScrollHdl, ScrollBar *, EMPTYARG ) +{ + DBG_ASSERT(mpEditView, "EditView missing"); + if (mpEditView) + { + mpEditView->SetVisArea(Rectangle(Point(mpHorizontalScrollBar->GetThumbPos(), + mpVerticalScrollBar->GetThumbPos()), + mpEditView->GetVisArea().GetSize())); + mpEditView->Invalidate(); + } + return 0; +} +IMPL_LINK_INLINE_END( EditWindow, ScrollHdl, ScrollBar *, EMPTYARG ) + +Rectangle EditWindow::AdjustScrollBars() +{ + const Size aOut( GetOutputSizePixel() ); + Point aPoint; + Rectangle aRect( aPoint, aOut ); + + if (mpVerticalScrollBar && mpHorizontalScrollBar && mpScrollBox) + { + const long nTmp = GetSettings().GetStyleSettings().GetScrollBarSize(); + Point aPt( aRect.TopRight() ); aPt.X() -= nTmp -1L; + mpVerticalScrollBar->SetPosSizePixel( aPt, Size(nTmp, aOut.Height() - nTmp)); + + aPt = aRect.BottomLeft(); aPt.Y() -= nTmp - 1L; + mpHorizontalScrollBar->SetPosSizePixel( aPt, Size(aOut.Width() - nTmp, nTmp)); + + aPt.X() = mpHorizontalScrollBar->GetSizePixel().Width(); + aPt.Y() = mpVerticalScrollBar->GetSizePixel().Height(); + mpScrollBox->SetPosSizePixel(aPt, Size(nTmp, nTmp )); + + aRect.Right() = aPt.X() - 2; + aRect.Bottom() = aPt.Y() - 2; + } + return aRect; +} + +void EditWindow::SetScrollBarRanges() +{ + EditEngine* pEditEngine = GetEditEngine(); + if (mpEditView != NULL && pEditEngine != NULL) + { + if (mpVerticalScrollBar != NULL) + { + long nTmp = pEditEngine->GetTextHeight(); + mpVerticalScrollBar->SetRange(Range(0, nTmp)); + mpVerticalScrollBar->SetThumbPos(mpEditView->GetVisArea().Top()); + } + if (mpHorizontalScrollBar != NULL) + { + long nTmp = pEditEngine->GetPaperSize().Width(); + mpHorizontalScrollBar->SetRange(Range(0,nTmp)); + mpHorizontalScrollBar->SetThumbPos(mpEditView->GetVisArea().Left()); + } + } +} + +void EditWindow::InitScrollBars() +{ + if (mpEditView != NULL) + { + const Size aOut( mpEditView->GetOutputArea().GetSize() ); + if (mpVerticalScrollBar != NULL) + { + mpVerticalScrollBar->SetVisibleSize(aOut.Height()); + mpVerticalScrollBar->SetPageSize(aOut.Height() * 8 / 10); + mpVerticalScrollBar->SetLineSize(aOut.Height() * 2 / 10); + } + + if (mpHorizontalScrollBar != NULL) + { + mpHorizontalScrollBar->SetVisibleSize(aOut.Width()); + mpHorizontalScrollBar->SetPageSize(aOut.Width() * 8 / 10); + mpHorizontalScrollBar->SetLineSize(SCROLL_LINE ); + } + + SetScrollBarRanges(); + + if (mpVerticalScrollBar != NULL) + mpVerticalScrollBar->Show(); + if (mpHorizontalScrollBar != NULL) + mpHorizontalScrollBar->Show(); + if (mpScrollBox != NULL) + mpScrollBox->Show(); + } +} + + +XubString EditWindow::GetText() +{ + String aText; + EditEngine *pEditEngine = GetEditEngine(); + DBG_ASSERT( pEditEngine, "EditEngine missing" ); + if (pEditEngine) + aText = pEditEngine->GetText( LINEEND_LF ); + return aText; +} + + +void EditWindow::SetText(const XubString& rText) +{ + EditEngine *pEditEngine = GetEditEngine(); + DBG_ASSERT( pEditEngine, "EditEngine missing" ); + if (pEditEngine && !pEditEngine->IsModified()) + { + if (!mpEditView) + CreateEditView(); + + ESelection eSelection = mpEditView->GetSelection(); + + pEditEngine->SetText(rText); + pEditEngine->ClearModifyFlag(); + + //! Hier die Timer neu zu starten verhindert, dass die Handler für andere + //! (im Augenblick nicht mehr aktive) Math Tasks aufgerufen werden. + maModifyTimer.Start(); + maCursorMoveTimer.Start(); + + mpEditView->SetSelection(eSelection); + } +} + + +void EditWindow::GetFocus() +{ + Window::GetFocus(); + + if (!mpEditView) + CreateEditView(); + if (mpEditEngine != NULL) + mpEditEngine->SetStatusEventHdl( + LINK(this, EditWindow, EditStatusHdl)); +} + + +void EditWindow::LoseFocus() +{ + if (mpEditEngine != NULL) + mpEditEngine->SetStatusEventHdl (Link()); + + Window::LoseFocus(); +} + + +BOOL EditWindow::IsAllSelected() const +{ + BOOL bRes = FALSE; + EditEngine *pEditEngine = ((EditWindow *) this)->GetEditEngine(); + DBG_ASSERT( mpEditView, "NULL pointer" ); + DBG_ASSERT( pEditEngine, "NULL pointer" ); + if (pEditEngine && mpEditView) + { + ESelection eSelection( mpEditView->GetSelection() ); + INT32 nParaCnt = pEditEngine->GetParagraphCount(); + if (!(nParaCnt - 1)) + { + String Text( pEditEngine->GetText( LINEEND_LF ) ); + bRes = !eSelection.nStartPos && (eSelection.nEndPos == Text.Len () - 1); + } + else + { + bRes = !eSelection.nStartPara && (eSelection.nEndPara == nParaCnt - 1); + } + } + return bRes; +} + +void EditWindow::SelectAll() +{ + DBG_ASSERT( mpEditView, "NULL pointer" ); + if (mpEditView) + { + // 0xFFFF as last two parameters refers to the end of the text + mpEditView->SetSelection( ESelection( 0, 0, 0xFFFF, 0xFFFF ) ); + } +} + + +void EditWindow::MarkError(const Point &rPos) +{ + DBG_ASSERT( mpEditView, "EditView missing" ); + if (mpEditView) + { + const int Col = rPos.X(); + const int Row = rPos.Y() - 1; + + mpEditView->SetSelection(ESelection ( (USHORT)Row, (USHORT)(Col - 1), (USHORT)Row, (USHORT)Col)); + GrabFocus(); + } +} + +void EditWindow::SelNextMark() +{ + EditEngine *pEditEngine = GetEditEngine(); + DBG_ASSERT( mpEditView, "NULL pointer" ); + DBG_ASSERT( pEditEngine, "NULL pointer" ); + if (pEditEngine && mpEditView) + { + ESelection eSelection = mpEditView->GetSelection(); + USHORT Pos = eSelection.nEndPos; + String aMark (UniString::CreateFromAscii("<?>")); + String aText; + USHORT nCounts = pEditEngine->GetParagraphCount(); + + while (eSelection.nEndPara < nCounts) + { + aText = pEditEngine->GetText( eSelection.nEndPara ); + Pos = aText.Search(aMark, Pos); + + if (Pos != STRING_NOTFOUND) + { + mpEditView->SetSelection(ESelection (eSelection.nEndPara, Pos, eSelection.nEndPara, Pos + 3)); + break; + } + + Pos = 0; + eSelection.nEndPara++; + } + } +} + +void EditWindow::SelPrevMark() +{ + EditEngine *pEditEngine = GetEditEngine(); + DBG_ASSERT( pEditEngine, "NULL pointer" ); + DBG_ASSERT( mpEditView, "NULL pointer" ); + if (pEditEngine && mpEditView) + { + ESelection eSelection = mpEditView->GetSelection(); + USHORT Pos = STRING_NOTFOUND; + xub_StrLen Max = eSelection.nStartPos; + String Text( pEditEngine->GetText( eSelection.nStartPara ) ); + String aMark (UniString::CreateFromAscii("<?>")); + USHORT nCounts = pEditEngine->GetParagraphCount(); + + do + { + USHORT Fnd = Text.Search(aMark, 0); + + while ((Fnd < Max) && (Fnd != STRING_NOTFOUND)) + { + Pos = Fnd; + Fnd = Text.Search(aMark, Fnd + 1); + } + + if (Pos == STRING_NOTFOUND) + { + eSelection.nStartPara--; + Text = pEditEngine->GetText( eSelection.nStartPara ); + Max = Text.Len(); + } + } + while ((eSelection.nStartPara < nCounts) && + (Pos == STRING_NOTFOUND)); + + if (Pos != STRING_NOTFOUND) + { + mpEditView->SetSelection(ESelection (eSelection.nStartPara, Pos, eSelection.nStartPara, Pos + 3)); + } + } +} + +BOOL EditWindow::HasMark(const String& rText) const + // returns true iff 'rText' contains a mark +{ + return rText.SearchAscii("<?>", 0) != STRING_NOTFOUND; +} + +void EditWindow::MouseMove(const MouseEvent &rEvt) +{ + if (mpEditView) + mpEditView->MouseMove(rEvt); +} + +sal_Int8 EditWindow::AcceptDrop( const AcceptDropEvent& ) +{ + return mpEditView ? /*mpEditView->QueryDrop( rEvt )*/DND_ACTION_NONE: DND_ACTION_NONE; +} + +sal_Int8 EditWindow::ExecuteDrop( const ExecuteDropEvent& ) +{ + return mpEditView ? /*mpEditView->Drop( rEvt )*/DND_ACTION_NONE : DND_ACTION_NONE; +} + +ESelection EditWindow::GetSelection() const +{ + // pointer may be 0 when reloading a document and the old view + // was already destroyed + //(DBG_ASSERT( mpEditView, "NULL pointer" ); + ESelection eSel; + if (mpEditView) + eSel = mpEditView->GetSelection(); + return eSel; +} + +void EditWindow::SetSelection(const ESelection &rSel) +{ + DBG_ASSERT( mpEditView, "NULL pointer" ); + if (mpEditView) + mpEditView->SetSelection(rSel); +} + +BOOL EditWindow::IsEmpty() const +{ + EditEngine *pEditEngine = ((EditWindow *) this)->GetEditEngine(); + return (pEditEngine && (pEditEngine->GetTextLen() == 0)) ? TRUE : FALSE; +} + +BOOL EditWindow::IsSelected() const +{ + return mpEditView ? mpEditView->HasSelection() : FALSE; +} + +void EditWindow::Cut() +{ + DBG_ASSERT( mpEditView, "EditView missing" ); + if (mpEditView) + mpEditView->Cut(); +} + +void EditWindow::Copy() +{ + DBG_ASSERT( mpEditView, "EditView missing" ); + if (mpEditView) + mpEditView->Copy(); +} + +void EditWindow::Paste() +{ + DBG_ASSERT( mpEditView, "EditView missing" ); + if (mpEditView) + mpEditView->Paste(); +} + +void EditWindow::Delete() +{ + DBG_ASSERT( mpEditView, "EditView missing" ); + if (mpEditView) + mpEditView->DeleteSelected(); +} + +void EditWindow::InsertText(const String& Text) +{ + DBG_ASSERT( mpEditView, "EditView missing" ); + ::vos::OGuard aGuard (::Application::GetSolarMutex()); + if (mpEditView) + mpEditView->InsertText(Text); +} + + + +} } // end of namespace ::sd::notes diff --git a/sd/source/ui/notes/EditWindow.hxx b/sd/source/ui/notes/EditWindow.hxx new file mode 100755 index 000000000000..010a6bd09697 --- /dev/null +++ b/sd/source/ui/notes/EditWindow.hxx @@ -0,0 +1,128 @@ +/************************************************************************* + * + * 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. + * + ************************************************************************/ + +#ifndef SD_EDIT_WINDOW_HXX +#define SD_EDIT_WINDOW_HXX + +#include <vcl/window.hxx> +#include <svtools/transfer.hxx> +#include <vcl/timer.hxx> +#include <editeng/editdata.hxx> +#include <svtools/colorcfg.hxx> + +class EditEngine; +class EditStatus; +class EditView; +class Menu; +class ScrollBar; +class ScrollBarBox; +class SfxItemPool; +class Timer; + + +namespace sd { namespace notes { + +class EditWindow + : public Window, + public DropTargetHelper +{ +public: + EditWindow (Window* pParentWindow, SfxItemPool* pItemPool); + ~EditWindow (void); + + void InsertText (const String &rText); + + using Window::GetText; +private: + EditView* mpEditView; + EditEngine* mpEditEngine; + SfxItemPool* mpEditEngineItemPool; + ScrollBar* mpHorizontalScrollBar; + ScrollBar* mpVerticalScrollBar; + ScrollBarBox* mpScrollBox; + Timer maModifyTimer; + Timer maCursorMoveTimer; + ESelection maOldSelection; + + virtual void KeyInput(const KeyEvent& rKEvt); + virtual void Command(const CommandEvent& rCEvt); + DECL_LINK(MenuSelectHdl, Menu *); + + virtual void DataChanged( const DataChangedEvent& ); + virtual void Resize(); + virtual void MouseMove(const MouseEvent &rEvt); + virtual void MouseButtonUp(const MouseEvent &rEvt); + virtual void MouseButtonDown(const MouseEvent &rEvt); + + virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); + virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); + virtual void Paint(const Rectangle& rRect); + + DECL_LINK(EditStatusHdl ,EditStatus *); + DECL_LINK(ScrollHdl, ScrollBar *); + + void CreateEditView(); + + Rectangle AdjustScrollBars(); + void SetScrollBarRanges(); + void InitScrollBars(); + + // SmDocShell * GetDoc(); + // SmViewShell * GetView(); + EditView* GetEditView (void); + EditEngine* GetEditEngine (void); + EditEngine* CreateEditEngine (void); + + // Window + virtual void SetText(const XubString &rText); + virtual XubString GetText(); + virtual void GetFocus(); + virtual void LoseFocus(); + + ESelection GetSelection() const; + void SetSelection(const ESelection &rSel); + + BOOL IsEmpty() const; + BOOL IsSelected() const; + BOOL IsAllSelected() const; + void Cut(); + void Copy(); + void Paste(); + void Delete(); + void SelectAll(); + void MarkError(const Point &rPos); + void SelNextMark(); + void SelPrevMark(); + BOOL HasMark(const String &rText) const; + + void ApplyColorConfigValues( const svtools::ColorConfig &rColorCfg ); +}; + +} } // end of namespace ::sd::notes + +#endif + diff --git a/sd/source/ui/notes/NotesChildWindow.cxx b/sd/source/ui/notes/NotesChildWindow.cxx new file mode 100755 index 000000000000..d62fc2f25e4b --- /dev/null +++ b/sd/source/ui/notes/NotesChildWindow.cxx @@ -0,0 +1,63 @@ +/************************************************************************* + * + * 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_sd.hxx" + +#include "NotesChildWindow.hxx" +#include "NotesDockingWindow.hxx" + +#include "sdresid.hxx" +#include "app.hrc" +#include "sfx2/app.hxx" + +namespace sd { namespace notes { + +NotesChildWindow::NotesChildWindow ( + ::Window* _pParent, + USHORT nId, + SfxBindings* pBindings, + SfxChildWinInfo* pInfo) + : SfxChildWindow (_pParent, nId) +{ + pWindow = new NotesDockingWindow (pBindings, this, _pParent); + eChildAlignment = SFX_ALIGN_BOTTOM; + static_cast<SfxDockingWindow*>(pWindow)->Initialize(pInfo); +}; + + + + +NotesChildWindow::~NotesChildWindow() +{} + + +SFX_IMPL_DOCKINGWINDOW(NotesChildWindow, SID_NOTES_WINDOW) + + + +} } // end of namespace ::sd::notes diff --git a/sd/source/ui/notes/NotesChildWindow.src b/sd/source/ui/notes/NotesChildWindow.src new file mode 100755 index 000000000000..f01a258bf812 --- /dev/null +++ b/sd/source/ui/notes/NotesChildWindow.src @@ -0,0 +1,45 @@ +/************************************************************************* + * + * 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. + * + ************************************************************************/ + +#include "app.hrc" +#include "NotesChildWindow.hrc" + +DockingWindow FLT_WIN_NOTES +{ + HelpID = SID_NOTES_WINDOW ; + Border = TRUE ; + Hide = FALSE ; + SVLook = TRUE ; + Sizeable = TRUE ; + Moveable = TRUE ; + Closeable = TRUE ; + Zoomable = TRUE ; + Dockable = TRUE ; + EnableResizing = TRUE ; + Size = MAP_APPFONT ( 140 , 120 ) ; + Text [ en-US ] = "Notes Window" ; +}; diff --git a/sd/source/ui/notes/NotesDockingWindow.cxx b/sd/source/ui/notes/NotesDockingWindow.cxx new file mode 100755 index 000000000000..2464696c4eff --- /dev/null +++ b/sd/source/ui/notes/NotesDockingWindow.cxx @@ -0,0 +1,114 @@ +/************************************************************************* + * + * 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_sd.hxx" + +#include "NotesDockingWindow.hxx" +#include "NotesChildWindow.hrc" + +#include "EditWindow.hxx" +#include "TextLogger.hxx" +#include <svx/dlgctrl.hxx> +#include <sfx2/bindings.hxx> +#include <sfx2/dispatch.hxx> +#include <sfx2/viewfrm.hxx> +#include "DrawViewShell.hxx" +#ifndef SD_DRAW_DOC_HXX +#include "drawdoc.hxx" +#endif +#include "sdresid.hxx" +#include "ViewShellBase.hxx" + +namespace sd { namespace notes { + +NotesDockingWindow::NotesDockingWindow ( + SfxBindings *_pBindings, + SfxChildWindow *pChildWindow, + Window* _pParent) + : SfxDockingWindow (_pBindings, pChildWindow, _pParent, + SdResId(FLT_WIN_NOTES)) +{ + ViewShellBase* pBase = ViewShellBase::GetViewShellBase ( + _pBindings->GetDispatcher()->GetFrame()); + if (pBase != NULL) + { + SdDrawDocument* pDocument = pBase->GetDocument(); + mpEditWindow = new EditWindow (this, &pDocument->GetPool()); + mpEditWindow->Show(); + TextLogger::Instance().ConnectToEditWindow (mpEditWindow); + } +} + + + + +NotesDockingWindow::~NotesDockingWindow (void) +{ + delete mpEditWindow; +} + + + + +void NotesDockingWindow::Paint (const Rectangle& rBoundingBox) +{ + SfxDockingWindow::Paint (rBoundingBox); + + Size aWindowSize (GetOutputSizePixel()); + Rectangle aBBox; + Point aPosition(10,aWindowSize.Height()/2); + String aString (UniString::CreateFromAscii("Bottom Panel Docking Window")); + if (GetTextBoundRect (aBBox, aString)) + aPosition = Point ( + (aWindowSize.Width()-aBBox.GetWidth())/2, + (aWindowSize.Height()-aBBox.GetHeight())/2); + + DrawText (aPosition, aString); +} + + + + +void NotesDockingWindow::Resize (void) +{ + SfxDockingWindow::Resize(); + + Size aWinSize (GetOutputSizePixel()); + + if (mpEditWindow != NULL) + { + mpEditWindow->SetPosSizePixel ( + Point(0,0), + aWinSize); + } +} + + + +} } // end of namespace ::sd::notes + diff --git a/sd/source/ui/notes/NotesDockingWindow.hxx b/sd/source/ui/notes/NotesDockingWindow.hxx new file mode 100755 index 000000000000..b26756c14e30 --- /dev/null +++ b/sd/source/ui/notes/NotesDockingWindow.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * + * 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. + * + ************************************************************************/ + +#ifndef SD_TPV_BOTTOM_DOCKING_WINDOW_HXX_ +#define SD_TPV_BOTTOM_DOCKING_WINDOW_HXX_ + +#include <sfx2/dockwin.hxx> + +namespace sd { namespace notes { + +class EditWindow; + +class NotesDockingWindow + : public SfxDockingWindow +{ +public: + NotesDockingWindow ( + SfxBindings *pBindings, + SfxChildWindow *pChildWindow, + Window* pParent); + virtual ~NotesDockingWindow (void); + + virtual void Paint (const Rectangle& rBoundingBox); + virtual void Resize (void); + +private: + EditWindow* mpEditWindow; +}; + +} } // end of namespace ::sd::notes + +#endif diff --git a/sd/source/ui/notes/TextLogger.cxx b/sd/source/ui/notes/TextLogger.cxx new file mode 100755 index 000000000000..bf73b67aad23 --- /dev/null +++ b/sd/source/ui/notes/TextLogger.cxx @@ -0,0 +1,129 @@ +/************************************************************************* + * + * 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_sd.hxx" + +#include "TextLogger.hxx" + +#include "EditWindow.hxx" +#include <vos/mutex.hxx> +#include <vcl/svapp.hxx> + +namespace sd { namespace notes { + +TextLogger* TextLogger::spInstance = NULL; + +TextLogger& TextLogger::Instance (void) +{ + if (spInstance == NULL) + { + ::vos::OGuard aGuard (::Application::GetSolarMutex()); + if (spInstance == NULL) + spInstance = new TextLogger (); + } + return *spInstance; +} + + + + +TextLogger::TextLogger (void) + : mpEditWindow (NULL) +{ +} + + + + +void TextLogger::AppendText (const char* sText) +{ + OSL_TRACE (sText); + if (mpEditWindow != NULL) + mpEditWindow->InsertText (UniString::CreateFromAscii(sText)); +} + + + + +void TextLogger::AppendText (const String& sText) +{ + ByteString s(sText, RTL_TEXTENCODING_ISO_8859_1); + OSL_TRACE (s.GetBuffer()); + if (mpEditWindow != NULL) + mpEditWindow->InsertText (sText); +} + + + + +void TextLogger::AppendNumber (long int nValue) +{ + AppendText (String::CreateFromInt32(nValue)); +} + + + + +void TextLogger::ConnectToEditWindow (EditWindow* pEditWindow) +{ + if (mpEditWindow != pEditWindow) + { + if (pEditWindow != NULL) + pEditWindow->AddEventListener( + LINK(this, TextLogger, WindowEventHandler)); + else + mpEditWindow->RemoveEventListener( + LINK(this, TextLogger, WindowEventHandler)); + + mpEditWindow = pEditWindow; + } +} + + + + +IMPL_LINK(TextLogger, WindowEventHandler, VclWindowEvent*, pEvent) +{ + if (pEvent != NULL) + { + DBG_ASSERT(static_cast<VclWindowEvent*>(pEvent)->GetWindow() + == mpEditWindow, + "TextLogger: received event from unknown window"); + switch (pEvent->GetId()) + { + case VCLEVENT_WINDOW_CLOSE: + case VCLEVENT_OBJECT_DYING: + mpEditWindow = NULL; + break; + } + } + return TRUE; +} + + +} } // end of namespace ::sd::notes diff --git a/sd/source/ui/notes/makefile.mk b/sd/source/ui/notes/makefile.mk new file mode 100755 index 000000000000..a4b0e457cdc3 --- /dev/null +++ b/sd/source/ui/notes/makefile.mk @@ -0,0 +1,60 @@ +#************************************************************************* +# +# 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. +# +#************************************************************************* + +PRJ=..$/..$/.. + +PROJECTPCH=sd +PROJECTPCHSOURCE=$(PRJ)$/util$/sd +PRJNAME=sd +TARGET=notes +ENABLE_EXCEPTIONS=TRUE +AUTOSEG=true + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/util$/makefile.pmk + +# --- Files -------------------------------------------------------- + +SLOFILES = \ + $(SLO)$/EditWindow.obj \ + $(SLO)$/NotesChildWindow.obj \ + $(SLO)$/NotesDockingWindow.obj \ + $(SLO)$/TextLogger.obj + + + +EXCEPTIONSFILES= + +SRS2NAME = notes +SRC2FILES = NotesChildWindow.src + +# --- Tagets ------------------------------------------------------- + +.INCLUDE : target.mk + |