diff options
author | Frank Schönheit <fs@openoffice.org> | 2001-01-12 10:35:45 +0000 |
---|---|---|
committer | Frank Schönheit <fs@openoffice.org> | 2001-01-12 10:35:45 +0000 |
commit | add6ae727fa58fa6c2ed63f9de53523da1f7e2cd (patch) | |
tree | 8e825f0057ca3771b5cc6822c2155c8974fff5e7 | |
parent | 9e04a2d2d96ae090b1cfaabb69f6f7c32cd09203 (diff) |
initial checkin - outsourced the form property browser
46 files changed, 17458 insertions, 0 deletions
diff --git a/extensions/source/propctrlr/browserline.cxx b/extensions/source/propctrlr/browserline.cxx new file mode 100644 index 000000000..4f6f837e3 --- /dev/null +++ b/extensions/source/propctrlr/browserline.cxx @@ -0,0 +1,546 @@ +/************************************************************************* + * + * $RCSfile: browserline.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:25:06 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERLINE_HXX_ +#include "browserline.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROLLISTENER_HXX_ +#include "brwcontrollistener.hxx" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //================================================================== + //= OBrowserLine + //================================================================== + DBG_NAME(OBrowserLine); + //------------------------------------------------------------------ + + OBrowserLine::OBrowserLine( Window* pParent) + :m_aFtTitle(pParent) + ,m_pData(NULL) + ,m_pXButton(NULL) + ,m_pBrowserControl(NULL) + ,m_bIsLocked(sal_False) + ,m_bIsHyperlink(sal_False) + ,m_nNameWidth(0) + ,m_pTheParent(pParent) + ,m_bNeedsRepaint(sal_True) + ,m_bHasBrowseButton(sal_False) + ,m_eControlType(BCT_UNDEFINED) + { + DBG_CTOR(OBrowserLine,NULL); + m_aFtTitle.Show(); + } + //------------------------------------------------------------------ + OBrowserLine::~OBrowserLine() + { + if(m_pXButton) + { + m_pXButton->Hide(); + delete m_pXButton; + m_pXButton=NULL; + } + DBG_DTOR(OBrowserLine,NULL); + } + + //------------------------------------------------------------------ + void OBrowserLine::SetHelpId(sal_uInt32 nHelpId,sal_uInt32 nBtUniqueId) + { + if(m_pBrowserControl) + m_pBrowserControl->SetCtrHelpId(nHelpId); + + if(m_pXButton) + { + m_pXButton->SetHelpId(nHelpId); + m_pXButton->SetUniqueId(nBtUniqueId); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::setControl(IBrowserControl* pXControl) + { + m_pBrowserControl=pXControl; + m_pBrowserControl->ShowCtr(); + Resize(); + } + + //------------------------------------------------------------------ + IBrowserControl* OBrowserLine::getControl() + { + return m_pBrowserControl; + } + + //------------------------------------------------------------------ + void OBrowserLine::SetSizePixel(Size aSize) + { + m_aOutputSize = aSize; + Resize(); + } + + //------------------------------------------------------------------ + void OBrowserLine::SetPosPixel(Point aPosPoint) + { + m_aLinePos=aPosPoint; + Point aPos(m_aLinePos); + aPos.Y()+=2; + + Point aTitlePos(m_aLinePos); + aTitlePos.Y()+=8; + Point aCtrPos(aPos); + Point aBtnPos(aPos); + + if(m_pBrowserControl) + { + aCtrPos.X()=m_pBrowserControl->GetCtrPos().X(); + } + if(m_pXButton) + { + aBtnPos.X()=m_pXButton->GetPosPixel().X(); + } + m_aFtTitle.SetPosPixel(aTitlePos); + + if(m_pBrowserControl) + { + m_pBrowserControl->SetCtrPos(aCtrPos); + } + + if(m_pXButton) + { + m_pXButton->SetPosPixel(aBtnPos); + } + } + + //------------------------------------------------------------------ + Window* OBrowserLine::GetRefWindow() + { + Window* pRefWindow=&m_aFtTitle; + + if(m_pXButton) + { + pRefWindow=(Window*)m_pXButton; + } + else if(m_pBrowserControl) + { + pRefWindow=m_pBrowserControl->GetMe(); + } + return pRefWindow; + } + + //------------------------------------------------------------------ + void OBrowserLine::SetTabOrder(Window* pRefWindow, sal_uInt16 nFlags ) + { + m_aFtTitle.SetZOrder(pRefWindow,nFlags); + if(m_pBrowserControl) + { + m_pBrowserControl-> + SetTabOrder((Window*)&m_aFtTitle,WINDOW_ZORDER_BEHIND); + } + + if(m_pXButton) + { + m_pXButton->SetZOrder(m_pBrowserControl->GetMe(), + WINDOW_ZORDER_BEHIND); + } + } + + //------------------------------------------------------------------ + sal_Bool OBrowserLine::GrabFocus() + { + sal_Bool bRes=sal_False; + + if(m_pBrowserControl && + m_pBrowserControl->GetMe()->IsEnabled()) + { + m_pBrowserControl->GetMe()->GrabFocus(); + bRes=sal_True; + } + else if(m_pXButton && m_pXButton->IsEnabled()) + { + m_pXButton->GrabFocus(); + bRes=sal_True; + } + return bRes; + } + + //------------------------------------------------------------------ + void OBrowserLine::SetPosSizePixel(Point aPosPoint,Size aSize) + { + if(m_aLinePos!=aPosPoint && m_aOutputSize!=aSize) + { + SetControlPosSize(aPosPoint,aSize); + } + else + { + m_aOutputSize=aSize; + Resize(); + } + } + + //------------------------------------------------------------------ + Size OBrowserLine::GetSizePixel() + { + return m_aOutputSize; + } + + //------------------------------------------------------------------ + void OBrowserLine::Show(sal_Bool bFlag) + { + m_aFtTitle.Show(bFlag); + if(m_pBrowserControl) + { + m_pBrowserControl->ShowCtr(bFlag); + } + if(m_pXButton) + { + m_pXButton->Show(bFlag); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::Hide() + { + Show(sal_False); + } + + //------------------------------------------------------------------ + sal_Bool OBrowserLine::IsVisible() + { + return m_aFtTitle.IsVisible(); + } + + //------------------------------------------------------------------ + void OBrowserLine::Invalidate() + { + m_aFtTitle.Invalidate(); + if(m_pBrowserControl) + { + m_pBrowserControl->InvalidateCtr(); + } + if(m_pXButton) + { + m_pXButton->Invalidate(); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::Update() + { + m_aFtTitle.Update(); + if(m_pBrowserControl) + { + m_pBrowserControl->UpdateCtr(); + } + if(m_pXButton) + { + m_pXButton->Update(); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::SetData(void *pPtr) + { + m_pData=pPtr; + } + + //------------------------------------------------------------------ + void* OBrowserLine::GetData() + { + return m_pData; + } + //------------------------------------------------------------------ + void OBrowserLine::SetControlPosSize(Point aPos,Size aSize) + { + m_aLinePos=aPos; + m_aOutputSize=aSize; + Size a2Size(aSize); + + aSize.Width()=m_nNameWidth-3; + a2Size.Width()-=m_nNameWidth; + a2Size.Height() -=2; + + aPos.Y()+=2; + Point aTitlePos(m_aLinePos); + aTitlePos.Y()+=8; + + m_aFtTitle.SetPosSizePixel(aTitlePos,aSize); + sal_uInt16 nXButtonWidth=0; + + nXButtonWidth=(sal_uInt16)aSize.Height()-4; + + a2Size.Width()=a2Size.Width()-nXButtonWidth; + + aPos.X()+=aSize.Width(); + + if(m_pBrowserControl) + { + a2Size.Height()=m_pBrowserControl->GetCtrSize().Height(); + m_pBrowserControl->SetCtrPos(aPos); + m_pBrowserControl->SetCtrSize(a2Size); + } + + if(m_bHasBrowseButton) + { + long nx=m_aOutputSize.Width()-nXButtonWidth; + if(nx>aPos.X()) + { + aPos.X()=nx; + } + aSize.Width()=nXButtonWidth-3; + aSize.Height()=nXButtonWidth-2; + m_pXButton->SetPosSizePixel(aPos,aSize); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::Resize() + { + Size aSize(m_aOutputSize); + Size a2Size(aSize); + + aSize.Width()=m_nNameWidth-3; + a2Size.Width()-=m_nNameWidth; + a2Size.Height() -=2; + + Point aPos(m_aLinePos); + aPos.Y()+=2; + Point aTitlePos(m_aLinePos); + aTitlePos.Y()+=8; + + sal_uInt16 nXButtonWidth=0; + + nXButtonWidth=(sal_uInt16)aSize.Height()-4; + + a2Size.Width()=a2Size.Width()-nXButtonWidth; + + aPos.X()+=aSize.Width(); + + if(m_pBrowserControl) + { + a2Size.Height() = m_pBrowserControl->GetCtrSize().Height(); + m_pBrowserControl->SetCtrSize(a2Size); + } + + if(m_bHasBrowseButton) + { + long nx=m_aOutputSize.Width()-nXButtonWidth; + if(nx>aPos.X()) + { + aPos.X()=nx; + } + aSize.Width()=nXButtonWidth-3; + aSize.Height()=nXButtonWidth-2; + m_pXButton->SetPosSizePixel(aPos,aSize); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::SetNeedsRepaint(sal_Bool bFlag) + { + m_bNeedsRepaint=bFlag; + } + + //------------------------------------------------------------------ + sal_Bool OBrowserLine::NeedsRepaint() + { + return m_bNeedsRepaint; + } + + //------------------------------------------------------------------ + void OBrowserLine::SetTitle(const XubString& rString ) + { + String aText(rString); + aText.AppendAscii("......................................................"); + m_aFtTitle.SetText(aText); + } + + //------------------------------------------------------------------ + XubString OBrowserLine::GetTitle() const + { + return m_aFtTitle.GetText(); + } + + //------------------------------------------------------------------ + void OBrowserLine::SetKindOfControl(BrowserControlType eKOC) + { + m_eControlType=eKOC; + } + + //------------------------------------------------------------------ + BrowserControlType OBrowserLine::GetKindOfControl() + { + return m_eControlType; + } + + //------------------------------------------------------------------ + void OBrowserLine::ShowXButton() + { + m_bHasBrowseButton=sal_True; + if(m_pXButton) + delete m_pXButton; + m_pXButton=new PushButton(m_pTheParent); + m_pXButton->SetGetFocusHdl(LINK( this, OBrowserLine, GetFocusHdl)); + m_pXButton->SetData((void *)this); + m_pXButton->SetText(String::CreateFromAscii("...")); + m_pXButton->Show(); + Resize(); + } + + //------------------------------------------------------------------ + void OBrowserLine::HideXButton() + { + m_bHasBrowseButton=sal_False; + if(m_pXButton) + { + m_pXButton->Hide(); + delete m_pXButton; + m_pXButton=NULL; + } + Resize(); + } + + //------------------------------------------------------------------ + sal_Bool OBrowserLine::IsVisibleXButton() + { + return m_bHasBrowseButton; + } + + //------------------------------------------------------------------ + void OBrowserLine::ShowAsHyperLink(sal_Bool nFlag) + { + m_bIsHyperlink=nFlag; + if(nFlag) + { + Font aFont(m_aFtTitle.GetFont()); + aFont.SetUnderline(UNDERLINE_SINGLE); + aFont.SetColor(Color(COL_BLUE)); + m_aFtTitle.SetFont(aFont); + } + else + { + Font aFont=m_aFtTitle.GetFont(); + m_aFtTitle.SetFont(aFont); + } + } + + //------------------------------------------------------------------ + sal_Bool OBrowserLine::IsShownAsHyperlink() + { + return m_bIsHyperlink; + } + + //------------------------------------------------------------------ + void OBrowserLine::Locked(sal_Bool nFlag) + { + m_bIsLocked=nFlag; + } + + //------------------------------------------------------------------ + sal_Bool OBrowserLine::IsLocked() + { + return m_bIsLocked; + } + + //------------------------------------------------------------------ + void OBrowserLine::SetTitleWidth(sal_uInt16 nWidth) + { + if (m_nNameWidth != nWidth+10) + { + m_nNameWidth = nWidth+10; + SetControlPosSize(m_aLinePos,m_aOutputSize); + } + } + + //------------------------------------------------------------------ + void OBrowserLine::SetClickHdl(const Link& rLink) + { + if(m_pXButton) + m_pXButton->SetClickHdl(rLink ); + } + + //------------------------------------------------------------------ + IMPL_LINK( OBrowserLine, GetFocusHdl, PushButton*, pPB ) + { + if(m_pBrowserControl) + { + IBrowserControlListener* pListener = m_pBrowserControl->getListener(); + if (pListener) + pListener->GetFocus(m_pBrowserControl); + } + return 0; + } +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 10.01.01 15:04:18 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserline.hxx b/extensions/source/propctrlr/browserline.hxx new file mode 100644 index 000000000..7b12c9f5b --- /dev/null +++ b/extensions/source/propctrlr/browserline.hxx @@ -0,0 +1,170 @@ +/************************************************************************* + * + * $RCSfile: browserline.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:25:14 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERLINE_HXX_ +#define _EXTENSIONS_PROPCTRLR_BROWSERLINE_HXX_ + +#ifndef _COMPHELPER_STLTYPES_HXX_ +#include <comphelper/stl_types.hxx> +#endif +#ifndef _SV_FIXED_HXX +#include <vcl/fixed.hxx> +#endif +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROL_HXX_ +#include "brwcontrol.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + class IBrowserControl; + //======================================================================== + class OBrowserLine + { + private: + FixedText m_aFtTitle; + Size m_aOutputSize; + Point m_aLinePos; + IBrowserControl* m_pBrowserControl; + PushButton* m_pXButton; + Window* m_pTheParent; + void* m_pData; + BrowserControlType m_eControlType; + sal_uInt16 m_nNameWidth; + sal_Bool m_bNewNameWidth:1; + sal_Bool m_bNeedsRepaint:1; + sal_Bool m_bIsLocked:1; + sal_Bool m_bHasBrowseButton:1; + sal_Bool m_bIsHyperlink:1; + + DECL_LINK(GetFocusHdl,PushButton*); + + + protected: + virtual void Resize(); + void SetControlPosSize(Point aPos,Size aSize); + + public: + OBrowserLine( Window* pParent); + ~OBrowserLine(); + + sal_Bool NeedsRepaint(); + void SetNeedsRepaint(sal_Bool bFlag); + void setControl(IBrowserControl*); + IBrowserControl* getControl(); + + void SetKindOfControl(BrowserControlType); + BrowserControlType GetKindOfControl(); + + void SetHelpId(sal_uInt32 nCtrHelpId,sal_uInt32 nBtUniqueId); + + void SetTitle(const String& rString ); + String GetTitle() const; + void SetTitleWidth(sal_uInt16); + + void SetSizePixel(Size aSize); + void SetPosPixel(Point aPos); + void SetPosSizePixel(Point aPos,Size aSize); + Size GetSizePixel(); + void Show(sal_Bool bFlag=sal_True); + void Hide(); + sal_Bool IsVisible(); + void Invalidate(); + void Update(); + + Window* GetRefWindow(); + void SetTabOrder(Window* pRefWindow, sal_uInt16 nFlags ); + + sal_Bool GrabFocus(); + void ShowXButton(); + void HideXButton(); + sal_Bool IsVisibleXButton(); + void ShowAsHyperLink(sal_Bool nFlag=sal_True); + sal_Bool IsShownAsHyperlink(); + + void Locked(sal_Bool nFlag=sal_True); + sal_Bool IsLocked(); + + void SetClickHdl(const Link&); + void SetData(void* pDat); + void* GetData(); + }; + + DECLARE_STL_VECTOR( OBrowserLine*, OBrowserLinesArray ); + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_BROWSERLINE_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 16:36:15 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserlistbox.cxx b/extensions/source/propctrlr/browserlistbox.cxx new file mode 100644 index 000000000..e95010bab --- /dev/null +++ b/extensions/source/propctrlr/browserlistbox.cxx @@ -0,0 +1,898 @@ +/************************************************************************* + * + * $RCSfile: browserlistbox.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:25:25 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERLISTBOX_HXX_ +#include "browserlistbox.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "propresid.hrc" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPLINELISTENER_HXX_ +#include "proplinelistener.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_LINEDESCRIPTOR_HXX_ +#include "linedescriptor.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_STANDARDCONTROL_HXX_ +#include "standardcontrol.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + +#define FRAME_OFFSET 4 + // TODO: find out what this is really for ... and check if it does make sense in the new + // browser environment + + //================================================================== + //= OBrowserListBox + //================================================================== + DBG_NAME(OBrowserListBox); + //------------------------------------------------------------------ + OBrowserListBox::OBrowserListBox( Window* pParent, WinBits nWinStyle) + :Control(pParent, nWinStyle| WB_CLIPCHILDREN) + ,m_aVScroll(this,WB_VSCROLL|WB_REPEAT|WB_DRAG) + ,m_aPlayGround(this,WB_DIALOGCONTROL | WB_CLIPCHILDREN) + ,m_pLineListener(NULL) + ,m_bUpdate(sal_True) + ,m_aStandard(ModuleRes(RID_STR_STANDARD)) + ,m_bIsActiv(sal_False) + ,m_nYOffset(0) + ,m_nSelectedLine(0) + ,m_nTheNameSize(0) + { + DBG_CTOR(OBrowserListBox,NULL); + + ListBox aListBox(this,WB_DROPDOWN); + aListBox.SetPosSizePixel(Point(0,0),Size(100,100)); + m_nRowHeight = (sal_uInt16)aListBox.GetSizePixel().Height()+2; + SetBackground(m_aPlayGround.GetBackground()); + + m_aPlayGround.SetPosPixel(Point(0,0)); + m_aPlayGround.SetPaintTransparent(sal_True); + m_aPlayGround.Show(); + m_aVScroll.Hide(); + m_aVScroll.SetScrollHdl(LINK(this, OBrowserListBox, ScrollHdl)); + + } + + //------------------------------------------------------------------ + OBrowserListBox::~OBrowserListBox() + { + if (m_bIsActiv && (m_aLines.size() > m_nSelectedLine)) + { + IBrowserControl* pControl = m_aLines[m_nSelectedLine]->getControl(); + pControl->CommitModified(); + } + Hide(); + Clear(); + + DBG_DTOR(OBrowserListBox,NULL); + } + + //------------------------------------------------------------------ + void OBrowserListBox::Activate(sal_Bool _bActive) + { + m_bIsActiv = _bActive; + if (m_bIsActiv) + { + // TODO: what's the sense of this? + m_aVScroll.SetThumbPos(100); + MoveThumbTo(0); + Resize(); + } + } + + //------------------------------------------------------------------ + void OBrowserListBox::Resize() + { + Size aSize(GetOutputSizePixel()); + m_aPlayGround.SetSizePixel(aSize); + + UpdateVScroll(); + + Size a2Size(aSize); + Size aVScrollSize; + + sal_Int32 nThumbPos = m_aVScroll.GetThumbPos(); + sal_Int32 nLines = CalcVisibleLines(); + + sal_Bool bNeedScrollbar = m_aLines.size() > (sal_uInt32)nLines; + if (!bNeedScrollbar) + { // don't need a scrollbar + if (m_aVScroll.IsVisible()) + m_aVScroll.Hide(); + nThumbPos=0; + m_nYOffset=0; + m_aPlayGround.SetSizePixel(aSize); + m_aVScroll.SetThumbPos(nThumbPos); + } + else + { // need a scrollbar -> adjust the playground + Point aPos(0,0); + aVScrollSize = m_aVScroll.GetSizePixel(); + aVScrollSize.Height() = aSize.Height(); + a2Size.Width() -= aVScrollSize.Width(); + aPos.X() = a2Size.Width(); + m_aVScroll.SetPosPixel(aPos); + m_aVScroll.SetSizePixel(aVScrollSize); + m_aPlayGround.SetSizePixel(a2Size); + } + + for (sal_uInt16 i=0; i<m_aLines.size(); ++i) + m_aLines[i]->SetNeedsRepaint(sal_True); + + // repaint + EnablePaint(sal_False); + UpdatePlayGround(); + EnablePaint(sal_True); + + // show the scrollbar + if (bNeedScrollbar) + m_aVScroll.Show(); + } + + //------------------------------------------------------------------ + void OBrowserListBox::setListener(IPropertyLineListener* _pPLL) + { + m_pLineListener = _pPLL; + } + + //------------------------------------------------------------------ + sal_uInt16 OBrowserListBox::CalcVisibleLines() + { + Size aSize(m_aPlayGround.GetOutputSizePixel()); + sal_uInt16 nResult = 0; + if (0 != m_nRowHeight) + nResult = (sal_uInt16) aSize.Height()/m_nRowHeight; + + return nResult; + } + + //------------------------------------------------------------------ + void OBrowserListBox::UpdateVScroll() + { + sal_uInt16 nLines = CalcVisibleLines(); + m_aVScroll.SetPageSize(nLines-1); + m_aVScroll.SetVisibleSize(nLines-1); + + sal_uInt16 nCount = m_aLines.size(); + sal_Int32 nThumbPos = m_aVScroll.GetThumbPos(); + if (nCount>0) + { + m_aVScroll.SetRange(Range(0,nCount-1)); + m_nYOffset = -m_aVScroll.GetThumbPos()*m_nRowHeight; + } + else + { + m_aVScroll.SetRange(Range(0,0)); + m_nYOffset = 0; + } + } + + //------------------------------------------------------------------ + void OBrowserListBox::ShowLine(sal_uInt16 i) + { + Size aSize(m_aPlayGround.GetOutputSizePixel()); + Point aPos(0, m_nYOffset); + + aSize.Height() = m_nRowHeight; + + aPos.Y() += i * m_nRowHeight; + + if (i<m_aLines.size()) + { + // adjust the pos and - if needed - the size + if (m_aLines[i]->GetSizePixel() != aSize) + m_aLines[i]->SetPosSizePixel(aPos, aSize); + else + m_aLines[i]->SetPosPixel(aPos); + + m_aLines[i]->SetTitleWidth(m_nTheNameSize + 2 * FRAME_OFFSET); + + // show the line if necessary + if (!m_aLines[i]->IsVisible()) + m_aLines[i]->Show(); + } + + } + + //------------------------------------------------------------------ + void OBrowserListBox::UpdatePosNSize() + { + sal_uInt16 i; + + for (i=0; i<m_aLines.size(); ++i) + { + if (m_aLines[i]->NeedsRepaint()) + ShowLine(i); + } + for (i=0; i<m_aLines.size(); ++i) + m_aLines[i]->SetNeedsRepaint(sal_False); + + } + + //------------------------------------------------------------------ + void OBrowserListBox::UpdatePlayGround() + { + sal_Int32 nThumbPos = m_aVScroll.GetThumbPos(); + sal_Int32 nLines = CalcVisibleLines(); + + sal_uInt16 nEnd = (sal_uInt16)(nThumbPos + nLines); + if (nEnd >= m_aLines.size()) + nEnd = m_aLines.size()-1; + + if (m_aLines.size()>0) + { + for (sal_uInt16 i = (sal_uInt16)nThumbPos; i<=nEnd; ++i) + m_aLines[i]->SetNeedsRepaint(sal_True); + UpdatePosNSize(); + } + } + + //------------------------------------------------------------------ + void OBrowserListBox::UpdateAll() + { + Resize(); + } + + //------------------------------------------------------------------ + void OBrowserListBox::DisableUpdate() + { + m_bUpdate = sal_False; + } + + //------------------------------------------------------------------ + void OBrowserListBox::EnableUpdate() + { + m_bUpdate = sal_True; + UpdateAll(); + } + + //------------------------------------------------------------------ + void OBrowserListBox::SetPropertyValue(const ::rtl::OUString& _rEntryName, const ::rtl::OUString& _rValue) + { + // TODO: why not an O(log n) search? would need a map for this ... + sal_uInt16 i, nEnd = m_aLines.size(); + for (i = 0 ; i<nEnd ; ++i) + { + OBrowserLine* pLine = m_aLines[i]; + IBrowserControl* pControl = pLine->getControl(); + if (pControl && (pControl->GetMyName() == _rEntryName)) + { + pControl->SetProperty(_rValue); + break; + } + } + } + + //------------------------------------------------------------------------ + ::rtl::OUString OBrowserListBox::GetPropertyValue(const ::rtl::OUString& _rEntryName) const + { + // TODO: O(log n) search + sal_uInt16 i, nEnd = m_aLines.size(); + for (i=0; i<nEnd; ++i) + { + OBrowserLine* pLine = m_aLines[i]; + IBrowserControl* pControl = pLine->getControl(); + if (pControl && (pControl->GetMyName() == _rEntryName)) + return pControl->GetProperty(); + } + + return ::rtl::OUString(); + } + + //------------------------------------------------------------------------ + sal_uInt16 OBrowserListBox::GetPropertyPos(const ::rtl::OUString& _rEntryName) const + { + // TODO: O(log n) search + sal_uInt16 i, nEnd = m_aLines.size(); + sal_uInt16 nRet = LISTBOX_ENTRY_NOTFOUND; + for (i=0; i<nEnd; ++i) + { + OBrowserLine* pLine = m_aLines[i]; + IBrowserControl* pControl = pLine->getControl(); + if (pControl && (pControl->GetMyName() == _rEntryName)) + { + nRet = i; + break; + } + } + + return nRet; + } + + //------------------------------------------------------------------------ + IBrowserControl* OBrowserListBox::GetPropertyControl(const ::rtl::OUString& _rEntryName) + { + // TODO: O(log n) search + sal_uInt16 i, nEnd = m_aLines.size(); + for (i = 0 ; i<nEnd ; ++i) + { + OBrowserLine* pLine = m_aLines[i]; + IBrowserControl* pControl = pLine->getControl(); + if (pControl && (pControl->GetMyName() == _rEntryName)) + return pControl; + } + return NULL; + } + + //------------------------------------------------------------------------ + IBrowserControl* OBrowserListBox::GetCurrentPropertyControl() + { + sal_uInt16 i, nEnd = m_aLines.size(); + for (i=0; i<nEnd; ++i) + { + OBrowserLine* pLine = m_aLines[i]; + IBrowserControl* pControl = pLine ? pLine->getControl() : NULL; + Window* pControlWindow = pControl ? pControl->GetMe() : NULL; + if (pControlWindow && pControlWindow->HasChildPathFocus()) + return pControl; + } + return NULL; + } + + //------------------------------------------------------------------------ + void OBrowserListBox::SetPropertyData(const ::rtl::OUString& _rEntryName, void* pData) + { + // TODO: O(log n) search + sal_uInt16 i, nEnd = m_aLines.size(); + for (i = 0 ; i<nEnd ; ++i) + { + OBrowserLine* pLine = m_aLines[i]; + IBrowserControl* pControl = pLine->getControl(); + if (pControl && (pControl->GetMyName() == _rEntryName)) + { + pControl->SetMyData(pData); + break; + } + } + } + + //------------------------------------------------------------------------ + sal_uInt16 OBrowserListBox::AppendEntry(const OLineDescriptor& _rPropData) + { + return InsertEntry(_rPropData); + } + + //------------------------------------------------------------------ + sal_uInt16 OBrowserListBox::InsertEntry(const OLineDescriptor& _rPropertyData, sal_uInt16 _nPos) + { + // create a new line + OBrowserLine* pBrowserLine = new OBrowserLine(&m_aPlayGround); + + sal_uInt16 nInsertPos = _nPos; + + if (EDITOR_LIST_APPEND == nInsertPos) + { + nInsertPos = m_aLines.size(); + m_aLines.push_back(pBrowserLine); + } + else + m_aLines.insert(m_aLines.begin() + nInsertPos, pBrowserLine); + + pBrowserLine->SetTitleWidth(m_nTheNameSize); + if (m_bUpdate) + { + UpdateVScroll(); + Invalidate(); + } + + // initialize the entry + ChangeEntry(_rPropertyData, nInsertPos); + return nInsertPos; + } + + //------------------------------------------------------------------ + sal_uInt16 OBrowserListBox::GetFirstVisibleEntry() + { + return (sal_uInt16)m_aVScroll.GetThumbPos(); + } + + //------------------------------------------------------------------ + void OBrowserListBox::SetFirstVisibleEntry(sal_uInt16 _nPos) + { + if (_nPos<m_aLines.size()) + MoveThumbTo(_nPos); + } + + //------------------------------------------------------------------ + void OBrowserListBox::SetSelectedEntry(sal_uInt16 _nPos) + { + if (_nPos<m_aLines.size()) + { + m_nSelectedLine=_nPos; + ShowEntry(_nPos); + m_aLines[_nPos]->GrabFocus(); + } + } + + //------------------------------------------------------------------ + sal_uInt16 OBrowserListBox::GetSelectedEntry() + { + return m_nSelectedLine; + } + + //------------------------------------------------------------------ + void OBrowserListBox::ShowEntry(sal_uInt16 _nPos) + { + if (_nPos<m_aLines.size()) + { + sal_Int32 nThumbPos = m_aVScroll.GetThumbPos(); + + if (_nPos < nThumbPos) + MoveThumbTo(_nPos); + else + { + sal_Int32 nLines = CalcVisibleLines(); + if (_nPos >= nThumbPos + nLines) + MoveThumbTo(_nPos - nLines + 1); + } + } + + } + + //------------------------------------------------------------------ + void OBrowserListBox::MoveThumbTo(sal_Int32 _nNewThumbPos) + { + // disable painting to prevent flicker + m_aPlayGround.EnablePaint(sal_False); + + sal_Int32 nDelta = _nNewThumbPos - m_aVScroll.GetThumbPos(); + // adjust the scrollbar + m_aVScroll.SetThumbPos(_nNewThumbPos); + sal_Int32 nThumbPos = nThumbPos = _nNewThumbPos; + + m_nYOffset = -m_aVScroll.GetThumbPos() * m_nRowHeight; + + sal_Int32 nLines = CalcVisibleLines(); + sal_uInt16 nEnd = (sal_uInt16)(nThumbPos + nLines); + + m_aPlayGround.Scroll(0, -nDelta * m_nRowHeight, SCROLL_CHILDREN); + + if (1 == nDelta) + { + // TODO: what's the sense of this two ShowLines? Why not just one call? + ShowLine(nEnd-1); + ShowLine(nEnd); + } + else if (-1 == nDelta) + { + ShowLine((sal_uInt16)nThumbPos); + } + else if (0 != nDelta) + { + UpdatePlayGround(); + } + + m_aPlayGround.EnablePaint(sal_True); + m_aPlayGround.Invalidate(INVALIDATE_CHILDREN); + } + + //------------------------------------------------------------------ + IMPL_LINK(OBrowserListBox, ScrollHdl, ScrollBar*, _pScrollBar ) + { + DBG_ASSERT(_pScrollBar == &m_aVScroll, "OBrowserListBox::ScrollHdl: where does this come from?"); + + // disable painting to prevent flicker + m_aPlayGround.EnablePaint(sal_False); + + sal_Int32 nThumbPos = m_aVScroll.GetThumbPos(); + + sal_Int32 nDelta = m_aVScroll.GetDelta(); + m_nYOffset = -nThumbPos * m_nRowHeight; + + sal_uInt16 nEnd = (sal_uInt16)(nThumbPos + CalcVisibleLines()); + + m_aPlayGround.Scroll(0, -nDelta * m_nRowHeight, SCROLL_CHILDREN); + + if (1 == nDelta) + { + ShowLine(nEnd-1); + ShowLine(nEnd); + } + else if (nDelta==-1) + { + ShowLine((sal_uInt16)nThumbPos); + } + else if (nDelta!=0 || m_aVScroll.GetType() == SCROLL_DONTKNOW) + { + UpdatePlayGround(); + } + + m_aPlayGround.EnablePaint(sal_True); + return 0; + } + + //------------------------------------------------------------------ + IMPL_LINK( OBrowserListBox, ClickHdl, PushButton*,pPB) + { + DBG_ASSERT(pPB, "OBrowserListBox::ClickHdl: invalid button!"); + if (pPB) + { + // notify our LineListener of the ClickecEvent + if (m_pLineListener) + { + OBrowserLine* pBrowserLine = static_cast<OBrowserLine*>(pPB->GetData()); + IBrowserControl* pControl = pBrowserLine->getControl(); + m_pLineListener->Clicked(pControl->GetMyName(), pControl->GetProperty(), pControl->GetMyData()); + } + pPB->GrabFocus(); + } + return 0; + } + + //------------------------------------------------------------------ + void OBrowserListBox::Modified(IBrowserControl* _pControl) + { + DBG_ASSERT(_pControl, "OBrowserListBox::Modified: invalid event source!"); + // notify our line listener + if (_pControl && m_pLineListener) + { + m_pLineListener->Modified( + _pControl->GetMyName(), + _pControl->GetProperty(), + _pControl->GetMyData() + ); + + } + } + + //------------------------------------------------------------------ + void OBrowserListBox::GetFocus(IBrowserControl* _pControl) + { + DBG_ASSERT(_pControl, "OBrowserListBox::GetFocus: invalid event source!"); + if (!_pControl) + return; + + // notify our line listener + if (m_pLineListener) + { + m_pLineListener->Select( + _pControl->GetMyName(), + _pControl->GetMyData() + ); + } + + m_nSelectedLine = _pControl->GetLine(); + ShowEntry(m_nSelectedLine); + } + + //------------------------------------------------------------------ + void OBrowserListBox::Commit(IBrowserControl* _pControl) + { + DBG_ASSERT(_pControl, "OBrowserListBox::Commit: invalid event source!"); + if (!_pControl) + return; + + // upon losing the focus, we notify our listener so that it can commit the content + if (m_pLineListener) + { + m_pLineListener->Commit( + _pControl->GetMyName(), + _pControl->GetProperty(), + _pControl->GetMyData() + ); + } + } + + //------------------------------------------------------------------ + void OBrowserListBox::TravelLine(IBrowserControl* _pControl) + { + sal_Int32 nLine = _pControl->GetLine(); + + if (_pControl->GetDirection()) + { + // cycle forwards, 'til we've the next control which can grab the focus + ++nLine; + while ((sal_uInt32)nLine<m_aLines.size()) + { + if (m_aLines[nLine]->GrabFocus()) + break; + ++nLine; + } + + if ( ((sal_uInt32)nLine >= m_aLines.size()) + && (m_aLines.size() > 0) + ) + // wrap around + m_aLines[0]->GrabFocus(); + } + else + { // cycle backwards, 'til we've the next control which can grab the focus + --nLine; + while (nLine>=0) + { + if (m_aLines[nLine]->GrabFocus()) + break; + --nLine; + } + + if ( (nLine < 0) + && (0 < m_aLines.size()) + ) + // wrap around + m_aLines[m_aLines.size() - 1]->GrabFocus(); + } + } + + //------------------------------------------------------------------ + void OBrowserListBox::KeyInput(IBrowserControl* _pControl, const KeyCode& _rKey) + { + DBG_ASSERT(_pControl, "OBrowserListBox::KeyInput: invalid event source!"); + if (!_pControl) + return; + + // not really interested in ... + } + + //------------------------------------------------------------------ + void OBrowserListBox::Clear() + { + for ( OBrowserLinesArrayIterator aLoop = m_aLines.begin(); + aLoop != m_aLines.end(); + ++aLoop + ) + { + // hide the line + (*aLoop)->Hide(); + // reset the listener + (*aLoop)->getControl()->setListener(NULL); + // delete the control + delete (*aLoop)->getControl(); + // delete the line + delete *aLoop; + } + + m_aLines.clear(); + } + + //------------------------------------------------------------------ + void OBrowserListBox::ChangeEntry(const OLineDescriptor& _rPropertyData, sal_uInt16 nPos) + { + sal_Bool bNew=sal_True; + if (nPos < m_aLines.size()) + { + Window* pRefWindow=NULL; + if (nPos>0) + pRefWindow = m_aLines[nPos-1]->GetRefWindow(); + + // the current line and control + OBrowserLine* pBrowserLine = m_aLines[nPos]; + IBrowserControl* pControl = pBrowserLine->getControl(); + + // position of the control + Point aControlPos; + if (pControl) + aControlPos=pControl->GetCtrPos(); + + if (pBrowserLine->GetKindOfControl() != _rPropertyData.eControlType) + { + // need to create a new control + + bNew = sal_True; + delete pBrowserLine->getControl(); + + // default winbits: a border only + WinBits nWinBits=WB_BORDER; + if (_rPropertyData.bIsLocked) + nWinBits|=WB_READONLY; + + pBrowserLine->SetKindOfControl(_rPropertyData.eControlType); // may be overwritten + + // create the new control + IBrowserControl* pNewControl = NULL; + // TODO: source this out (into a factory) + switch(_rPropertyData.eControlType) + { + case BCT_LEDIT: + pNewControl = new OMultilineEditControl(&m_aPlayGround,sal_False, nWinBits | WB_DROPDOWN | WB_TABSTOP); + pBrowserLine->SetKindOfControl(BCT_MEDIT); + break; + + case BCT_MEDIT: + pNewControl = new OMultilineEditControl(&m_aPlayGround,sal_True, nWinBits | WB_DROPDOWN | WB_TABSTOP); + break; + + case BCT_LISTBOX: + pNewControl = new OListboxControl(&m_aPlayGround, nWinBits | WB_TABSTOP | WB_DROPDOWN); + break; + + case BCT_COMBOBOX: + pNewControl = new OComboboxControl(&m_aPlayGround, nWinBits | WB_TABSTOP | WB_SORT | WB_DROPDOWN); + break; + + case BCT_EDIT: + pNewControl = new OEditControl(&m_aPlayGround,sal_False,nWinBits | WB_TABSTOP); + break; + + case BCT_CHAREDIT: + pNewControl = new OEditControl(&m_aPlayGround,sal_True,nWinBits | WB_TABSTOP); + pBrowserLine->SetKindOfControl(BCT_EDIT); + break; + + case BCT_NUMFIELD: + { + ONumericControl* pField = new ONumericControl(&m_aPlayGround, _rPropertyData.nDigits, + nWinBits | WB_TABSTOP | WB_SPIN); + if (_rPropertyData.bHaveMinMax) + { + pField->SetMin(_rPropertyData.nMinValue); + pField->SetMax(_rPropertyData.nMaxValue); + } + pNewControl = pField; + } + break; + + case BCT_CURFIELD: + pNewControl = new OCurrencyControl(&m_aPlayGround,_rPropertyData.nDigits, nWinBits | WB_TABSTOP | WB_SPIN); + break; + + case BCT_DATEFIELD: + pNewControl = new ODateControl(&m_aPlayGround,nWinBits | WB_TABSTOP | WB_SPIN); + break; + + case BCT_TIMEFIELD: + pNewControl = new OTimeControl(&m_aPlayGround,nWinBits | WB_TABSTOP | WB_SPIN); + break; + + case BCT_COLORBOX: + pNewControl = new OColorControl(&m_aPlayGround, nWinBits | WB_TABSTOP | WB_DROPDOWN); + break; + + case BCT_USERDEFINED: + DBG_ASSERT(_rPropertyData.pControl, "OBrowserListBox::ChangeEntry: invalid user defined control!"); + pNewControl = _rPropertyData.pControl; + pNewControl->SetCtrParent(&m_aPlayGround); + break; + + default: + pNewControl = NULL; + pBrowserLine->SetKindOfControl(BCT_UNDEFINED); + break; + } + + pBrowserLine->setControl(pNewControl); + pNewControl->SetCtrPos(aControlPos); + // forward the locking flag to the control + pNewControl->SetLocked(_rPropertyData.bIsLocked); + + // remember this new control + pControl = pNewControl; + } + else + { + bNew = sal_False; + if (pControl && pControl->HasList()) + pControl->ClearList(); + } + + if (pControl) + { + pControl->setListener(this); + // forward the data from the descriptor + pControl->SetMyData(_rPropertyData.pDataPtr); + pControl->SetMyName(_rPropertyData.sName); + pControl->SetLine(nPos); + + if (pControl->HasList()) + { + // the standard entry + if (_rPropertyData.bHasDefaultValue && (BCT_COLORBOX != _rPropertyData.eControlType)) + pControl->InsertCtrEntry(m_aStandard); + + // all other entries from the descriptor + for (sal_uInt32 i=0;i<_rPropertyData.aListValues.size(); ++i) + pControl->InsertCtrEntry(_rPropertyData.aListValues[i]); + } + + // the initial property value + pControl->SetProperty(_rPropertyData.sValue, _rPropertyData.bUnknownValue); + } + + pBrowserLine->SetTitle(_rPropertyData.sTitle); + + sal_uInt16 nTextWidth = (sal_uInt16)m_aPlayGround.GetTextWidth(_rPropertyData.sTitle); + if (m_nTheNameSize< nTextWidth) + m_nTheNameSize = nTextWidth; + + if (_rPropertyData.bHasBrowseButton) + { + pBrowserLine->ShowXButton(); + pBrowserLine->SetClickHdl(LINK( this, OBrowserListBox, ClickHdl ) ); + } + else + pBrowserLine->HideXButton(); + + pBrowserLine->Locked(_rPropertyData.bIsLocked); + + pBrowserLine->ShowAsHyperLink(_rPropertyData.bIsHyperlink); + pBrowserLine->SetData(_rPropertyData.pDataPtr); + + if (bNew) + { + if (nPos>0) + pBrowserLine->SetTabOrder(pRefWindow, WINDOW_ZORDER_BEHIND); + else + pBrowserLine->SetTabOrder(pRefWindow, WINDOW_ZORDER_FIRST ); + + pBrowserLine->SetNeedsRepaint(sal_True); + pBrowserLine->SetHelpId(_rPropertyData.nHelpId,_rPropertyData.nUniqueButtonId); + } + } + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 15:59:04 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserlistbox.hxx b/extensions/source/propctrlr/browserlistbox.hxx new file mode 100644 index 000000000..e319413ac --- /dev/null +++ b/extensions/source/propctrlr/browserlistbox.hxx @@ -0,0 +1,184 @@ +/************************************************************************* + * + * $RCSfile: browserlistbox.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:25:36 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERLISTBOX_HXX_ +#define _EXTENSIONS_PROPCTRLR_BROWSERLISTBOX_HXX_ + +#ifndef _SV_SCRBAR_HXX +#include <vcl/scrbar.hxx> +#endif +#ifndef _SV_LSTBOX_HXX +#include <vcl/lstbox.hxx> +#endif +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _LINK_HXX +#include <tools/link.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROLLISTENER_HXX_ +#include "brwcontrollistener.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERLINE_HXX_ +#include "browserline.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + class IPropertyLineListener; + struct OLineDescriptor; + //======================================================================== + //= OBrowserListBox + //======================================================================== + class OBrowserListBox + :public Control + ,public IBrowserControlListener + ,public OModuleResourceClient + { + protected: + Window m_aPlayGround; + ScrollBar m_aVScroll; + OBrowserLinesArray m_aLines; + ::rtl::OUString m_aStandard; + IPropertyLineListener* m_pLineListener; + long m_nYOffset; + sal_uInt16 m_nSelectedLine; + sal_uInt16 m_nTheNameSize; + sal_uInt16 m_nRowHeight; + sal_Bool m_bIsActiv : 1; + sal_Bool m_bUpdate : 1; + + protected: + void ShowLine(sal_uInt16 i); + void UpdatePosNSize(); + void UpdatePlayGround(); + void UpdateVScroll(); + void ShowEntry(sal_uInt16 nPos); + void MoveThumbTo(long nNewThumbPos); + void Resize(); + + + public: + OBrowserListBox( Window* pParent, WinBits nWinStyle = WB_DIALOGCONTROL ); + + ~OBrowserListBox(); + + void UpdateAll(); + + virtual void Activate(sal_Bool _bActive = sal_True); + + virtual sal_uInt16 CalcVisibleLines(); + virtual void EnableUpdate(); + virtual void DisableUpdate(); + + virtual void setListener(IPropertyLineListener* _pPLL); + + virtual void Clear(); + + virtual sal_uInt16 InsertEntry(const OLineDescriptor&, sal_uInt16 nPos = EDITOR_LIST_APPEND); + + virtual void ChangeEntry( const OLineDescriptor&, sal_uInt16 nPos); + + virtual sal_uInt16 AppendEntry( const OLineDescriptor&); + + virtual void SetPropertyValue( const ::rtl::OUString & rEntryName, const ::rtl::OUString & rValue ); + virtual ::rtl::OUString GetPropertyValue( const ::rtl::OUString & rEntryName ) const; + virtual sal_uInt16 GetPropertyPos( const ::rtl::OUString& rEntryName ) const; + virtual void SetPropertyData( const ::rtl::OUString& rEntryName, void* pData ); + virtual IBrowserControl* GetPropertyControl( const ::rtl::OUString& rEntryName ); + virtual IBrowserControl* GetCurrentPropertyControl(); + + virtual void SetFirstVisibleEntry(sal_uInt16 nPos); + virtual sal_uInt16 GetFirstVisibleEntry(); + + virtual void SetSelectedEntry(sal_uInt16 nPos); + virtual sal_uInt16 GetSelectedEntry(); + protected: + DECL_LINK( ScrollHdl, ScrollBar* ); + DECL_LINK( ClickHdl, PushButton* ); + + // IBrowserControlListener + virtual void Modified (IBrowserControl* _pControl); + virtual void GetFocus (IBrowserControl* _pControl); + virtual void Commit (IBrowserControl* _pControl); + virtual void KeyInput (IBrowserControl* _pControl, const KeyCode& _rKey); + virtual void TravelLine (IBrowserControl* _pControl); + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_BROWSERLISTBOX_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 15:48:58 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserpage.cxx b/extensions/source/propctrlr/browserpage.cxx new file mode 100644 index 000000000..e794b0ba1 --- /dev/null +++ b/extensions/source/propctrlr/browserpage.cxx @@ -0,0 +1,118 @@ +/************************************************************************* + * + * $RCSfile: browserpage.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:25:49 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERPAGE_HXX_ +#include "browserpage.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + //================================================================== + // class OBrowserPage + //================================================================== + //------------------------------------------------------------------ + OBrowserPage::OBrowserPage(Window* pParent,WinBits nWinStyle) + :TabPage(pParent,nWinStyle) + ,m_aListBox(this) + { + m_aListBox.SetBackground(GetBackground()); + Point aPos(3,3); + m_aListBox.SetPosPixel(aPos); + m_aListBox.Show(); + } + + //------------------------------------------------------------------ + void OBrowserPage::Resize() + { + Size aSize(GetOutputSizePixel()); + aSize.Width() -= 6; + aSize.Height() -= 6; + + m_aListBox.SetSizePixel(aSize); + } + + //------------------------------------------------------------------ + OBrowserListBox* OBrowserPage::getListBox() + { + return &m_aListBox; + } + + //------------------------------------------------------------------ + void OBrowserPage::StateChanged(StateChangedType nType) + { + Window::StateChanged( nType); + if (STATE_CHANGE_VISIBLE == nType) + m_aListBox.Activate(IsVisible()); + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 17:09:37 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserpage.hxx b/extensions/source/propctrlr/browserpage.hxx new file mode 100644 index 000000000..86c5060cc --- /dev/null +++ b/extensions/source/propctrlr/browserpage.hxx @@ -0,0 +1,107 @@ +/************************************************************************* + * + * $RCSfile: browserpage.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:25:58 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERPAGE_HXX_ +#define _EXTENSIONS_PROPCTRLR_BROWSERPAGE_HXX_ + +#ifndef _SV_TABPAGE_HXX +#include <vcl/tabpage.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERLISTBOX_HXX_ +#include "browserlistbox.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + //= OBrowserPage + //======================================================================== + class OBrowserPage : public TabPage + { + private: + OBrowserListBox m_aListBox; + + protected: + virtual void Resize(); + virtual void StateChanged(StateChangedType nType); + + public: + OBrowserPage(Window* pParent, WinBits nWinStyle = 0); + + OBrowserListBox* getListBox(); + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_BROWSERPAGE_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 15:45:44 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserview.cxx b/extensions/source/propctrlr/browserview.cxx new file mode 100644 index 000000000..9bed55f7e --- /dev/null +++ b/extensions/source/propctrlr/browserview.cxx @@ -0,0 +1,180 @@ +/************************************************************************* + * + * $RCSfile: browserview.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:26:10 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERVIEW_HXX_ +#include "browserview.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ +#include "propertyeditor.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPHELPID_HRC_ +#include "prophelpid.hrc" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPCONTROLLER_HXX_ +#include "propcontroller.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::lang; + + + //======================================================================== + //= class OPropertyBrowserView + //======================================================================== + DBG_NAME(OPropertyBrowserView); + //------------------------------------------------------------------------ + OPropertyBrowserView::OPropertyBrowserView( const Reference< XMultiServiceFactory >& _rxORB, + Window* _pParent, WinBits nBits) + :Window(_pParent, nBits | WB_3DLOOK) + ,m_pActiveController(NULL) + ,m_xORB(_rxORB) + ,m_nActivePage(0) + { + DBG_CTOR(OPropertyBrowserView,NULL); + + m_pPropBox = new OPropertyEditor( this ); + m_pPropBox->SetHelpId(HID_FM_PROPDLG_TABCTR); + + m_pPropBox->Show(); + } + + //------------------------------------------------------------------------ + OPropertyBrowserView::OPropertyBrowserView( const Reference< XMultiServiceFactory >& _rxORB, + Window* _pParent, const ResId& rId) + :Window(_pParent, rId) + ,m_pActiveController(NULL) + ,m_xORB(_rxORB) + ,m_nActivePage(0) + { + DBG_CTOR(OPropertyBrowserView,NULL); + + m_pPropBox = new OPropertyEditor( this ); + + m_pPropBox->SetHelpId(HID_FM_PROPDLG_TABCTR); + + Size aSize = GetOutputSizePixel(); + m_pPropBox->SetPosSizePixel(Point(0,0), aSize); + m_pPropBox->Show(); + } + + //------------------------------------------------------------------------ + OPropertyBrowserView::~OPropertyBrowserView() + { + if(m_pPropBox) + { + sal_uInt16 nTmpPage = m_pPropBox->GetCurPage(); + if (nTmpPage) + m_nActivePage = nTmpPage; + delete m_pPropBox; + } + if (m_pActiveController) + m_pActiveController->release(); + m_pActiveController = NULL; + + m_xORB = NULL; + + DBG_DTOR(OPropertyBrowserView, NULL); + } + + //------------------------------------------------------------------------ + void OPropertyBrowserView::activatePage(sal_uInt16 _nPage) + { + m_nActivePage = _nPage; + getPropertyBox()->SetPage(m_nActivePage); + } + + //------------------------------------------------------------------------ + void OPropertyBrowserView::setActiveController(OPropertyBrowserController* _pController) + { + if (_pController != m_pActiveController) + { + if (m_pActiveController) m_pActiveController->release(); + m_pActiveController = _pController; + if (m_pActiveController) m_pActiveController->acquire(); + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserView::Resize() + { + Size aSize = GetOutputSizePixel(); + m_pPropBox->SetSizePixel(aSize); + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 11:05:54 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/browserview.hxx b/extensions/source/propctrlr/browserview.hxx new file mode 100644 index 000000000..e350e50d4 --- /dev/null +++ b/extensions/source/propctrlr/browserview.hxx @@ -0,0 +1,139 @@ +/************************************************************************* + * + * $RCSfile: browserview.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:26:24 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERVIEW_HXX_ +#define _EXTENSIONS_PROPCTRLR_BROWSERVIEW_HXX_ + +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ +#include <com/sun/star/beans/XPropertySet.hpp> +#endif +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#ifndef _SV_WINDOW_HXX +#include <vcl/window.hxx> +#endif +#ifndef _TOOLS_RESID_HXX +#include <tools/resid.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + class OPropertyBrowserController; + class OPropertyEditor; + + //======================================================================== + //= + //======================================================================== + class OPropertyBrowserView : public Window + { + friend class OPropertyBrowserController; + + OPropertyBrowserController* m_pActiveController; + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xObject; + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xORB; + + OPropertyEditor* m_pPropBox; + sal_uInt16 m_nActivePage; + + protected: + virtual void Resize(); + + public: + OPropertyBrowserView(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB, + Window* pParent, WinBits nBits = 0); + OPropertyBrowserView(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB, + Window* pParent, const ResId& rId); + + virtual ~OPropertyBrowserView(); + + OPropertyBrowserController* getActiveController() const + { return m_pActiveController; } + void setActiveController( OPropertyBrowserController* pController ); + + OPropertyEditor* getPropertyBox() { return m_pPropBox; } + + void setObject(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxObject) + { m_xObject = _rxObject; } + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& getObject() const + { return m_xObject; } + + // page handling + sal_uInt16 getActivaPage() const { return m_nActivePage; } + void activatePage(sal_uInt16 _nPage); + }; + + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_BROWSERVIEW_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 11:01:16 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/commoncontrol.cxx b/extensions/source/propctrlr/commoncontrol.cxx new file mode 100644 index 000000000..76885a769 --- /dev/null +++ b/extensions/source/propctrlr/commoncontrol.cxx @@ -0,0 +1,202 @@ +/************************************************************************* + * + * $RCSfile: commoncontrol.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:26:54 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_COMMONCONTROL_HXX_ +#include "commoncontrol.hxx" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROLLISTENER_HXX_ +#include "brwcontrollistener.hxx" +#endif +#ifndef _SV_COMBOBOX_HXX +#include <vcl/combobox.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + //================================================================== + //= OCommonBehaviourControl + //================================================================== + //------------------------------------------------------------------ + OCommonBehaviourControl::OCommonBehaviourControl(Window* _pMeAsWin) + :m_pListener(NULL) + ,m_pData(NULL) + ,m_bDir(sal_True) + ,m_bLocked(sal_False) + ,m_bModified(sal_False) + ,m_nLine(0) + ,m_sStandardString(getStandardString()) + ,m_pMeAsWindow(_pMeAsWin) + { + DBG_ASSERT(m_pMeAsWindow != NULL, "OCommonBehaviourControl::OCommonBehaviourControl: invalid window!"); + } + + //------------------------------------------------------------------ + void OCommonBehaviourControl::SetLocked(sal_Bool _bFlag) + { + m_bLocked = _bFlag; + Font aFont = m_pMeAsWindow->GetFont(); + if (m_bLocked) + { + aFont.SetColor(Color(COL_GRAY)); + } + else + { + aFont = m_pMeAsWindow->GetParent()->GetFont(); + } + m_pMeAsWindow->SetFont(aFont); + } + + //------------------------------------------------------------------ + void OCommonBehaviourControl::autoSizeWindow() + { + ComboBox aComboBox(m_pMeAsWindow, WB_DROPDOWN); + aComboBox.SetPosSizePixel(Point(0,0), Size(100,100)); + m_pMeAsWindow->SetSizePixel(aComboBox.GetSizePixel()); + } + + //------------------------------------------------------------------ + sal_Bool OCommonBehaviourControl::handlePreNotify(NotifyEvent& rNEvt) + { + if (EVENT_KEYINPUT == rNEvt.GetType()) + { + const KeyCode& aKeyCode = rNEvt.GetKeyEvent()->GetKeyCode(); + sal_uInt16 nKey = aKeyCode.GetCode(); + + if (nKey == KEY_RETURN && !aKeyCode.IsShift()) + { + LoseFocusHdl(m_pMeAsWindow); + m_bDir = sal_True; + if (m_pListener != NULL) + m_pListener->TravelLine(this); + return sal_True; + } + } + return sal_False; + } + + //------------------------------------------------------------------ + void OCommonBehaviourControl::CommitModified() + { + if (IsModified() && getListener()) + getListener()->Commit(this); + m_bModified = sal_False; + } + + //------------------------------------------------------------------ + void OCommonBehaviourControl::modified(Window* _pSource) + { + m_bModified = sal_True; + if (m_pListener != NULL) + m_pListener->Modified(this); + } + + //------------------------------------------------------------------ + void OCommonBehaviourControl::getFocus(Window* _pSource) + { + if (m_pListener != NULL) + m_pListener->GetFocus(this); + } + + //------------------------------------------------------------------ + void OCommonBehaviourControl::commitModified(Window* _pSource) + { + if (m_pListener != NULL && m_bModified) + m_pListener->Commit(this); + m_bModified = sal_False; + } + + //------------------------------------------------------------------ + IMPL_LINK( OCommonBehaviourControl, ModifiedHdl, Window*, _pWin ) + { + modified(_pWin); + return 0; + } + + //------------------------------------------------------------------ + IMPL_LINK( OCommonBehaviourControl, GetFocusHdl, Window*, _pWin ) + { + getFocus(_pWin); + return 0; + } + + //------------------------------------------------------------------ + IMPL_LINK( OCommonBehaviourControl, LoseFocusHdl, Window*, _pWin ) + { + commitModified(_pWin); + return 0; + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 09:55:50 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/commoncontrol.hxx b/extensions/source/propctrlr/commoncontrol.hxx new file mode 100644 index 000000000..d4aebda6e --- /dev/null +++ b/extensions/source/propctrlr/commoncontrol.hxx @@ -0,0 +1,165 @@ +/************************************************************************* + * + * $RCSfile: commoncontrol.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:27:06 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_COMMONCONTROL_HXX_ +#define _EXTENSIONS_PROPCTRLR_COMMONCONTROL_HXX_ + +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROL_HXX_ +#include "brwcontrol.hxx" +#endif +#ifndef _SV_WINDOW_HXX +#include <vcl/window.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + //= OCommonBehaviourControl + //======================================================================== + class OCommonBehaviourControl : public IBrowserControl + { + protected: + ::rtl::OUString m_sStandardString; + ::rtl::OUString m_aName; + Window* m_pMeAsWindow; + IBrowserControlListener* m_pListener; + void* m_pData; + sal_uInt16 m_nLine; + sal_Bool m_bDir : 1; + sal_Bool m_bLocked : 1; + sal_Bool m_bModified : 1; + + public: + OCommonBehaviourControl(Window* _pMeAsWin); + + virtual void setListener(IBrowserControlListener* p) { m_pListener = p; } + virtual IBrowserControlListener* getListener() { return m_pListener; } + + virtual sal_Bool HasList() { return sal_False; } + virtual void ClearList() { return; } + virtual void InsertCtrEntry(const ::rtl::OUString& rString, sal_uInt16 nPos = EDITOR_LIST_APPEND) { return; } + + virtual sal_Bool IsModified() { return m_bModified; } + virtual void CommitModified(); + + virtual void SetMyName(const ::rtl::OUString &rString) { m_aName = rString; } + virtual ::rtl::OUString GetMyName()const { return m_aName; } + + virtual void SetMyData(void* pData) { m_pData = pData; } + virtual void* GetMyData() { return m_pData; } + + virtual sal_Bool GetDirection() { return m_bDir; } + + virtual void SetLine(sal_uInt16 nLine) { m_nLine = nLine; } + virtual sal_uInt16 GetLine() { return m_nLine; } + + virtual void SetLocked(sal_Bool bLocked=sal_True); + + virtual Window* GetMe() { return m_pMeAsWindow; } + + virtual void SetCtrSize(const Size& rSize) { m_pMeAsWindow->SetSizePixel(rSize); } + virtual void SetCtrPos(const Point& aPoint) { m_pMeAsWindow->SetPosPixel(aPoint); } + virtual Point GetCtrPos() const { return m_pMeAsWindow->GetPosPixel(); } + virtual Size GetCtrSize() const { return m_pMeAsWindow->GetSizePixel(); } + virtual void ShowCtr(sal_Bool bFlag=sal_True) { m_pMeAsWindow->Show(bFlag); } + virtual void HideCtr() { m_pMeAsWindow->Hide(); } + + virtual void SetCtrHelpId(sal_uInt32 nHelpId) { m_pMeAsWindow->SetHelpId(nHelpId); } + virtual void SetTabOrder(Window* pRefWindow, sal_uInt16 nFlags ) { m_pMeAsWindow->SetZOrder(pRefWindow,nFlags); } + virtual void SetCtrParent(Window* pParent) { m_pMeAsWindow->SetParent(pParent); } + virtual void InvalidateCtr() { m_pMeAsWindow->Invalidate(); } + virtual void UpdateCtr() { m_pMeAsWindow->Update(); } + + protected: + /// may be used to implement the default handling in PreNotify; returns sal_True if handled + sal_Bool handlePreNotify(NotifyEvent& _rNEvt); + + /// automatically size the window given in the ctor + void autoSizeWindow(); + + /// may be used by derived classes, they forward the event to the PropCtrListener + DECL_LINK(ModifiedHdl,Window*); + DECL_LINK(GetFocusHdl,Window*); + DECL_LINK(LoseFocusHdl,Window*); + + protected: + // virtual versions of the handlers, called from within the link + virtual void modified(Window* _pSource); + virtual void getFocus(Window* _pSource); + virtual void commitModified(Window* _pSource); + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_COMMONCONTROL_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 09:51:51 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formbrowsertools.cxx b/extensions/source/propctrlr/formbrowsertools.cxx new file mode 100644 index 000000000..156dfaf8f --- /dev/null +++ b/extensions/source/propctrlr/formbrowsertools.cxx @@ -0,0 +1,184 @@ +/************************************************************************* + * + * $RCSfile: formbrowsertools.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:27:35 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_FORMBROWSERTOOLS_HXX_ +#include "formbrowsertools.hxx" +#endif +#ifndef _COM_SUN_STAR_FORM_FORMCOMPONENTTYPE_HPP_ +#include <com/sun/star/form/FormComponentType.hpp> +#endif +#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ +#include <com/sun/star/lang/XServiceInfo.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ +#include <com/sun/star/beans/XPropertySet.hpp> +#endif +#ifndef _EXTENSIONS_FORMCTRLR_PROPRESID_HRC_ +#include "formresid.hrc" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ +#include "formstrings.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::form; + using namespace ::com::sun::star::lang; + using namespace ::com::sun::star::beans; + + ::rtl::OUString GetUIHeadlineName(sal_Int16 nClassId, const Any& aUnoObj) + { + OModuleResourceClient aResourceAccess; + // this ensures that we have our resource file loaded + + ::rtl::OUString sClassName; + switch (nClassId) + { + case FormComponentType::TEXTFIELD: + { + Reference< XInterface > xIFace; + aUnoObj >>= xIFace; + sClassName = String(ModuleRes(RID_STR_PROPTITLE_EDIT)); + if (xIFace.is()) + { // we have a chance to check if it's a formatted field model + Reference< XServiceInfo > xInfo(xIFace, UNO_QUERY); + if (xInfo.is() && (xInfo->supportsService(SERVICE_COMPONENT_FORMATTEDFIELD))) + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_FORMATTED)); + else if (!xInfo.is()) + { + // couldn't distinguish between formatted and edit with the service name, so try with the properties + Reference< XPropertySet > xProps(xIFace, UNO_QUERY); + if (xProps.is()) + { + Reference< XPropertySetInfo > xPropsInfo = xProps->getPropertySetInfo(); + if (xPropsInfo.is() && xPropsInfo->hasPropertyByName(PROPERTY_FORMATSSUPPLIER)) + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_FORMATTED)); + } + } + } + } + break; + + case FormComponentType::COMMANDBUTTON: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_PUSHBUTTON)); break; + case FormComponentType::RADIOBUTTON: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_RADIOBUTTON)); break; + case FormComponentType::CHECKBOX: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_CHECKBOX)); break; + case FormComponentType::LISTBOX: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_LISTBOX)); break; + case FormComponentType::COMBOBOX: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_COMBOBOX)); break; + case FormComponentType::GROUPBOX: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_GROUPBOX)); break; + case FormComponentType::IMAGEBUTTON: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_IMAGEBUTTON)); break; + case FormComponentType::FIXEDTEXT: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_FIXEDTEXT)); break; + case FormComponentType::GRIDCONTROL: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_DBGRID)); break; + case FormComponentType::FILECONTROL: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_FILECONTROL)); break; + + case FormComponentType::DATEFIELD: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_DATEFIELD)); break; + case FormComponentType::TIMEFIELD: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_TIMEFIELD)); break; + case FormComponentType::NUMERICFIELD: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_NUMERICFIELD)); break; + case FormComponentType::CURRENCYFIELD: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_CURRENCYFIELD)); break; + case FormComponentType::PATTERNFIELD: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_PATTERNFIELD)); break; + case FormComponentType::IMAGECONTROL: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_IMAGECONTROL)); break; + case FormComponentType::HIDDENCONTROL: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_HIDDENCONTROL)); break; + + case FormComponentType::CONTROL: + default: + sClassName = ::rtl::OUString(ModuleRes(RID_STR_PROPTITLE_UNKNOWNCONTROL)); break; + } + + return sClassName; + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 14:48:34 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formbrowsertools.hxx b/extensions/source/propctrlr/formbrowsertools.hxx new file mode 100644 index 000000000..3bc1388e7 --- /dev/null +++ b/extensions/source/propctrlr/formbrowsertools.hxx @@ -0,0 +1,91 @@ +/************************************************************************* + * + * $RCSfile: formbrowsertools.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:27:47 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_FORMBROWSERTOOLS_HXX_ +#define _EXTENSIONS_FORMSCTRLR_FORMBROWSERTOOLS_HXX_ + +#ifndef _COM_SUN_STAR_UNO_ANY_HXX_ +#include <com/sun/star/uno/Any.hxx> +#endif +#ifndef _RTL_USTRING_HXX_ +#include <rtl/ustring.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + ::rtl::OUString GetUIHeadlineName(sal_Int16 _nClassId, const ::com::sun::star::uno::Any& _rUnoObject); + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_FORMSCTRLR_FORMBROWSERTOOLS_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 14:36:11 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formcontroller.cxx b/extensions/source/propctrlr/formcontroller.cxx new file mode 100644 index 000000000..46efcf502 --- /dev/null +++ b/extensions/source/propctrlr/formcontroller.cxx @@ -0,0 +1,2503 @@ +/************************************************************************* + * + * $RCSfile: formcontroller.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:28:05 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#define ITEMID_MACRO SID_ATTR_MACROITEM + +#ifndef _EXTENSIONS_PROPCTRLR_PROPCONTROLLER_HXX_ +#include "propcontroller.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_USERCONTROL_HXX_ +#include "usercontrol.hxx" +#endif +#ifndef _COMPHELPER_PROPERTY_HXX_ +#include <comphelper/property.hxx> +#endif +#ifndef _COMPHELPER_TYPES_HXX_ +#include <comphelper/types.hxx> +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_FORMBROWSERTOOLS_HXX_ +#include "formbrowsertools.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_LINEDESCRIPTOR_HXX_ +#include "linedescriptor.hxx" +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ +#include "formstrings.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "propresid.hrc" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ +#include "formmetadata.hxx" +#endif +#ifndef _CPPUHELPER_EXTRACT_HXX_ +#include <cppuhelper/extract.hxx> +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _SVX_SVXIDS_HRC +#include <svx/svxids.hrc> +#endif +#ifndef _SFXITEMSET_HXX +#include <svtools/itemset.hxx> +#endif +#ifndef _SFXAPP_HXX +#include <sfx2/app.hxx> +#endif +#ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_ +#include <com/sun/star/sdbc/XDataSource.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_ +#include <com/sun/star/beans/PropertyAttribute.hpp> +#endif +#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP_ +#include <com/sun/star/util/XNumberFormatsSupplier.hpp> +#endif +#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTYPES_HPP_ +#include <com/sun/star/util/XNumberFormatTypes.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBC_XPREPAREDSTATEMENT_HPP_ +#include <com/sun/star/sdbc/XPreparedStatement.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBC_XROWSET_HPP_ +#include <com/sun/star/sdbc/XRowSet.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_ +#include <com/sun/star/sdbcx/XTablesSupplier.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_LISTSOURCETYPE_HPP_ +#include <com/sun/star/form/ListSourceType.hpp> +#endif +#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_ +#include <com/sun/star/sdb/XQueriesSupplier.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_ +#include <com/sun/star/sdbcx/XColumnsSupplier.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_FORMCOMPONENTTYPE_HPP_ +#include <com/sun/star/form/FormComponentType.hpp> +#endif +#ifndef _COM_SUN_STAR_UNO_XNAMINGSERVICE_HPP_ +#include <com/sun/star/uno/XNamingService.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_XGRIDCOLUMNFACTORY_HPP_ +#include <com/sun/star/form/XGridColumnFactory.hpp> +#endif +#ifndef _CONNECTIVITY_DBTOOLS_HXX_ +#include <connectivity/dbtools.hxx> +#endif +#ifndef _NUMUNO_HXX +#include <svtools/numuno.hxx> +#endif +#ifndef _SFXINTITEM_HXX +#include <svtools/intitem.hxx> +#endif +#define ITEMID_NUMBERINFO SID_ATTR_NUMBERFORMAT_INFO +#ifndef _SVX_NUMINF_HXX +#include <svx/numinf.hxx> +#endif +#ifndef _BASEDLGS_HXX +#include <sfx2/basedlgs.hxx> +#endif +#ifndef _SV_WRKWIN_HXX +#include <vcl/wrkwin.hxx> +#endif +#ifndef _SVX_NUMFMT_HXX +#include <svx/numfmt.hxx> +#endif +#ifndef _SV_MSGBOX_HXX +#include <vcl/msgbox.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ +#include "propertyeditor.hxx" +#endif +#ifndef _SV_WAITOBJ_HXX +#include <vcl/waitobj.hxx> +#endif + +// for the font handling +#define ITEMID_FONT SID_ATTR_CHAR_FONT +#define ITEMID_POSTURE SID_ATTR_CHAR_POSTURE +#define ITEMID_WEIGHT SID_ATTR_CHAR_WEIGHT +#define ITEMID_SHADOWED SID_ATTR_CHAR_SHADOWED +#define ITEMID_WORDLINEMODE SID_ATTR_CHAR_WORDLINEMODE +#define ITEMID_CONTOUR SID_ATTR_CHAR_CONTOUR +#define ITEMID_CROSSEDOUT SID_ATTR_CHAR_STRIKEOUT +#define ITEMID_UNDERLINE SID_ATTR_CHAR_UNDERLINE +#define ITEMID_FONTHEIGHT SID_ATTR_CHAR_FONTHEIGHT +#define ITEMID_PROPSIZE SID_ATTR_CHAR_PROPSIZE +#define ITEMID_COLOR SID_ATTR_CHAR_COLOR +#define ITEMID_KERNING SID_ATTR_CHAR_KERNING +#define ITEMID_CASEMAP SID_ATTR_CHAR_CASEMAP +#define ITEMID_LANGUAGE SID_ATTR_CHAR_LANGUAGE +#define ITEMID_ESCAPEMENT SID_ATTR_CHAR_ESCAPEMENT +#define ITEMID_FONTLIST SID_ATTR_CHAR_FONTLIST +#define ITEMID_AUTOKERN SID_ATTR_CHAR_AUTOKERN +#define ITEMID_COLOR_TABLE SID_COLOR_TABLE +#define ITEMID_BLINK SID_ATTR_FLASH +#define ITEMID_BRUSH SID_ATTR_BRUSH +#ifndef _SVX_FONTITEM_HXX +#include <svx/fontitem.hxx> +#endif +#ifndef _SVX_FHGTITEM_HXX +#include <svx/fhgtitem.hxx> +#endif +#ifndef _SVX_POSTITEM_HXX +#include <svx/postitem.hxx> +#endif +#ifndef _SVX_WGHTITEM_HXX +#include <svx/wghtitem.hxx> +#endif +#ifndef _SVX_UDLNITEM_HXX +#include <svx/udlnitem.hxx> +#endif +#ifndef _SVX_CRSDITEM_HXX +#include <svx/crsditem.hxx> +#endif +#ifndef _SVX_COLRITEM_HXX +#include <svx/colritem.hxx> +#endif +#ifndef _SVX_FLSTITEM_HXX +#include <svx/flstitem.hxx> +#endif +#ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_ +#include <toolkit/unohlp.hxx> +#endif +#ifndef _COM_SUN_STAR_AWT_FONTWEIGHT_HPP_ +#include <com/sun/star/awt/FontWeight.hpp> +#endif +#ifndef _COM_SUN_STAR_AWT_FONTSLANT_HPP_ +#include <com/sun/star/awt/FontSlant.hpp> +#endif +#ifndef _COM_SUN_STAR_AWT_FONTUNDERLINE_HPP_ +#include <com/sun/star/awt/FontUnderline.hpp> +#endif +#ifndef _COM_SUN_STAR_AWT_FONTSTRIKEOUT_HPP_ +#include <com/sun/star/awt/FontStrikeout.hpp> +#endif +#ifndef _CTRLTOOL_HXX +#include <svtools/ctrltool.hxx> +#endif +#ifndef _SVX_CHARDLG_HXX +#include <svx/chardlg.hxx> +#endif +#ifndef _EXTENSIONS_FORMCTRLR_PROPRESID_HRC_ +#include "formresid.hrc" +#endif + +// event handling +#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_ +#include <com/sun/star/script/ScriptEventDescriptor.hpp> +#endif +#ifndef _MACROPG_HXX +#include <sfx2/macropg.hxx> +#endif +#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_ +#include <com/sun/star/container/XIndexAccess.hpp> +#endif +#ifndef _SFXMACITEM_HXX +#include <svtools/macitem.hxx> +#endif +#define LINETYPE_EVENT reinterpret_cast<void*>(0xFFFFFFFF) + +#ifndef _EXTENSIONS_FORMCTRLR_FORMHELPID_HRC_ +#include "formhelpid.hrc" +#endif +#ifndef _COMPHELPER_STLTYPES_HXX_ +#include <comphelper/stl_types.hxx> +#endif + +#ifndef _IODLG_HXX +#include <sfx2/iodlg.hxx> +#endif +#ifndef _SVX_IMPGRF_HXX +#include <svx/impgrf.hxx> +#endif +#ifndef _SV_COLRDLG_HXX +#include <svtools/colrdlg.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_SELECTLABELDIALOG_HXX_ +#include "selectlabeldialog.hxx" +#endif +#ifndef SVTOOLS_URIHELPER_HXX +#include <svtools/urihelper.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::form; + using namespace ::com::sun::star::sdb; + using namespace ::com::sun::star::sdbc; + using namespace ::com::sun::star::sdbcx; + using namespace ::com::sun::star::beans; + using namespace ::com::sun::star::script; + using namespace ::com::sun::star::lang; + using namespace ::com::sun::star::util; + using namespace ::com::sun::star::container; + + static const IPropertyInfoService* getFormPropertyInfo() + { + static const OFormPropertyInfoService s_aFormMetaDataInfo; + return &s_aFormMetaDataInfo; + }; + + //======================================================================== + //= helper + //======================================================================== + Sequence< ::rtl::OUString> getEventMethods(const Type& type) + { + typelib_InterfaceTypeDescription *pType=0; + type.getDescription( (typelib_TypeDescription**)&pType); + + if (!pType) + return Sequence< ::rtl::OUString>(); + + Sequence< ::rtl::OUString> aNames(pType->nMembers); + ::rtl::OUString* pNames = aNames.getArray(); + for (sal_Int32 i=0;i<pType->nMembers;i++,++pNames) + { + // the decription reference + typelib_TypeDescriptionReference* pMemberDescriptionReference = pType->ppMembers[i]; + // the description for the reference + typelib_TypeDescription* pMemberDescription = NULL; + typelib_typedescriptionreference_getDescription(&pMemberDescription, pMemberDescriptionReference); + if (pMemberDescription) + { + typelib_InterfaceMemberTypeDescription* pRealMemberDescription = + reinterpret_cast<typelib_InterfaceMemberTypeDescription*>(pMemberDescription); + *pNames = pRealMemberDescription->pMemberName; + } + } + + typelib_typedescription_release( (typelib_TypeDescription *)pType ); + return aNames; + } + + //------------------------------------------------------------------------ + class OLineDescriptorLess + { + public: + bool operator() (const OLineDescriptor& lhs, const OLineDescriptor& rhs) const + { + return lhs.nUniqueButtonId < rhs.nUniqueButtonId; + } + }; + + //======================================================================== + //= OPropertyBrowserController + //======================================================================== + //------------------------------------------------------------------------ + void OPropertyBrowserController::initializeSpecialStuff() + { + m_pPropertyInfo = getFormPropertyInfo(); + } + + //------------------------------------------------------------------------ + ::rtl::OUString OPropertyBrowserController::AnyToString( const Any& rValue, const Property& _rProp, sal_Int32 _nPropId) + { + ::rtl::OUString sReturn; + if (!rValue.hasValue()) + return sReturn; + + try + { + sReturn = convertSimpleToString(rValue); + + // translations for some known types + switch(rValue.getValueTypeClass()) + { + // booleans + case TypeClass_BOOLEAN: + { + String aEntries(ModuleRes(RID_STR_BOOL)); + sReturn = ::comphelper::getBOOL(rValue) ? aEntries.GetToken(1) : aEntries.GetToken(0); + } + break; + + // sequences + case TypeClass_SEQUENCE: + { + // string sequences + if (rValue.getValueType() == ::getCppuType((const Sequence< ::rtl::OUString>*)0)) + { + Sequence< ::rtl::OUString> aStringSeq; + rValue >>= aStringSeq; + + String aRet; + + // loop through the elements and concatenate the elements (separated by a line break) + const ::rtl::OUString* pStringArray = aStringSeq.getConstArray(); + sal_uInt32 nCount = aStringSeq.getLength(); + for (sal_uInt32 i=0; i<nCount; ++i, ++pStringArray ) + { + aRet += pStringArray->getStr(); + if (i!=(nCount-1)) + aRet += '\n'; + } + sReturn = aRet; + } + // uInt16 sequences + else if (rValue.getValueType() == ::getCppuType((Sequence<sal_uInt16>*)0)) + { + String aRet; + Sequence<sal_uInt16> aValues; + rValue >>= aValues; + + // loop through the elements and concatenate the string representations of the integers + // (separated by a line break) + const sal_uInt16* pArray = aValues.getConstArray(); + sal_uInt32 nCount = aValues.getLength(); + for (sal_uInt32 i=0; i<nCount; ++i, ++pArray) + { + aRet += String::CreateFromInt32(*pArray); + if (i!=(nCount-1) ) + aRet += '\n'; + } + sReturn = aRet; + } + // Int16 sequences + else if (rValue.getValueType() == ::getCppuType((const Sequence<sal_Int16>*)0)) + { + String aRet; + Sequence<sal_Int16> aValues; + rValue >>= aValues; + + // loop through the elements and concatenate the string representations of the integers + // (separated by a line break) + const sal_Int16* pArray = aValues.getConstArray(); + sal_uInt32 nCount = aValues.getLength(); + for (sal_uInt32 i=0; i<nCount; ++i, ++pArray) + { + aRet += String::CreateFromInt32(*pArray); + if (i!=(nCount-1) ) + aRet += '\n'; + } + sReturn = aRet; + } + // uInt32 sequences + else if (rValue.getValueType() == ::getCppuType((const Sequence<sal_uInt32>*)0)) + { + String aRet; + Sequence<sal_uInt32> aValues; + rValue >>= aValues; + + // loop through the elements and concatenate the string representations of the integers + // (separated by a line break) + const sal_uInt32* pArray = aValues.getConstArray(); + sal_uInt32 nCount = aValues.getLength(); + for (sal_uInt32 i=0; i<nCount; ++i, ++pArray ) + { + aRet += String::CreateFromInt32(*pArray); + if (i!=(nCount-1) ) + aRet += '\n'; + } + sReturn = aRet; + } + // Int32 sequences + else if (rValue.getValueType() == ::getCppuType((const Sequence<sal_Int16>*)0)) + { + String aRet; + Sequence<sal_Int32> aValues; + rValue >>= aValues; + + // loop through the elements and concatenate the string representations of the integers + // (separated by a line break) + const sal_Int32* pArray = aValues.getConstArray(); + sal_uInt32 nCount = aValues.getLength(); + for (sal_uInt32 i=0; i<nCount; ++i, ++pArray ) + { + aRet += String::CreateFromInt32(*pArray); + if (i!=(nCount-1) ) + aRet += '\n'; + } + sReturn = aRet; + } + + + } + break; + + } + + // TODO TODO TODO + // this is surely heavyly formdependent. Need another mechanism for converting Any->Display-String + switch (_nPropId) + { + // ListTypen + case PROPERTY_ID_ALIGN: + case PROPERTY_ID_DATEFORMAT: + case PROPERTY_ID_TIMEFORMAT: + case PROPERTY_ID_BORDER: + case PROPERTY_ID_DEFAULT_CHECKED: + case PROPERTY_ID_COMMANDTYPE: + case PROPERTY_ID_CYCLE: + case PROPERTY_ID_LISTSOURCETYPE: + case PROPERTY_ID_NAVIGATION: + case PROPERTY_ID_BUTTONTYPE: + case PROPERTY_ID_SUBMIT_METHOD: + case PROPERTY_ID_SUBMIT_ENCODING: + { + if (m_pPropertyInfo) + { + sal_Int32 nIntValue = -1; + if (::cppu::enum2int(nIntValue, rValue) && m_pPropertyInfo) + { + Sequence< ::rtl::OUString > aEnumStrings = m_pPropertyInfo->getPropertyEnumRepresentations(_nPropId); + if ((nIntValue >= 0) && (nIntValue < aEnumStrings.getLength())) + { + sReturn = aEnumStrings[nIntValue]; + } + else + DBG_ERROR("OPropertyBrowserController::AnyToString: could not translate an enum value"); + } + } + } + break; + + case PROPERTY_ID_CONTROLLABEL: + { + String aReturn; + Reference< XPropertySet > xSet; + rValue >>= xSet; + if (xSet.is() && ::comphelper::hasProperty(PROPERTY_LABEL, xSet)) + { + aReturn = '<'; + aReturn += ::comphelper::getString(xSet->getPropertyValue(PROPERTY_LABEL)).getStr(); + aReturn += '>'; + } + sReturn = aReturn; + } + break; + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::AnyToString: caught an exception!") + } + + return sReturn; + } + + //------------------------------------------------------------------------ + Any OPropertyBrowserController::StringToAny( const ::rtl::OUString& _rString, const Property& _rProp, sal_Int32 _nPropId) + { + Any aReturn; + try + { + // void values + if ((_rProp.Attributes & PropertyAttribute::MAYBEVOID) && !_rString.getLength() ) + return aReturn; + + ////////////////////////////////////////////////////////////////////// + // TypeClass + Type aPropertyType = _rProp.Type; + TypeClass ePropertyType = aPropertyType.getTypeClass(); + + // (one more) special handling : we have a prop which has a TypeClass "ANY" and needs a double + // (originally it needed a double _or_ a string, but our UI only supports a double for it) + if ((TypeClass_ANY == ePropertyType) && (PROPERTY_ID_EFFECTIVE_DEFAULT == _nPropId)) + ePropertyType = TypeClass_DOUBLE; + + switch (ePropertyType) + { + case TypeClass_STRING: + case TypeClass_FLOAT: + case TypeClass_DOUBLE: + case TypeClass_BYTE: + case TypeClass_SHORT: + case TypeClass_LONG: + case TypeClass_HYPER: + case TypeClass_UNSIGNED_SHORT: + case TypeClass_UNSIGNED_LONG: + case TypeClass_UNSIGNED_HYPER: + // TODO: same as above ... the type converter is expensive + try + { + aReturn = m_xTypeConverter->convertToSimpleType(makeAny(_rString), ePropertyType); + } + catch(CannotConvertException&) { } + catch(IllegalArgumentException&) { } + break; + } + + switch( ePropertyType ) + { + + case TypeClass_BOOLEAN: + { + String sBooleanValues(ModuleRes(RID_STR_BOOL)); + if (sBooleanValues.GetToken(0) == String(_rString)) + aReturn <<= (sal_Bool)sal_True; + else + aReturn <<= (sal_Bool)sal_False; + } + break; + + case TypeClass_SEQUENCE: + { + Type aElementType = ::comphelper::getSequenceElementType(aPropertyType); + + String aStr(_rString); + switch (aElementType.getTypeClass()) + { + case TypeClass_STRING: + { + sal_uInt32 nEntryCount = aStr.GetTokenCount('\n'); + Sequence< ::rtl::OUString> aStringSeq( nEntryCount ); + ::rtl::OUString* pStringArray = aStringSeq.getArray(); + + for (sal_Int32 i=0; i<aStringSeq.getLength(); ++i, ++pStringArray) + *pStringArray = aStr.GetToken((sal_uInt16)i, '\n'); + aReturn <<= aStringSeq; + } + break; + case TypeClass_UNSIGNED_SHORT: + { + sal_uInt32 nEntryCount = aStr.GetTokenCount('\n'); + Sequence<sal_uInt16> aSeq( nEntryCount ); + + sal_uInt16* pArray = aSeq.getArray(); + + for (sal_Int32 i=0; i<aSeq.getLength(); ++i, ++pArray) + *pArray = (sal_uInt16)aStr.GetToken((sal_uInt16)i, '\n').ToInt32(); + + aReturn <<= aSeq; + + } + break; + case TypeClass_SHORT: + { + sal_uInt32 nEntryCount = aStr.GetTokenCount('\n'); + Sequence<sal_Int16> aSeq( nEntryCount ); + + sal_Int16* pArray = aSeq.getArray(); + + for (sal_Int32 i=0; i<aSeq.getLength(); ++i, ++pArray) + *pArray = (sal_Int16)aStr.GetToken((sal_uInt16)i, '\n').ToInt32(); + + aReturn <<= aSeq; + + } + break; + case TypeClass_LONG: + { + sal_uInt32 nEntryCount = aStr.GetTokenCount('\n'); + Sequence<sal_Int32> aSeq( nEntryCount ); + + sal_Int32* pArray = aSeq.getArray(); + + for (sal_Int32 i=0; i<aSeq.getLength(); ++i, ++pArray) + *pArray = aStr.GetToken((sal_uInt16)i, '\n').ToInt32(); + + aReturn <<= aSeq; + + } + break; + case TypeClass_UNSIGNED_LONG: + { + sal_uInt32 nEntryCount = aStr.GetTokenCount('\n'); + Sequence<sal_uInt32> aSeq( nEntryCount ); + + sal_uInt32* pArray = aSeq.getArray(); + + for (sal_Int32 i=0; i<aSeq.getLength(); ++i, ++pArray) + *pArray = aStr.GetToken((sal_uInt16)i, '\n').ToInt32(); + + aReturn <<= aSeq; + + } + } + } + break; + } + + switch( _nPropId ) + { + case PROPERTY_ID_ALIGN: + case PROPERTY_ID_DATEFORMAT: + case PROPERTY_ID_TIMEFORMAT: + case PROPERTY_ID_BORDER: + case PROPERTY_ID_DEFAULT_CHECKED: + case PROPERTY_ID_COMMANDTYPE: + case PROPERTY_ID_CYCLE: + case PROPERTY_ID_LISTSOURCETYPE: + case PROPERTY_ID_NAVIGATION: + case PROPERTY_ID_BUTTONTYPE: + case PROPERTY_ID_SUBMIT_METHOD: + case PROPERTY_ID_SUBMIT_ENCODING: + if (m_pPropertyInfo) + { + Sequence< ::rtl::OUString > aEnumStrings = m_pPropertyInfo->getPropertyEnumRepresentations(_nPropId); + sal_Int32 nPos = GetStringPos(_rString, aEnumStrings); + if (-1 != nPos) + { + switch (aPropertyType.getTypeClass()) + { + case TypeClass_ENUM: + aReturn = ::cppu::int2enum(nPos, aPropertyType); + break; + case TypeClass_SHORT: + aReturn <<= (sal_Int16)nPos; + break; + case TypeClass_UNSIGNED_SHORT: + aReturn <<= (sal_uInt16)nPos; + break; + case TypeClass_UNSIGNED_LONG: + aReturn <<= (sal_uInt32)nPos; + break; + default: + aReturn <<= (sal_Int32)nPos; + break; + } + } + else + DBG_ERROR("OPropertyBrowserController::StringToAny: could not translate the enum string!"); + } + break; + } + } + catch(Exception&) + { + DBG_ERROR("OPropertyBrowserController::StringToAny: caught an exception !") + } + + return aReturn; + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::ChangeFormatProperty(const ::rtl::OUString& _rName, const ::rtl::OUString& _rCurVal) + { + // create the itemset for the dialog + SfxItemSet aCoreSet(SFX_APP()->GetPool(), + SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_VALUE, + SID_ATTR_NUMBERFORMAT_INFO, SID_ATTR_NUMBERFORMAT_INFO, + 0); // ripped this somewhere ... don't understand it :( + + // get the number formats supplier + Reference< XNumberFormatsSupplier > xSupplier; + m_xPropValueAccess->getPropertyValue(PROPERTY_FORMATSSUPPLIER) >>= xSupplier; + + DBG_ASSERT(xSupplier.is(), "OPropertyBrowserController::ChangeFormatProperty : invalid call !"); + Reference< XUnoTunnel > xTunnel(xSupplier,UNO_QUERY); + DBG_ASSERT(xTunnel.is(), "OPropertyBrowserController::ChangeFormatProperty : xTunnel is invalid!"); + SvNumberFormatsSupplierObj* pSupplier = (SvNumberFormatsSupplierObj*)xTunnel->getSomething(SvNumberFormatsSupplierObj::getUnoTunnelId()); + // SvNumberFormatsSupplierObj* pSupplier = (SvNumberFormatsSupplierObj*)xSupplier->getImplementation(::getCppuType((const SvNumberFormatsSupplierObj*)0)); + + DBG_ASSERT(pSupplier != NULL, "OPropertyBrowserController::ChangeFormatProperty : invalid call !"); + + sal_Int32 nFormatKey = String(_rCurVal.getStr()).ToInt32(); + aCoreSet.Put(SfxUInt32Item(SID_ATTR_NUMBERFORMAT_VALUE, nFormatKey)); + + SvNumberFormatter* pFormatter = pSupplier->GetNumberFormatter(); + double dPreviewVal = 1234.56789; + SvxNumberInfoItem aFormatter(pFormatter, dPreviewVal, SID_ATTR_NUMBERFORMAT_INFO); + aCoreSet.Put(aFormatter); + + // a tab dialog with a single page + SfxSingleTabDialog* pDlg = new SfxSingleTabDialog(GetpApp()->GetAppWindow(), aCoreSet, 0); + SvxNumberFormatTabPage* pPage = (SvxNumberFormatTabPage*) SvxNumberFormatTabPage::Create(pDlg, aCoreSet); + const SfxPoolItem& rInfoItem = pPage->GetItemSet().Get(SID_ATTR_NUMBERFORMAT_INFO); + pPage->SetNumberFormatList((const SvxNumberInfoItem&)rInfoItem ); + pDlg->SetTabPage(pPage); + + if (RET_OK == pDlg->Execute()) + { + const SfxItemSet* pResult = pDlg->GetOutputItemSet(); + const SfxPoolItem* pItem; + if (SFX_ITEM_SET == pResult->GetItemState(SID_ATTR_NUMBERFORMAT_VALUE, sal_False, &pItem)) + Commit(_rName, ::rtl::OUString::valueOf((sal_Int32)((SfxUInt32Item*)pItem)->GetValue()), pSupplier); + } + delete pDlg; + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::SetFields( OLineDescriptor& rProperty ) + { + try + { + WaitObject aWaitCursor(m_pView); + + rProperty.eControlType = BCT_COMBOBOX; + Reference< XPreparedStatement > xStatement; + + // get the form of the control we're inspecting + Reference< XChild > xChild(m_xPropValueAccess, UNO_QUERY); + Reference< XPropertySet > xFormSet; + if (xChild.is()) + xFormSet = Reference< XPropertySet >(xChild->getParent(), UNO_QUERY); + + if (Reference< XGridColumnFactory >(xFormSet, UNO_QUERY).is()) + { // we're inspecting a grid column -> the form is one step above + xChild = Reference< XChild >(xFormSet, UNO_QUERY); + if (xChild.is()) + xFormSet = Reference< XPropertySet >(xChild->getParent(), UNO_QUERY); + else + xFormSet.clear(); + } + if (!xFormSet.is()) + return; + + ::rtl::OUString aObjectName = ::comphelper::getString(xFormSet->getPropertyValue(PROPERTY_COMMAND)); + // when there is no command we don't need to ask for columns + if (aObjectName.getLength()) + { + ::rtl::OUString aDatabaseName = ::comphelper::getString(xFormSet->getPropertyValue(PROPERTY_DATASOURCE)); + sal_Int32 nObjectType = ::comphelper::getINT32(xFormSet->getPropertyValue(PROPERTY_COMMANDTYPE)); + + // Festellen des Feldes + Reference< XNameAccess > xFields; + Reference< XPropertySet > xField; + try + { + Reference< XConnection > xConnection = ::dbtools::calcConnection(Reference< XRowSet > (xFormSet, UNO_QUERY),m_xORB); + if (!xConnection.is()) + return; + + switch (nObjectType) + { + case 0: + { + Reference< XTablesSupplier > xSupplyTables(xConnection, UNO_QUERY); + Reference< XColumnsSupplier > xSupplyColumns; + xSupplyTables->getTables()->getByName(aObjectName) >>= xSupplyColumns; + xFields = xSupplyColumns->getColumns(); + } + break; + case 1: + { + Reference< XQueriesSupplier > xSupplyQueries(xConnection, UNO_QUERY); + Reference< XColumnsSupplier > xSupplyColumns; + xSupplyQueries->getQueries()->getByName(aObjectName) >>= xSupplyColumns; + xFields = xSupplyColumns->getColumns(); + } + break; + default: + { + xStatement = xConnection->prepareStatement(aObjectName); + // not interested in any results + Reference< XPropertySet > (xStatement,UNO_QUERY)->setPropertyValue( ::rtl::OUString::createFromAscii("MaxRows"),makeAny(sal_Int32(0))); + Reference< XColumnsSupplier > xSupplyCols(xStatement->executeQuery(), UNO_QUERY); + if (xSupplyCols.is()) + xFields = xSupplyCols->getColumns(); + } + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::SetFields: Exception occured!"); + } + + + if (!xFields.is()) + return; + + Sequence< ::rtl::OUString> aFields(xFields->getElementNames()); + const ::rtl::OUString* pFields = aFields.getConstArray(); + for (sal_Int32 i=0; i<aFields.getLength(); i++,++pFields ) + rProperty.aListValues.push_back(*pFields); + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::SetFields : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::SetTables( OLineDescriptor& rProperty ) + { + try + { + WaitObject aWaitCursor(m_pView); + + rProperty.eControlType = BCT_COMBOBOX; + + // get the RowSet interface of the form of the object we're inspecting + Reference< XRowSet > xRowSet(m_xPropValueAccess, UNO_QUERY); + if (!xRowSet.is()) + { + DBG_ERROR("OPropertyBrowserController::SetQueries: could not obtain the rowset for the introspectee!"); + return; + } + + Reference< XTablesSupplier > xTables; + try + { + xTables = Reference< XTablesSupplier > (::dbtools::calcConnection(xRowSet,m_xORB),UNO_QUERY); + } + catch (Exception&) + { + return; + } + + Reference< XNameAccess > xAccess; + if (xTables.is()) + xAccess = xTables->getTables(); + if (!xAccess.is()) + return; + + Sequence< ::rtl::OUString> aTableNameSeq = xAccess->getElementNames(); + sal_uInt32 nCount = aTableNameSeq.getLength(); + const ::rtl::OUString* pTableNames = aTableNameSeq.getConstArray(); + + for (sal_uInt32 i=0; i<nCount; ++i ,++pTableNames) + rProperty.aListValues.push_back( *pTableNames); + } + + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::SetTables : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::SetQueries( OLineDescriptor& rProperty ) + { + try + { + WaitObject aWaitCursor(m_pView); + + rProperty.eControlType = BCT_COMBOBOX; + + // get the RowSet interface of the form of the object we're inspecting + Reference< XRowSet > xRowSet(m_xPropValueAccess, UNO_QUERY); + if (!xRowSet.is()) + { + DBG_ERROR("OPropertyBrowserController::SetQueries: could not obtain the rowset for the introspectee!"); + return; + } + + Reference< XQueriesSupplier > xSupplyQueries; + try + { + xSupplyQueries = Reference< XQueriesSupplier > (::dbtools::calcConnection(xRowSet,m_xORB),UNO_QUERY); + } + catch (Exception&) + { + return; + } + + Reference< XNameAccess > xAccess; + if (xSupplyQueries.is()) + xAccess = xSupplyQueries->getQueries(); + + + if (!xAccess.is()) + return; + + Sequence< ::rtl::OUString> aQueryNameSeq = xAccess->getElementNames(); + sal_uInt32 nCount = aQueryNameSeq.getLength(); + const ::rtl::OUString* pQueryNames = aQueryNameSeq.getConstArray(); + for (sal_uInt32 i=0; i<nCount; i++,++pQueryNames ) + rProperty.aListValues.push_back( *pQueryNames ); + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::SetQueries : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::SetCursorSource(sal_Bool bInit) + { + try + { + if (!m_bHasCursorSource) + return; + + WaitObject aWaitCursor(m_pView); + + // force the data page to be shown + if (getPropertyBox()->GetCurPage() != m_nDataPageId) + getPropertyBox()->SetPage(m_nDataPageId); + + //////////////////////////////////////////////////////////// + // Auslesen des CursorSourceTypes + String sCommandType = GetPropertyValue(PROPERTY_COMMANDTYPE); + String sCommand = GetPropertyValue(PROPERTY_COMMAND); + + //////////////////////////////////////////////////////////// + // Setzen der UI-Daten + OLineDescriptor aProperty; + aProperty.eControlType = BCT_MEDIT; + + String fCommandName = PROPERTY_COMMAND; + aProperty.sName = fCommandName; + aProperty.sTitle = m_pPropertyInfo->getPropertyTranslation(PROPERTY_ID_COMMAND); + aProperty.pControl = NULL; + aProperty.bHasBrowseButton = sal_False; + aProperty.bIsHyperlink = sal_False; + aProperty.bIsLocked = sal_False; + + aProperty.nHelpId = m_pPropertyInfo->getPropertyHelpId(PROPERTY_ID_COMMAND); + if (bInit) + aProperty.sValue = sCommand; + else + aProperty.sValue = String(); + + //////////////////////////////////////////////////////////// + // Enums setzen + Sequence< ::rtl::OUString > aCommandTypes = m_pPropertyInfo->getPropertyEnumRepresentations(PROPERTY_ID_COMMANDTYPE); + sal_Int32 nPos = GetStringPos(sCommandType, aCommandTypes); + if (0 == nPos) + SetTables(aProperty); + else if (1 == nPos) + SetQueries(aProperty); + + getPropertyBox()->ChangeEntry(aProperty, getPropertyBox()->GetPropertyPos(aProperty.sName)); + Commit(aProperty.sName, aProperty.sValue, NULL); + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::SetCursorSource : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::SetListSource(sal_Bool bInit) + { + try + { + if (!m_bHasListSource) + return; + + WaitObject aWaitCursor(m_pView); + + // force the data page to be shown + if (getPropertyBox()->GetCurPage() != m_nDataPageId) + getPropertyBox()->SetPage(m_nDataPageId); + + //////////////////////////////////////////////////////////// + // Auslesen des ListSourceTypes + Any aListSourceTypeAny; + + ::rtl::OUString aStrVal; + if (m_xPropStateAccess.is()) + aListSourceTypeAny = m_xPropValueAccess->getPropertyValue(PROPERTY_LISTSOURCETYPE ); + + sal_Int32 nListSourceType; + ::cppu::enum2int(nListSourceType,aListSourceTypeAny); + + ::rtl::OUString aListSource = GetPropertyValue( PROPERTY_LISTSOURCE ); + + //////////////////////////////////////////////////////////// + // Setzen der UI-Daten + OLineDescriptor aProperty; + aProperty.eControlType = BCT_MEDIT; + String fPropName = PROPERTY_LISTSOURCE; + aProperty.sName = fPropName; + aProperty.sTitle = m_pPropertyInfo->getPropertyTranslation(PROPERTY_ID_LISTSOURCE); + aProperty.pControl = NULL; + aProperty.bHasBrowseButton = sal_False; + aProperty.bIsHyperlink = sal_False; + aProperty.bIsLocked = sal_False; + aProperty.nHelpId=m_pPropertyInfo->getPropertyHelpId(PROPERTY_ID_LISTSOURCE); + + + + if (bInit) + aProperty.sValue = aListSource; + else + aProperty.sValue = String(); + + //////////////////////////////////////////////////////////// + // Enums setzen + switch( nListSourceType ) + { + case ListSourceType_VALUELIST: + aProperty.eControlType = BCT_LEDIT; + break; + + case ListSourceType_TABLEFIELDS: + case ListSourceType_TABLE: + SetTables( aProperty ); + break; + case ListSourceType_QUERY: + SetQueries( aProperty ); + break; + } + + //////////////////////////////////////////////////////////// + // Eintrag umsetzen + sal_uInt16 nCurPage = getPropertyBox()->GetCurPage(); + getPropertyBox()->SetPage( m_nDataPageId ); + getPropertyBox()->ChangeEntry( aProperty, getPropertyBox()->GetPropertyPos(aProperty.sName) ); + Commit( aProperty.sName, aProperty.sValue, NULL ); + getPropertyBox()->SetPage( nCurPage ); + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::SetListSource : caught an exception !") + } + } + + //------------------------------------------------------------------------ + static sal_uInt16 pPropFontRgs[] = + { + SID_ATTR_CHAR_FONT,SID_ATTR_CHAR_WEIGHT, + SID_ATTR_CHAR_STRIKEOUT, SID_ATTR_CHAR_FONTHEIGHT, + SID_ATTR_CHAR_COLOR,SID_ATTR_CHAR_COLOR, + 0 + }; + + //------------------------------------------------------------------------ + void OPropertyBrowserController::ChangeFontProperty( const ::rtl::OUString& rName ) + { + SfxItemSet aSet( SFX_APP()->GetPool(), pPropFontRgs); + + try + { + ::rtl::OUString aFontName = ::comphelper::getString(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_NAME )); + ::rtl::OUString aFontStyleName = ::comphelper::getString(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_STYLENAME)); + sal_Int16 nFontFamily = ::comphelper::getINT16(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_FAMILY )); + sal_Int16 nFontCharset = ::comphelper::getINT16(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_CHARSET )); + float nFontHeight = ::comphelper::getFloat(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_HEIGHT )); + float nFontWeight = ::comphelper::getFloat(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_WEIGHT )); + sal_Int16 nFontSlant = ::comphelper::getINT16(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_SLANT )); + sal_Int16 nFontUnderline = ::comphelper::getINT16(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_UNDERLINE)); + sal_Int16 nFontStrikeout = ::comphelper::getINT16(m_xPropValueAccess->getPropertyValue( PROPERTY_FONT_STRIKEOUT)); + Any aColor32 = m_xPropValueAccess->getPropertyValue( PROPERTY_TEXTCOLOR); + + SvxFontItem aFontItem((FontFamily)nFontFamily, aFontName, aFontStyleName, PITCH_DONTKNOW, nFontCharset, SID_ATTR_CHAR_FONT); + + nFontHeight = (float)OutputDevice::LogicToLogic(Size(0, (sal_Int32)nFontHeight), MAP_POINT, MAP_TWIP).Height(); + SvxFontHeightItem aSvxFontHeightItem((sal_uInt32)nFontHeight,100,SID_ATTR_CHAR_FONTHEIGHT); + + FontWeight eWeight=VCLUnoHelper::ConvertFontWeight(nFontWeight); + FontItalic eItalic=(FontItalic)nFontSlant; + FontUnderline eUnderline=(FontUnderline)nFontUnderline; + FontStrikeout eStrikeout=(FontStrikeout)nFontStrikeout; + + SvxPostureItem aPostureItem(eItalic,SID_ATTR_CHAR_POSTURE); + SvxWeightItem aWeightItem(eWeight,SID_ATTR_CHAR_WEIGHT); + + SvxUnderlineItem aUnderlineItem(eUnderline,SID_ATTR_CHAR_UNDERLINE); + SvxCrossedOutItem aCrossedOutItem(eStrikeout,SID_ATTR_CHAR_STRIKEOUT ); + + sal_Int32 nColor32 = 0; + if (aColor32.hasValue()) + nColor32=::comphelper::getINT32(aColor32); + + SvxColorItem aSvxColorItem(nColor32,SID_ATTR_CHAR_COLOR); + + aSet.Put(aFontItem, SID_ATTR_CHAR_FONT); + aSet.Put(aSvxFontHeightItem,SID_ATTR_CHAR_FONTHEIGHT); + aSet.Put(aWeightItem, SID_ATTR_CHAR_WEIGHT ); + aSet.Put(aPostureItem, SID_ATTR_CHAR_POSTURE); + aSet.Put(aUnderlineItem,SID_ATTR_CHAR_UNDERLINE ); + aSet.Put(aCrossedOutItem,SID_ATTR_CHAR_STRIKEOUT ); + aSet.Put(aSvxColorItem, SID_ATTR_CHAR_COLOR); + + if (m_xPropStateAccess.is()) + { + if (m_xPropStateAccess->getPropertyState(PROPERTY_FONT_NAME)== PropertyState_AMBIGUOUS_VALUE) + aSet.InvalidateItem(SID_ATTR_CHAR_FONT); + if (m_xPropStateAccess->getPropertyState(PROPERTY_FONT_HEIGHT)==PropertyState_AMBIGUOUS_VALUE) + aSet.InvalidateItem(SID_ATTR_CHAR_FONTHEIGHT); + if ((m_xPropStateAccess->getPropertyState(PROPERTY_FONT_WEIGHT)==PropertyState_AMBIGUOUS_VALUE) || (::com::sun::star::awt::FontWeight::DONTKNOW == nFontWeight)) + aSet.InvalidateItem(SID_ATTR_CHAR_WEIGHT ); + if ((m_xPropStateAccess->getPropertyState(PROPERTY_FONT_SLANT)==PropertyState_AMBIGUOUS_VALUE) || (::com::sun::star::awt::FontSlant_DONTKNOW == nFontSlant)) + aSet.InvalidateItem(SID_ATTR_CHAR_POSTURE); + if ((m_xPropStateAccess->getPropertyState(PROPERTY_FONT_UNDERLINE)==PropertyState_AMBIGUOUS_VALUE) || (::com::sun::star::awt::FontUnderline::DONTKNOW == nFontUnderline)) + aSet.InvalidateItem(SID_ATTR_CHAR_UNDERLINE ); + if ((m_xPropStateAccess->getPropertyState(PROPERTY_FONT_STRIKEOUT)==PropertyState_AMBIGUOUS_VALUE) || (::com::sun::star::awt::FontStrikeout::DONTKNOW == nFontStrikeout)) + aSet.InvalidateItem(SID_ATTR_CHAR_STRIKEOUT ); + if (m_xPropStateAccess->getPropertyState(PROPERTY_TEXTCOLOR)==PropertyState_AMBIGUOUS_VALUE) + aSet.InvalidateItem(SID_ATTR_CHAR_COLOR ); + } + } + + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::ChangeFontProperty : caught an exception (1) !") + return; + } + + + FontList aFontList(Application::GetDefaultDevice()); + SvxFontListItem aFontListItem( &aFontList, SID_ATTR_CHAR_FONTLIST ); + + SfxSingleTabDialog* pDlg = new SfxSingleTabDialog( GetpApp()->GetAppWindow(), + aSet, RID_SVXDLG_FMFONT, sal_False ); + + SfxTabPage* pPage = SvxCharStdPage::Create( pDlg, aSet); + ((SvxCharStdPage*)pPage)->SetFontList( aFontListItem); + pDlg->SetTabPage( pPage ); + + try + { + if ( pDlg->Execute() == RET_OK ) + { + const SfxItemSet* pOut = pDlg->GetOutputItemSet(); + + if (pOut != NULL) + { + SfxItemState eState = pOut->GetItemState( SID_ATTR_CHAR_FONT ); + + if ( eState == SFX_ITEM_SET) + { + const SvxFontItem& rFontItem= + (const SvxFontItem&) pOut->Get(SID_ATTR_CHAR_FONT ); + + getPropertyBox()->SetPropertyValue( String::CreateFromAscii("Font"), rFontItem.GetFamilyName()); + + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_NAME , makeAny(::rtl::OUString(rFontItem.GetFamilyName()))); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_STYLENAME, makeAny(::rtl::OUString(rFontItem.GetStyleName()))); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_FAMILY , makeAny((sal_Int16)rFontItem.GetFamily())); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_CHARSET , makeAny((sal_Int16)rFontItem.GetCharSet())); + } + + eState = pOut->GetItemState( SID_ATTR_CHAR_FONTHEIGHT ); + + if ( eState == SFX_ITEM_SET) + { + const SvxFontHeightItem& rSvxFontHeightItem= + (const SvxFontHeightItem&) pOut->Get(SID_ATTR_CHAR_FONTHEIGHT); + + float nHeight = (float)OutputDevice::LogicToLogic(Size(0, rSvxFontHeightItem.GetHeight()), MAP_TWIP, MAP_POINT).Height(); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_HEIGHT,makeAny(nHeight)); + + } + + eState = pOut->GetItemState( SID_ATTR_CHAR_WEIGHT ); + + if ( eState == SFX_ITEM_SET) + { + const SvxWeightItem& rWeightItem= + (const SvxWeightItem&) pOut->Get(SID_ATTR_CHAR_WEIGHT ); + float nWeight = VCLUnoHelper::ConvertFontWeight( rWeightItem.GetWeight()); + + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_WEIGHT,makeAny(nWeight)); + } + + eState = pOut->GetItemState( SID_ATTR_CHAR_POSTURE ); + + if ( eState == SFX_ITEM_SET) + { + const SvxPostureItem& rPostureItem= + (const SvxPostureItem&) pOut->Get(SID_ATTR_CHAR_POSTURE); + sal_Int16 eSlant = rPostureItem.GetPosture(); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_SLANT, makeAny(eSlant)); + } + + eState = pOut->GetItemState( SID_ATTR_CHAR_UNDERLINE ); + + if ( eState == SFX_ITEM_SET) + { + const SvxUnderlineItem& rUnderlineItem= + (const SvxUnderlineItem&) pOut->Get(SID_ATTR_CHAR_UNDERLINE ); + sal_Int16 nUnderline = rUnderlineItem.GetUnderline(); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_UNDERLINE,makeAny(nUnderline)); + } + + eState = pOut->GetItemState( SID_ATTR_CHAR_STRIKEOUT ); + + if ( eState == SFX_ITEM_SET) + { + const SvxCrossedOutItem& rCrossedOutItem= + (const SvxCrossedOutItem&) pOut->Get(SID_ATTR_CHAR_STRIKEOUT ); + sal_Int16 nStrikeout = rCrossedOutItem.GetStrikeout(); + m_xPropValueAccess->setPropertyValue( PROPERTY_FONT_STRIKEOUT,makeAny(nStrikeout)); + } + + + eState = pOut->GetItemState( SID_ATTR_CHAR_COLOR ); + + if ( eState == SFX_ITEM_SET) + { + const SvxColorItem& rColorItem= + (const SvxColorItem&) pOut->Get(SID_ATTR_CHAR_COLOR ); + sal_Int32 nColor= rColorItem.GetValue().GetColor(); + m_xPropValueAccess->setPropertyValue( PROPERTY_TEXTCOLOR,makeAny(nColor)); + } + + } + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::ChangeFontProperty : caught an exception (2) !") + return; + } + + delete pDlg; + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::ChangeEventProperty( const ::rtl::OUString& _Name ) + { + SfxMacroAssignDlg* pMacroDlg = NULL; + String rName(_Name.getStr()); + + if (rName.GetTokenCount()==0) + return; + + ::rtl::OUString sListenerClassName = rName.GetToken( 0); + ::rtl::OUString sMethodName = rName.GetToken(1); + + ::std::vector< ::rtl::OUString> aNameArray; + + try + { + + Reference< XIndexAccess > xIndexAcc(m_xObjectParent, UNO_QUERY); + + sal_Int32 nObjIdx=-1; + // calc the index of the object with it's parent + if (xIndexAcc.is()) + { + sal_Int32 nCount = xIndexAcc->getCount(); + + Reference< XPropertySet > xTestSet; + for (sal_Int32 i=0;i<nCount; ++i) + { + ::cppu::extractInterface(xTestSet, xIndexAcc->getByIndex(i)); + if (xTestSet.get() == m_xPropValueAccess.get()) + { + nObjIdx=i; + break; + } + } + } + + // the the script events for this index + sal_uInt32 nScrEvts=0; + + Sequence< ScriptEventDescriptor > aSeqScrEvts; + if (nObjIdx>=0 && m_xEventManager.is()) + { + aSeqScrEvts = m_xEventManager->getScriptEvents(nObjIdx); + nScrEvts = aSeqScrEvts.getLength(); + } + + sal_uInt32 nLength = m_aObjectListenerTypes.getLength(); + const Type * pListeners = m_aObjectListenerTypes.getConstArray(); + const ScriptEventDescriptor* pEvDes = aSeqScrEvts.getConstArray(); + + SvxMacroTableDtor aTable; + + sal_uInt16 nIndex=0; + sal_uInt32 i; + + String aListener; + ::rtl::OUString aListenerClassName; + Sequence< ::rtl::OUString> aMethSeq; + + for (i = 0 ; i < nLength ; i++ ,++pListeners) + { + // Namen besorgen + aListener = (*pListeners).getTypeName().getStr(); + sal_Int32 nTokenCount = aListener.GetTokenCount('.'); + + if (nTokenCount>0) + aListenerClassName= aListener.GetToken(nTokenCount-1, '.' ); + else + aListenerClassName= aListener; + + if (aListenerClassName.len()>0) + { + // Methoden der Listener ausgeben + aMethSeq = getEventMethods( *pListeners ); + const ::rtl::OUString * pMethods = aMethSeq.getConstArray(); + sal_uInt32 nMethCount = aMethSeq.getLength(); + + for (sal_uInt32 j = 0 ; j < nMethCount ; j++,++pMethods ) + { + + EventDisplayDescription* pEventDisplayDescription = GetEvtTranslation(*pMethods); + + // be sure that the event method isn't mentioned twice + if (pEventDisplayDescription != NULL) + { + if (sListenerClassName == aListenerClassName && sMethodName == (*pMethods)) + { + nIndex=aNameArray.size(); + } + + + for (sal_uInt32 nI=0; nI<nScrEvts;nI++) + { + const ScriptEventDescriptor& rEvDe = pEvDes[nI]; + + if (rEvDe.ListenerType == aListenerClassName && rEvDe.EventMethod == (*pMethods)) + { + SvxMacro* pMacro=NULL; + + const ScriptEventDescriptor& rTheEvDe = pEvDes[nI]; + if (rTheEvDe.ScriptCode.len()>0 && rTheEvDe.ScriptType.len()>0) + { + pMacro = new SvxMacro(rTheEvDe.ScriptCode,rTheEvDe.ScriptType); + aTable.Insert(aNameArray.size(),pMacro); + } + else + { + aTable.Insert(aNameArray.size(),NULL); + } + } + } + aNameArray.push_back(pEventDisplayDescription->sDisplayName); + } + } + } + } + + SvxMacroItem aMacroItem; + + aMacroItem.SetMacroTable(aTable); + + SfxItemSet aSet( SFX_APP()->GetPool(), SID_ATTR_MACROITEM, SID_ATTR_MACROITEM ); + aSet.Put(aMacroItem, SID_ATTR_MACROITEM); + pMacroDlg = new SfxMacroAssignDlg( + GetpApp()->GetAppWindow(), aSet ); + SfxMacroTabPage* pMacroTabPage = (SfxMacroTabPage*)pMacroDlg->GetTabPage(); + + for (sal_uInt32 j = 0 ; j < aNameArray.size(); j++ ) + pMacroTabPage->AddEvent( aNameArray[j], (sal_uInt16)j); + + if (nIndex<aNameArray.size()) + pMacroTabPage->SelectEvent( aNameArray[nIndex], nIndex); + + if ( pMacroDlg->Execute() == RET_OK ) + { + // formerly (before we outsources this code) here was a SetModified on the SdrModel of + // the shell we're working with ... + // TODO: need a replacement for this + + const SvxMacroTableDtor& aTab=pMacroTabPage->GetMacroTbl(); + + if (nObjIdx>=0 && m_xEventManager.is()) + m_xEventManager->revokeScriptEvents(nObjIdx); + + + sal_uInt16 nEventCount = (sal_uInt16)aTab.Count(); + sal_uInt16 nEventIndex = 0; + + Sequence< ScriptEventDescriptor > aSeqScriptEvts(nEventCount); + + ScriptEventDescriptor *pSeqScriptEvts=aSeqScriptEvts.getArray(); + nIndex=0; + + String aListenerClassName,aName,aListener; + // Sequence< Reference< XIdlMethod > > aMethSeq; + + pListeners = m_aObjectListenerTypes.getConstArray(); + + ::rtl::OUString aMacStr; + for (i = 0 ; i < nLength ; i++,++pListeners ) + { + // Methode ansprechen + // const Reference< XIdlClass > & (*pListeners) = pListeners[i]; + + // Namen besorgen + aListener = (*pListeners).getTypeName().getStr(); + sal_Int32 nTokenCount=aListener.GetTokenCount('.'); + + if (nTokenCount>0) + aListenerClassName = aListener.GetToken(nTokenCount-1, '.' ); + else + aListenerClassName = aListener; + + if (aListenerClassName.Len() != 0) + { + // Methoden der Listener ausgeben + aMethSeq = getEventMethods( (*pListeners) ); + + const ::rtl::OUString* pMethods = aMethSeq.getConstArray(); + sal_uInt32 nMethCount = aMethSeq.getLength(); + + for (sal_uInt32 j = 0 ; j < nMethCount ; j++,++pMethods ) + { + // Reference< XIdlMethod > xMethod = pMethods[ j ]; + + // aMethName=xMethod->getName(); + + EventDisplayDescription *pEventDisplayDescription=GetEvtTranslation(*pMethods); + + if (pEventDisplayDescription != NULL) + { + (aName = aListenerClassName) += ';'; + + aName += (*pMethods).getStr(); + + SvxMacro *pMacro=aTab.Get(nIndex++); + if (pMacro!=NULL) + { + aMacStr = String(pMacro->GetMacName()); + if (nEventIndex<nEventCount) + { + pSeqScriptEvts[nEventIndex].ListenerType = aListenerClassName; + pSeqScriptEvts[nEventIndex].EventMethod = *pMethods; + pSeqScriptEvts[nEventIndex].ScriptType = pMacro->GetLanguage(); + pSeqScriptEvts[nEventIndex].ScriptCode = aMacStr; + } + nEventIndex++; + } + else + aMacStr = ::rtl::OUString(); + getPropertyBox()->SetPropertyValue( aName, aMacStr); + + } + } + } + } + + if (nObjIdx>=0 && m_xEventManager.is()) + m_xEventManager->registerScriptEvents(nObjIdx,aSeqScriptEvts); + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::ChangeEventProperty : caught an exception !") + } + + delete pMacroDlg; + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::InsertEvents() + { + ////////////////////////////////////////////////////////////////////// + // Seite fuer Events + m_nEventPageId = getPropertyBox()->AppendPage(String(ModuleRes(RID_STR_EVENTS)), HID_FM_PROPDLG_TAB_EVT); + + sal_Bool bRemoveFlag = sal_True; + + try + { + Reference< XIndexAccess > xIndexAcc(m_xObjectParent, UNO_QUERY); + sal_Int32 nObjIdx=-1; + + // get the index of the inspected object within it's parent container + if (xIndexAcc.is() && m_xPropValueAccess.is()) + { + sal_Int32 nCount = xIndexAcc->getCount(); + Reference< XPropertySet > xTestSet; + for (sal_Int32 i=0; i<nCount; ++i) + { + ::cppu::extractInterface(xTestSet, xIndexAcc->getByIndex(i)); + if (xTestSet.get() == m_xPropValueAccess.get()) + { + nObjIdx=i; + break; + } + } + } + + // get the current script events for this index + sal_uInt32 nScrEvts=0; + Sequence< ScriptEventDescriptor > aSeqScrEvts; + if (nObjIdx>=0 && m_xEventManager.is()) + { + aSeqScrEvts = m_xEventManager->getScriptEvents(nObjIdx); + nScrEvts = aSeqScrEvts.getLength(); + } + else + { // could not obtain the position in the event attacher manager + // (or don't have this manager) + // -> no event page + if (m_nEventPageId) + getPropertyBox()->RemovePage(m_nEventPageId); + m_nEventPageId=0; + return; + } + + sal_uInt32 nLength = m_aObjectListenerTypes.getLength(); + const Type * pListeners = m_aObjectListenerTypes.getConstArray(); + + OLineDescriptor aProperty; + aProperty.pDataPtr = LINETYPE_EVENT; + aProperty.bIsLocked = sal_True; + + DECLARE_STL_SET( OLineDescriptor, OLineDescriptorLess, LineDescriptorSet ); + LineDescriptorSet aEventLines; + + const ScriptEventDescriptor* pEvDes = aSeqScrEvts.getConstArray(); + String aListener; + String aListenerClassName; + String aMethName; + for (sal_uInt32 i = 0 ; i < nLength ; ++i, ++pListeners ) + { + // Methode ansprechen + // const Reference< XIdlClass > & rxClass = pListeners[i]; + + // Namen besorgen + aListener = pListeners->getTypeName(); + sal_uInt32 nTokenCount = aListener.GetTokenCount('.'); + + + if (nTokenCount>0) + aListenerClassName= aListener.GetToken((sal_uInt16)nTokenCount-1, '.'); + else + aListenerClassName= aListener; + + if (aListenerClassName.Len() != 0) + { + // Methoden der Listener ausgeben + Sequence< ::rtl::OUString > aMethSeq(getEventMethods( *pListeners )); + const ::rtl::OUString * pMethods = aMethSeq.getConstArray(); + sal_uInt32 nMethCount = aMethSeq.getLength(); + + for (sal_uInt32 j = 0 ; j < nMethCount ; j++,++pMethods ) + { + // Reference< XIdlMethod > xMethod = pMethods[ j ]; + + // aMethName=xMethod->getName(); + aProperty.eControlType = BCT_EDIT; + aProperty.sName = aListenerClassName; + aProperty.sName += String(';'); + aProperty.sName += (const sal_Unicode*)*pMethods; + aProperty.sTitle = *pMethods; + aProperty.nHelpId=0; + aProperty.sValue = String(); + aProperty.bHasBrowseButton = sal_True; + + for (sal_uInt32 nI=0; nI<nScrEvts;nI++) + { + const ScriptEventDescriptor& rEvDe = pEvDes[nI]; + if (aListenerClassName.Equals((const sal_Unicode*)rEvDe.ListenerType) && pMethods->equals(rEvDe.EventMethod)) + aProperty.sValue = rEvDe.ScriptCode; + } + + EventDisplayDescription* pEventDescription = GetEvtTranslation(*pMethods); + if (pEventDescription) + { + aProperty.sTitle = pEventDescription->sDisplayName; + aProperty.nHelpId = pEventDescription->nHelpId; + aProperty.nUniqueButtonId = pEventDescription->nIndex; + aEventLines.insert(aProperty); + } + } + } + } + + for ( ConstLineDescriptorSetIterator iter = aEventLines.begin(); + iter != aEventLines.end(); + ++iter + ) + { + // Now set the right id + OLineDescriptor aData(*iter); + aData.nUniqueButtonId = UID_EVT_MACRODLG; + getPropertyBox()->InsertEntry( aData ); + } + + bRemoveFlag = aEventLines.empty(); + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::InsertEvents : caught an exception !") + bRemoveFlag=sal_True; + } + + if (bRemoveFlag) + { + getPropertyBox()->RemovePage(m_nEventPageId); + m_nEventPageId=0; + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::UpdateUI() + { + // Introspection auswerten + try + { + getPropertyBox()->DisableUpdate(); + + InsertEvents(); + sal_uInt32 nPropCount = m_aObjectProperties.getLength(); + const Property* pProps = m_aObjectProperties.getConstArray(); + OLineDescriptor* pProperty = NULL; + sal_Bool bRemoveDatPage=sal_True; + + TypeClass eType; + Any aVal,aSupplier,aKey,aDigits,aSeparator,aDefault; + ::rtl::OUString aStrVal; + PropertyState eState; + + for (sal_uInt32 i=0; i<nPropCount; ++i, ++pProps) + { + sal_Int32 nPropId = m_pPropertyInfo->getPropertyId(pProps->Name); + String sDisplayName = m_pPropertyInfo->getPropertyTranslation(nPropId); + if (!sDisplayName.Len()) + continue; + + pProperty = new OLineDescriptor(); + + + ////////////////////////////////////////////////////////////////////// + // TypeClass des Property ermitteln + eType = pProps->Type.getTypeClass(); + + ////////////////////////////////////////////////////////////////////// + // Wert holen und in ::rtl::OUString wandeln + eState=PropertyState_DIRECT_VALUE; + if (m_xPropStateAccess.is()) + eState=m_xPropStateAccess->getPropertyState(pProps->Name); + + aVal = m_xPropValueAccess->getPropertyValue( pProps->Name ); + aStrVal = AnyToString(aVal, *pProps, nPropId); + + ////////////////////////////////////////////////////////////////////// + // Default Properties + pProperty->eControlType = BCT_EDIT; + pProperty->sName = pProps->Name; + pProperty->sTitle = pProps->Name; + pProperty->sValue = aStrVal; + pProperty->pControl = NULL; + pProperty->bIsLocked = sal_False; + pProperty->bHasBrowseButton = sal_False; + pProperty->bIsHyperlink = sal_False; + + if ((pProps->Attributes & PropertyAttribute::MAYBEVOID) && nPropId != PROPERTY_ID_BORDER) //&& eState!=DIRECT_VALUE + { + pProperty->bHasDefaultValue =sal_True; + if (!aVal.hasValue()) + pProperty->sValue = m_sStandard; + } + else + pProperty->bHasDefaultValue =sal_False; + + ////////////////////////////////////////////////////////////////////// + // Font + sal_Bool bFilter = sal_True; + if (nPropId == PROPERTY_ID_FONT_NAME) + { + bFilter = sal_False; + + pProperty->sName = String::CreateFromAscii("Font"); + pProperty->sTitle = pProperty->sName; + pProperty->bIsLocked = sal_True; + pProperty->bHasBrowseButton = sal_True; + pProperty->nUniqueButtonId = UID_PROP_DLG_FONT_TYPE; + ::rtl::OUString sValue; + aVal >>= sValue; + pProperty->sValue = sValue; + } + else if (nPropId == PROPERTY_ID_TARGET_URL) + { + pProperty->bHasBrowseButton = sal_True; + pProperty->nUniqueButtonId = UID_PROP_DLG_ATTR_TARGET_URL; + } + else if (nPropId == PROPERTY_ID_IMAGE_URL) + { + pProperty->bHasBrowseButton = sal_True; + pProperty->nUniqueButtonId = UID_PROP_DLG_IMAGE_URL; + } + + else if (nPropId== PROPERTY_ID_ECHO_CHAR) + { + pProperty->eControlType = BCT_CHAREDIT; //@ new CharEdit + } + ////////////////////////////////////////////////////////////////////// + // Color + else if (nPropId== PROPERTY_ID_BACKGROUNDCOLOR ) + { + bFilter = sal_False; + pProperty->eControlType = BCT_COLORBOX; //@ new ColorListbox + pProperty->bIsLocked = sal_True; + pProperty->bHasBrowseButton = sal_True; + pProperty->nUniqueButtonId = UID_PROP_DLG_BACKGROUNDCOLOR; + + } + + else if (nPropId == PROPERTY_ID_LABEL || nPropId == PROPERTY_ID_DEFAULT_TEXT) + { + pProperty->eControlType = BCT_MEDIT; //@ new MultilineEdit + } + else if (PROPERTY_ID_CONTROLLABEL == nPropId) + { + bFilter = sal_False; + pProperty->bHasBrowseButton = sal_True; + pProperty->bIsLocked = sal_True; + pProperty->sValue = AnyToString(aVal, *pProps, PROPERTY_ID_CONTROLLABEL); + pProperty->nUniqueButtonId = UID_PROP_DLG_CONTROLLABEL; + } + else if ((PROPERTY_ID_FORMATKEY == nPropId) || (PROPERTY_ID_EFFECTIVE_MIN == nPropId) + || (PROPERTY_ID_EFFECTIVE_MAX == nPropId) || (PROPERTY_ID_EFFECTIVE_DEFAULT == nPropId)) + { + // only if the set has a formatssupplier, too + if (::comphelper::hasProperty(PROPERTY_FORMATSSUPPLIER, m_xPropValueAccess)) + { + // and the supplier is really available + Reference< XNumberFormatsSupplier > xSupplier; + m_xPropValueAccess->getPropertyValue(PROPERTY_FORMATSSUPPLIER) >>= xSupplier; + if (xSupplier.is()) + { + Reference< XUnoTunnel > xTunnel(xSupplier,UNO_QUERY); + DBG_ASSERT(xTunnel.is(), "OPropertyBrowserController::ChangeFormatProperty : xTunnel is invalid!"); + SvNumberFormatsSupplierObj* pSupplier = (SvNumberFormatsSupplierObj*)xTunnel->getSomething(SvNumberFormatsSupplierObj::getUnoTunnelId()); + + if (pSupplier != NULL) + { + bFilter = sal_False; // don't do further checks + sal_Bool bIsFormatKey = (PROPERTY_ID_FORMATKEY == nPropId); + + pProperty->eControlType = BCT_USERDEFINED; + + pProperty->bIsLocked = bIsFormatKey; + pProperty->bHasBrowseButton = bIsFormatKey; + + if (bIsFormatKey) + { + pProperty->pControl = new OFormatDescriptionControl(getPropertyBox(), WB_READONLY | WB_TABSTOP | WB_BORDER); + // HACK : the Control need's a non-null parent, but we don't have one ... so use the property box + ((OFormatDescriptionControl*)pProperty->pControl)->SetFormatSupplier(pSupplier); + + pProperty->nUniqueButtonId = UID_PROP_DLG_NUMBER_FORMAT; + } + else + { + pProperty->pControl = new OFormattedNumericControl(getPropertyBox(), WB_TABSTOP | WB_BORDER); + // HACK : same as above + + FormatDescription aDesc; + aDesc.pSupplier = pSupplier; + aKey = m_xPropValueAccess->getPropertyValue(PROPERTY_FORMATKEY); + aDesc.nKey = aKey.hasValue() ? ::comphelper::getINT32(aKey) : 0; + ((OFormattedNumericControl*)pProperty->pControl)->SetFormatDescription(aDesc); + } + + // the initial value + if (aVal.hasValue()) + { + if (bIsFormatKey) + { + pProperty->sValue = String::CreateFromInt32(::comphelper::getINT32(aVal)); + } + else + { + if (aVal.getValueTypeClass() == TypeClass_DOUBLE) + pProperty->sValue = convertSimpleToString(aVal); + else + DBG_WARNING("OPropertyBrowserController::UpdateUI : non-double values not supported for Effective*-properties !"); + // our UI supports only setting double values for the min/max/default, but by definition + // the default may be a string if the field is not in numeric mode .... + } + } + } + } + } + } + ////////////////////////////////////////////////////////////////////// + // ::rtl::OUString Sequence + else if (eType == TypeClass_SEQUENCE ) + { + pProperty->eControlType = BCT_LEDIT; + bFilter = sal_False; + } + + else if (TypeClass_BYTE <=eType && eType<=TypeClass_DOUBLE) + { + if (nPropId==PROPERTY_ID_DATEMIN || nPropId==PROPERTY_ID_DATEMAX || nPropId==PROPERTY_ID_DEFAULT_DATE) + pProperty->eControlType = BCT_DATEFIELD; + else if (nPropId==PROPERTY_ID_TIMEMIN || nPropId==PROPERTY_ID_TIMEMAX|| nPropId==PROPERTY_ID_DEFAULT_TIME) + pProperty->eControlType = BCT_TIMEFIELD; + else + { + if (nPropId== PROPERTY_ID_VALUEMIN || nPropId== PROPERTY_ID_VALUEMAX || nPropId==PROPERTY_ID_DEFAULT_VALUE) + { + pProperty->eControlType = BCT_USERDEFINED; + pProperty->pControl = new OFormattedNumericControl(getPropertyBox(), WB_TABSTOP | WB_BORDER | WB_SPIN); + // HACK : same as above + + // we don't set a formatter so the control uses a default (which uses the application + // language and a default numeric format) + // but we set the decimal digits + aDigits = m_xPropValueAccess->getPropertyValue(PROPERTY_DECIMAL_ACCURACY); + ((OFormattedNumericControl*)pProperty->pControl)->SetDecimalDigits(::comphelper::getINT16(aDigits)); + + // and the thousands separator + aSeparator = m_xPropValueAccess->getPropertyValue(PROPERTY_SHOWTHOUSANDSEP); + ((OFormattedNumericControl*)pProperty->pControl)->SetThousandsSep(::comphelper::getBOOL(aSeparator)); + + // and the default value for the property + try + { + if (m_xPropStateAccess.is() && ((PROPERTY_ID_VALUEMIN == nPropId) || (PROPERTY_ID_VALUEMAX == nPropId))) + { + aDefault = m_xPropStateAccess->getPropertyDefault(pProps->Name); + if (aDefault.getValueTypeClass() == TypeClass_DOUBLE) + + ((OFormattedNumericControl*)pProperty->pControl)->SetDefaultValue(::comphelper::getDouble(aDefault)); + } + } + catch (Exception&) + { + // just ignore it + } + + // and allow empty values only for the default value + ((OFormattedNumericControl*)pProperty->pControl)->EnableEmptyField(PROPERTY_ID_DEFAULT_VALUE == nPropId); + } + else + { + if (nPropId== PROPERTY_ID_HEIGHT || nPropId== PROPERTY_ID_WIDTH || nPropId== PROPERTY_ID_ROWHEIGHT) + pProperty->nDigits=1; + + pProperty->eControlType = BCT_NUMFIELD; + } + } + } + ////////////////////////////////////////////////////////////////////// + // Filter + if (bFilter ) + { + switch( eType ) // TypeClass Inspection + { + case TypeClass_INTERFACE: + case TypeClass_ARRAY: + delete pProperty; + continue; + } + + switch( aVal.getValueTypeClass() ) // TypeClass Any + + { + case TypeClass_VOID: + if (pProps->Attributes & PropertyAttribute::MAYBEVOID) + break; + + case TypeClass_INTERFACE: + case TypeClass_ARRAY: + case TypeClass_UNKNOWN: + delete pProperty; + continue; + } + + if (pProps->Name.compareTo(::rtl::OUString::createFromAscii("type unknown")) == COMPARE_EQUAL ) + { + delete pProperty; + continue; + } + + if (pProps->Attributes & PropertyAttribute::TRANSIENT ) + { + delete pProperty; + continue; + } + + else if (pProps->Attributes & PropertyAttribute::READONLY ) + { + delete pProperty; + continue; + } + } + + ////////////////////////////////////////////////////////////////////// + // sal_Bool-Werte + if (eType == TypeClass_BOOLEAN ) + { + String aEntries(ModuleRes(RID_STR_BOOL)); + for ( xub_StrLen i=0; i<2; ++i ) + pProperty->aListValues.push_back( aEntries.GetToken(i) ); + + pProperty->eControlType = BCT_LISTBOX; + } + + ////////////////////////////////////////////////////////////////////// + // TYPECLASS_VOID + else if (eType == TypeClass_VOID ) + pProperty->sValue = String(); + + ////////////////////////////////////////////////////////////////////// + // Listen mit ResStrings fuellen + switch( nPropId ) + { + case PROPERTY_ID_COMMANDTYPE: + case PROPERTY_ID_ALIGN: + case PROPERTY_ID_BUTTONTYPE: + case PROPERTY_ID_SUBMIT_METHOD: + case PROPERTY_ID_SUBMIT_ENCODING: + case PROPERTY_ID_DATEFORMAT: + case PROPERTY_ID_TIMEFORMAT: + case PROPERTY_ID_BORDER: + case PROPERTY_ID_CYCLE: + case PROPERTY_ID_NAVIGATION: + case PROPERTY_ID_TARGET_FRAME: + case PROPERTY_ID_DEFAULT_CHECKED: + case PROPERTY_ID_LISTSOURCETYPE: + { + Sequence< ::rtl::OUString > aEnumValues = m_pPropertyInfo->getPropertyEnumRepresentations(nPropId); + const ::rtl::OUString* pStart = aEnumValues.getConstArray(); + const ::rtl::OUString* pEnd = pStart + aEnumValues.getLength(); + + // for a checkbox: if "ambiguous" is not allowed, remove this from the sequence + if (PROPERTY_ID_DEFAULT_CHECKED == nPropId) + if (::comphelper::hasProperty(PROPERTY_TRISTATE, m_xPropValueAccess)) + { + if (!::comphelper::getBOOL(m_xPropValueAccess->getPropertyValue(PROPERTY_TRISTATE))) + { // remove the last sequence element + if (pEnd > pStart) + --pEnd; + } + } + + if (PROPERTY_ID_LISTSOURCETYPE == nPropId) + if (::comphelper::hasProperty(PROPERTY_CLASSID, m_xPropValueAccess)) + { + sal_Int16 nClassID = ::comphelper::getINT16(m_xPropValueAccess->getPropertyValue(PROPERTY_CLASSID)); + if (nClassID == FormComponentType::COMBOBOX) + // remove the first sequence element + ++pStart; + } + + // copy the sequence + for (const ::rtl::OUString* pLoop = pStart; pLoop != pEnd; ++pLoop) + pProperty->aListValues.push_back(*pLoop); + + pProperty->eControlType = + PROPERTY_ID_TARGET_FRAME == nPropId + ? BCT_COMBOBOX + : BCT_LISTBOX; + } + break; + + case PROPERTY_ID_TABINDEX: + pProperty->nMinValue = 0; + pProperty->nMaxValue = 0x7FFFFFFF; + pProperty->bHaveMinMax = sal_True; + break; + } + + ////////////////////////////////////////////////////////////////////// + // DataSource + if (nPropId == PROPERTY_ID_DATASOURCE ) + { + pProperty->nUniqueButtonId = UID_PROP_DLG_ATTR_DATASOURCE; + // if the form already belong to a Database, don't set this property + Reference< XInterface > xInter; + m_aIntrospectee >>= xInter; + pProperty->bHasBrowseButton = sal_False; + pProperty->eControlType = BCT_COMBOBOX; + + Reference< XNameAccess > xDatabaseContext(m_xORB->createInstance(SERVICE_DATABASE_CONTEXT), UNO_QUERY); + if (xDatabaseContext.is()) + { + Sequence< ::rtl::OUString > aDatasources = xDatabaseContext->getElementNames(); + const ::rtl::OUString* pBegin = aDatasources.getConstArray(); + const ::rtl::OUString* pEnd = pBegin + aDatasources.getLength(); + for (; pBegin != pEnd;++pBegin) + pProperty->aListValues.push_back(*pBegin); + } + } + + ////////////////////////////////////////////////////////////////////// + // ControlSource + else if (nPropId == PROPERTY_ID_CONTROLSOURCE ) + SetFields( *pProperty ); + + ////////////////////////////////////////////////////////////////////// + // CursorSource + else if (nPropId == PROPERTY_ID_COMMAND) + m_bHasCursorSource = sal_True; + + ////////////////////////////////////////////////////////////////////// + // ListSource + else if (nPropId == PROPERTY_ID_LISTSOURCE ) + m_bHasListSource = sal_True; + + ////////////////////////////////////////////////////////////////////// + // UI-Eintrag + switch( nPropId ) // DataPage + { + case PROPERTY_ID_COMMAND: + case PROPERTY_ID_CONTROLSOURCE: + case PROPERTY_ID_LISTSOURCE: + case PROPERTY_ID_LISTSOURCETYPE: + case PROPERTY_ID_BOUNDCOLUMN: + case PROPERTY_ID_MASTERFIELDS: + case PROPERTY_ID_DETAILFIELDS: + case PROPERTY_ID_DATASOURCE: + case PROPERTY_ID_COMMANDTYPE: + case PROPERTY_ID_INSERTONLY: + case PROPERTY_ID_NAVIGATION: + case PROPERTY_ID_CYCLE: + case PROPERTY_ID_ALLOWADDITIONS: + case PROPERTY_ID_ALLOWEDITS: + case PROPERTY_ID_ALLOWDELETIONS: + case PROPERTY_ID_ESCAPE_PROCESSING: + case PROPERTY_ID_FILTER_CRITERIA: + case PROPERTY_ID_SORT: + case PROPERTY_ID_EMPTY_IS_NULL: + case PROPERTY_ID_FILTERPROPOSAL: + bRemoveDatPage =sal_False; + getPropertyBox()->SetPage( m_nDataPageId ); + break; + default: + getPropertyBox()->SetPage( m_nGenericPageId ); + } + + pProperty->nHelpId = m_pPropertyInfo->getPropertyHelpId(nPropId); + pProperty->sTitle = sDisplayName; + + if (PropertyState_AMBIGUOUS_VALUE == eState) + { + pProperty->bUnknownValue = sal_True; + pProperty->sValue = String(); + } + getPropertyBox()->InsertEntry(*pProperty); + delete pProperty; + } + + SetCursorSource(sal_True); + SetListSource(sal_True); + + if (bRemoveDatPage && !m_bHasCursorSource && !m_bHasListSource) + { + getPropertyBox()->RemovePage(m_nDataPageId); + m_nDataPageId=0; + } + + getPropertyBox()->SetPage( m_nDataPageId ); + + getPropertyBox()->EnableUpdate(); + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::UpdateUI : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::Modified( const String& aName, const String& aVal, void* pData ) + { + try + { + sal_Int32 nPropId = m_pPropertyInfo->getPropertyId( aName ); + + // Wenn CursorSourceType veraendert wurde, CursorSource anpassen + if (PROPERTY_ID_COMMANDTYPE == nPropId) + { + Commit( aName, aVal, pData ); + SetCursorSource(); + } + + ////////////////////////////////////////////////////////////////////// + // Wenn ListSourceType veraendert wurde, ListSource anpassen + if (PROPERTY_ID_LISTSOURCETYPE == nPropId) + { + Commit( aName, aVal, pData ); + SetListSource(); + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::Modified : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::Clicked( const String& aName, const String& aVal, void* pData ) + { + try + { + sal_Int32 nPropId = m_pPropertyInfo->getPropertyId(aName); + + ////////////////////////////////////////////////////////////////////// + // DataSource & ImageURL + if (PROPERTY_ID_TARGET_URL == nPropId) + { + + ::rtl::OUString aStrTrans = m_pPropertyInfo->getPropertyTranslation( nPropId ); + + SfxFileDialog* pDlg = new SfxFileDialog( + GetpApp()->GetAppWindow(), WB_3DLOOK ); + + pDlg->SetPath( aVal ); + if (pDlg->Execute() == RET_OK ) + { + String aDataSource = pDlg->GetPath(); + Commit( aName, aDataSource, pData ); + + } + delete pDlg; + } + + + ////////////////////////////////////////////////////////////////////// + // Bei Datenquelle auch Cursor-/ListSource fuellen + else if (PROPERTY_ID_DATASOURCE == nPropId) + { + String aUserVal=aVal; + + Reference< XNamingService > xDatabaseAccesses(m_xORB->createInstance(SERVICE_DATABASE_CONTEXT), UNO_QUERY); + if (xDatabaseAccesses.is()) + { + Reference< XDataSource > xDataSource; + try + { + xDataSource = Reference< XDataSource >(xDatabaseAccesses->getRegisteredObject(aVal), UNO_QUERY); + } + catch(NoSuchElementException&) + { + DBG_ERROR("Use of unknown datasource name"); + } + } + } + + ////////////////////////////////////////////////////////////////////// + // URL + else if (nPropId == PROPERTY_ID_IMAGE_URL) + { + + ::rtl::OUString aStrTrans = m_pPropertyInfo->getPropertyTranslation( nPropId ); + + SvxImportGraphicDialog* pDlg = new SvxImportGraphicDialog( + NULL,aStrTrans, + ENABLE_STANDARD ); + + if (aVal.Len() != 0) + pDlg ->SetPath( aVal,sal_False); + + + if (pDlg->Execute() == RET_OK ) + { + String aDataSource = pDlg->GetPath(); + Commit( aName, aDataSource, pData ); + } + delete pDlg; + } + + + ////////////////////////////////////////////////////////////////////// + // Color + else if (nPropId == PROPERTY_ID_BACKGROUNDCOLOR ) + { + sal_uInt32 nColor = aVal.ToInt32(); + Color aColor( nColor ); + SvColorDialog aColorDlg( GetpApp()->GetAppWindow() ); + aColorDlg.SetColor( aColor ); + + if (aColorDlg.Execute() ) + { + aColor = aColorDlg.GetColor(); + nColor = aColor.GetColor(); + + String aColorString = String::CreateFromInt32( (sal_Int32)nColor ); + Commit( aName, aColorString, pData ); + } + } + + else if (PROPERTY_ID_FORMATKEY == nPropId) + { + ChangeFormatProperty(aName, aVal); + } + + else if (PROPERTY_ID_CONTROLLABEL == nPropId) + { + OSelectLabelDialog dlgSelectLabel(GetpApp()->GetAppWindow(), m_xPropValueAccess); + if (RET_OK == dlgSelectLabel.Execute()) + { + // if the properties transport would be via UsrAnys (instead of strings) we would have a chance + // to use the regular commit mechanism here .... + Reference< XPropertySet > xSelected(dlgSelectLabel.GetSelected()); + if (xSelected.is()) + m_xPropValueAccess->setPropertyValue(PROPERTY_CONTROLLABEL, makeAny(xSelected)); + else + m_xPropValueAccess->setPropertyValue(PROPERTY_CONTROLLABEL, Any()); + } + } + + ////////////////////////////////////////////////////////////////////// + // Font + else if (aName.EqualsAscii("Font")) + { + ChangeFontProperty(aName); + } + else if (pData == LINETYPE_EVENT) + { + ChangeEventProperty(aName); + } + } + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::Clicked : caught an exception !") + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::Commit( const String& rName, const String& aVal, void* pData ) + { + if (m_pChangeMultiplexer) + m_pChangeMultiplexer->lock(); + + try + { + ////////////////////////////////////////////////////////////////////// + // Property-Info holen + sal_Int32 nPropId = m_pPropertyInfo->getPropertyId( rName ); + + Property aProp = getIntrospecteeProperty( rName ); + + String aUserVal=aVal; + + ////////////////////////////////////////////////////////////////////// + // URL- Adresse koennte relativ sein + if ((nPropId == PROPERTY_ID_TARGET_URL || nPropId == PROPERTY_ID_IMAGE_URL) && aVal.Len()) + { + aUserVal = URIHelper::SmartRelToAbs(aVal); + } + + Any aValue; + if (!(m_sStandard.equals(aVal) &&(aProp.Attributes & PropertyAttribute::MAYBEVOID))) + { + aValue = StringToAny( aUserVal, aProp, nPropId); + } + + sal_Bool bDontSetToDefault = sal_False; + + if ( ( (nPropId == PROPERTY_ID_DEFAULT_VALUE) + || (nPropId == PROPERTY_ID_DEFAULT_DATE) + || (nPropId == PROPERTY_ID_DEFAULT_TIME) + || (nPropId==PROPERTY_ID_BOUNDCOLUMN) + ) + && (0 == aVal.Len()) + ) + { + aValue = Any(); + bDontSetToDefault = sal_True; + } + + ////////////////////////////////////////////////////////////////////// + // Wert setzen + sal_Bool bDontForwardToPropSet = !(aProp.Attributes & PropertyAttribute::MAYBEVOID) && + aValue.getValueType().equals( ::getVoidCppuType()); + + + if (PROPERTY_ID_CONTROLLABEL == nPropId) + { + bDontForwardToPropSet = sal_True; + // the string fo the control label is not to be set as PropertyValue, it's only for displaying + bDontSetToDefault = sal_True; + } + + if (!bDontForwardToPropSet) + m_xPropValueAccess->setPropertyValue( rName, aValue ); + + if (m_xPropStateAccess.is() && aValue.getValueType().equals( ::getVoidCppuType()) && !bDontSetToDefault) + { + m_xPropStateAccess->setPropertyToDefault(rName); + } + ////////////////////////////////////////////////////////////////////// + // Wert neu holen und ggf. neu setzen + Any aNewValue = m_xPropValueAccess->getPropertyValue(rName); + ::rtl::OUString aNewStrVal = AnyToString(aNewValue, aProp, nPropId); + + getPropertyBox()->SetPropertyValue( rName, aNewStrVal ); + + if (nPropId==PROPERTY_ID_TRISTATE) + { + OLineDescriptor aProperty; + + aProperty.sName = (String)PROPERTY_DEFAULTCHECKED; + aProperty.sTitle = m_pPropertyInfo->getPropertyTranslation(PROPERTY_ID_DEFAULT_CHECKED); + aProperty.nHelpId = m_pPropertyInfo->getPropertyHelpId(PROPERTY_ID_DEFAULT_CHECKED); + aProperty.eControlType = BCT_LISTBOX; + aProperty.sValue = getPropertyBox()->GetPropertyValue(PROPERTY_DEFAULTCHECKED); + sal_uInt16 nPos = getPropertyBox()->GetPropertyPos(PROPERTY_DEFAULTCHECKED); + + Sequence< ::rtl::OUString > aEntries = + m_pPropertyInfo->getPropertyEnumRepresentations(PROPERTY_ID_DEFAULT_CHECKED); + sal_Int32 nEntryCount = aEntries.getLength(); + + if (!::comphelper::getBOOL(aNewValue)) + // tristate not allowed -> remove the "don't know" state + --nEntryCount; + + sal_Bool bValidDefaultCheckedValue = sal_False; + + const ::rtl::OUString* pStart = aEntries.getConstArray(); + const ::rtl::OUString* pEnd = pStart + aEntries.getLength(); + for (const ::rtl::OUString* pLoop = pStart; pLoop != pEnd; ++pLoop) + { + aProperty.aListValues.push_back(*pLoop); + if (pLoop->equals(aProperty.sValue)) + bValidDefaultCheckedValue = sal_True; + } + + if (!bValidDefaultCheckedValue) + aProperty.sValue = *pStart; + + if (nPos != EDITOR_LIST_APPEND) + getPropertyBox()->ChangeEntry(aProperty,nPos); + + Commit(aProperty.sName, aProperty.sValue, NULL); + } + else if ((PROPERTY_ID_DECIMAL_ACCURACY == nPropId) || (PROPERTY_ID_SHOWTHOUSANDSEP == nPropId)) + { + sal_Bool bAccuracy = (PROPERTY_ID_DECIMAL_ACCURACY == nPropId); + sal_uInt16 nNewDigits = bAccuracy ? ::comphelper::getINT16(aNewValue) : 0; + sal_Bool bUseSep = bAccuracy ? sal_False : ::comphelper::getBOOL(aNewValue); + + getPropertyBox()->DisableUpdate(); + + // propagate the changes to the min/max/default fields + Any aCurrentProp; + ::rtl::OUString aAffectedProps[] = { PROPERTY_DEFAULT_VALUE, PROPERTY_VALUEMIN, PROPERTY_VALUEMAX }; + for (sal_uInt16 i=0; i<sizeof(aAffectedProps)/sizeof(aAffectedProps[0]); ++i) + { + OFormattedNumericControl* pField = (OFormattedNumericControl*)getPropertyBox()->GetPropertyControl(aAffectedProps[i]); + if (pField) + if (bAccuracy) + pField->SetDecimalDigits(nNewDigits); + else + pField->SetThousandsSep(bUseSep); + } + + getPropertyBox()->EnableUpdate(); + } + else if (PROPERTY_ID_FORMATKEY == nPropId) + { + FormatDescription aNewDesc; + + Any aSupplier = m_xPropValueAccess->getPropertyValue(PROPERTY_FORMATSSUPPLIER); + DBG_ASSERT(aSupplier.getValueType().equals(::getCppuType( + (const Reference< XNumberFormatsSupplier>*)0)), + + "OPropertyBrowserController::Commit : invalid property change !"); + // we only allowed the FormatKey property to be displayed if the set had a valid FormatsSupplier + Reference< XNumberFormatsSupplier > xSupplier; + aSupplier >>= xSupplier; + DBG_ASSERT(xSupplier.is(), "OPropertyBrowserController::Commit : invalid property change !"); + // same argument + Reference< XUnoTunnel > xTunnel(xSupplier,UNO_QUERY); + DBG_ASSERT(xTunnel.is(), "OPropertyBrowserController::ChangeFormatProperty : xTunnel is invalid!"); + SvNumberFormatsSupplierObj* pSupplier = (SvNumberFormatsSupplierObj*)xTunnel->getSomething(SvNumberFormatsSupplierObj::getUnoTunnelId()); + // the same again + + aNewDesc.pSupplier = pSupplier; + aNewDesc.nKey = aVal.ToInt32(); + // nKey will be zero if aVal is empty or standard + + // give each control which has to know this an own copy of the description + IBrowserControl* pControl = getPropertyBox()->GetPropertyControl(PROPERTY_EFFECTIVE_MIN); + if (pControl) + ((OFormattedNumericControl*)pControl)->SetFormatDescription(aNewDesc); + + pControl = getPropertyBox()->GetPropertyControl(PROPERTY_EFFECTIVE_MAX); + if (pControl) + ((OFormattedNumericControl*)pControl)->SetFormatDescription(aNewDesc); + + pControl = getPropertyBox()->GetPropertyControl(PROPERTY_EFFECTIVE_DEFAULT); + if (pControl) + ((OFormattedNumericControl*)pControl)->SetFormatDescription(aNewDesc); + } + + ////////////////////////////////////////////////////////////////////// + // Bei Datenquelle auch Cursor-/ListSource fuellen + if (nPropId == PROPERTY_ID_DATASOURCE ) + { + Property aProp = getIntrospecteeProperty( rName ); + + Any aValue = StringToAny( aUserVal, aProp, nPropId); + + sal_Bool bFlag= !(aProp.Attributes & PropertyAttribute::MAYBEVOID) && !aValue.hasValue(); + + + if (!bFlag) + m_xPropValueAccess->setPropertyValue(rName, aValue ); + + if (m_xPropStateAccess.is()&& !aValue.hasValue()) + { + m_xPropStateAccess->setPropertyToDefault(rName); + } + + SetCursorSource(); + SetListSource(); + } + } + catch(PropertyVetoException& eVetoException) + { + InfoBox(m_pView, eVetoException.Message).Execute(); + } + catch(Exception&) + { + DBG_ERROR("OPropertyBrowserController::Commit : caught an exception !") + } + + if (m_pChangeMultiplexer) + m_pChangeMultiplexer->unlock(); + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::Select( const String& aName, void* pData ) + { + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 10.01.01 08:51:55 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formhelpid.hrc b/extensions/source/propctrlr/formhelpid.hrc new file mode 100644 index 000000000..e10208b81 --- /dev/null +++ b/extensions/source/propctrlr/formhelpid.hrc @@ -0,0 +1,250 @@ +/************************************************************************* + * + * $RCSfile: formhelpid.hrc,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:28:14 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMCTRLR_FORMHELPID_HRC_ +#define _EXTENSIONS_FORMCTRLR_FORMHELPID_HRC_ + +#ifndef _SOLAR_HRC +#include <svtools/solar.hrc> +#endif + +// TODO: real help ids. For the moment, these ids are ripped from +// svx/fmhelp.hrc + +// ---------------------------------------------------------------------------- + +#define HID_PROP_GROUPBOX (HID_FORMS_START + 2) +#define HID_PROP_CONTROLSOURCE (HID_FORMS_START + 3) +#define HID_PROP_NAME (HID_FORMS_START + 4) +#define HID_PROP_TABINDEX (HID_FORMS_START + 5) +#define HID_PROP_MASTERFIELDS (HID_FORMS_START + 6) +#define HID_PROP_SLAVEFIELDS (HID_FORMS_START + 7) +#define HID_PROP_DATASOURCE (HID_FORMS_START + 8) +#define HID_PROP_CURSORSOURCE (HID_FORMS_START + 9) +#define HID_PROP_CURSORSOURCETYPE (HID_FORMS_START + 10) +#define HID_PROP_CURSORTYPE (HID_FORMS_START + 11) +#define HID_PROP_READONLY (HID_FORMS_START + 12) +#define HID_PROP_DATAENTRY (HID_FORMS_START + 13) +#define HID_PROP_NAVIGATION (HID_FORMS_START + 14) +#define HID_PROP_CYCLE (HID_FORMS_START + 15) +#define HID_PROP_ALLOW_ADDITIONS (HID_FORMS_START + 16) +#define HID_PROP_ALLOW_EDITS (HID_FORMS_START + 17) +#define HID_PROP_ALLOW_DELETIONS (HID_FORMS_START + 18) +#define HID_PROP_DIRTY (HID_FORMS_START + 19) +#define HID_PROP_OLDVALUE (HID_FORMS_START + 20) +#define HID_PROP_VALUE (HID_FORMS_START + 21) +#define HID_PROP_LOCKED (HID_FORMS_START + 22) +#define HID_PROP_FORMATKEY (HID_FORMS_START + 23) +#define HID_PROP_REQUIRED (HID_FORMS_START + 24) +#define HID_PROP_SCALE (HID_FORMS_START + 25) +#define HID_PROP_UNIQUE (HID_FORMS_START + 27) +#define HID_PROP_CLASSID (HID_FORMS_START + 28) +#define HID_PROP_LEFT (HID_FORMS_START + 29) +#define HID_PROP_RIGHT (HID_FORMS_START + 30) +#define HID_PROP_HEIGHT (HID_FORMS_START + 31) +#define HID_PROP_WIDTH (HID_FORMS_START + 32) +#define HID_PROP_BOUNDCOLUMN (HID_FORMS_START + 33) +#define HID_PROP_LISTSOURCETYPE (HID_FORMS_START + 34) +#define HID_PROP_LISTSOURCE (HID_FORMS_START + 35) +#define HID_PROP_LISTINDEX (HID_FORMS_START + 36) +#define HID_PROP_TEXT (HID_FORMS_START + 37) +#define HID_PROP_LABEL (HID_FORMS_START + 38) +#define HID_PROP_STRINGITEMLIST (HID_FORMS_START + 39) +#define HID_PROP_SEARCHING (HID_FORMS_START + 40) +#define HID_PROP_FONT (HID_FORMS_START + 41) +#define HID_PROP_ROWHEIGHT (HID_FORMS_START + 42) +#define HID_PROP_BACKGROUNDCOLOR (HID_FORMS_START + 43) +#define HID_PROP_FILLCOLOR (HID_FORMS_START + 44) +#define HID_PROP_LINECOLOR (HID_FORMS_START + 46) +#define HID_PROP_BORDER (HID_FORMS_START + 47) +#define HID_PROP_ALIGN (HID_FORMS_START + 48) +#define HID_PROP_DROPDOWN (HID_FORMS_START + 49) +#define HID_PROP_MULTILINE (HID_FORMS_START + 50) +#define HID_PROP_HSCROLL (HID_FORMS_START + 51) +#define HID_PROP_VSCROLL (HID_FORMS_START + 52) +#define HID_PROP_TABSTOP (HID_FORMS_START + 53) +#define HID_PROP_REFVALUE (HID_FORMS_START + 54) +#define HID_PROP_BUTTONTYPE (HID_FORMS_START + 55) +#define HID_PROP_SUBMIT_ACTION (HID_FORMS_START + 56) +#define HID_PROP_SUBMIT_METHOD (HID_FORMS_START + 57) +#define HID_PROP_SUBMIT_ENCODING (HID_FORMS_START + 58) +#define HID_PROP_DEFAULTVALUE (HID_FORMS_START + 59) +#define HID_PROP_SUBMIT_TARGET (HID_FORMS_START + 60) +#define HID_PROP_DEFAULT_CHECKED (HID_FORMS_START + 61) +#define HID_PROP_IMAGE_URL (HID_FORMS_START + 62) +#define HID_PROP_DEFAULT_SELECT_SEQ (HID_FORMS_START + 63) +#define HID_PROP_MULTISELECTION (HID_FORMS_START + 64) +#define HID_PROP_DATE (HID_FORMS_START + 65) +#define HID_PROP_DATEMIN (HID_FORMS_START + 66) +#define HID_PROP_DATEMAX (HID_FORMS_START + 67) +#define HID_PROP_DATEFORMAT (HID_FORMS_START + 68) +#define HID_PROP_TIME (HID_FORMS_START + 69) +#define HID_PROP_TIMEMIN (HID_FORMS_START + 70) +#define HID_PROP_TIMEMAX (HID_FORMS_START + 71) +#define HID_PROP_TIMEFORMAT (HID_FORMS_START + 72) +#define HID_PROP_VALUEMIN (HID_FORMS_START + 73) +#define HID_PROP_VALUEMAX (HID_FORMS_START + 74) +#define HID_PROP_VALUESTEP (HID_FORMS_START + 75) +#define HID_PROP_CURRENCYSYMBOL (HID_FORMS_START + 76) +#define HID_PROP_EDITMASK (HID_FORMS_START + 77) +#define HID_PROP_LITERALMASK (HID_FORMS_START + 78) +#define HID_PROP_ENABLED (HID_FORMS_START + 79) +#define HID_PROP_AUTOCOMPLETE (HID_FORMS_START + 80) +#define HID_PROP_LINECOUNT (HID_FORMS_START + 81) +#define HID_PROP_MAXTEXTLEN (HID_FORMS_START + 82) +#define HID_PROP_SPIN (HID_FORMS_START + 83) +#define HID_PROP_STRICTFORMAT (HID_FORMS_START + 84) +#define HID_PROP_SHOWTHOUSANDSEP (HID_FORMS_START + 85) +#define HID_PROP_HARDLINEBREAKS (HID_FORMS_START + 86) +#define HID_PROP_PRINTABLE (HID_FORMS_START + 87) +#define HID_PROP_TARGET_URL (HID_FORMS_START + 88) +#define HID_PROP_TARGET_FRAME (HID_FORMS_START + 89) +#define HID_PROP_TAG (HID_FORMS_START + 90) +#define HID_PROP_ECHO_CHAR (HID_FORMS_START + 91) +#define HID_PROP_EMPTY_IS_NULL (HID_FORMS_START + 92) +#define HID_PROP_DECIMAL_ACCURACY (HID_FORMS_START + 93) +#define HID_PROP_DATE_SHOW_CENTURY (HID_FORMS_START + 94) +#define HID_PROP_DEFAULT_BUTTON (HID_FORMS_START + 95) +#define HID_PROP_HIDDEN_VALUE (HID_FORMS_START + 96) +#define HID_PROP_TRISTATE (HID_FORMS_START + 97) +#define HID_PROP_NAVIGATIONBAR (HID_FORMS_START + 98) +#define HID_PROP_FILTER_CRITERIA (HID_FORMS_START + 99) +#define HID_PROP_SORT_CRITERIA (HID_FORMS_START + 100) +#define HID_PROP_DEFAULT_LONG_VALUE (HID_FORMS_START + 101) +#define HID_PROP_DEFAULT_TIME (HID_FORMS_START + 102) +#define HID_PROP_DEFAULT_DATE (HID_FORMS_START + 103) +#define HID_PROP_HELPTEXT (HID_FORMS_START + 104) +#define HID_PROP_HELPURL (HID_FORMS_START + 105) +#define HID_PROP_RECORDMARKER (HID_FORMS_START + 106) +#define HID_PROP_FILTERPROPOSAL (HID_FORMS_START + 107) +#define HID_PROP_EFFECTIVEMIN (HID_FORMS_START + 108) +#define HID_PROP_EFFECTIVEMAX (HID_FORMS_START + 109) +#define HID_PROP_EFFECTIVEDEFAULT (HID_FORMS_START + 110) +#define HID_PROP_CONTROLLABEL (HID_FORMS_START + 111) +#define HID_PROP_CURRSYM_POSITION (HID_FORMS_START + 112) +#define HID_PROP_ESCAPE_PROCESSING (HID_FORMS_START + 113) + +// ---------------------------------------------------------------------------- + +#define HID_EVT_START (HID_FORMS_START + 200) + +#define HID_EVT_ACTIONPERFORMED (HID_EVT_START + 0) +#define HID_EVT_AFTERUPDATE (HID_EVT_START + 3) +#define HID_EVT_BEFOREUPDATE (HID_EVT_START + 6) +#define HID_EVT_CONFIRMDELETE (HID_EVT_START + 12) +#define HID_EVT_ERROROCCURED (HID_EVT_START + 16) +#define HID_EVT_FOCUSGAINED (HID_EVT_START + 18) +#define HID_EVT_FOCUSLOST (HID_EVT_START + 19) +#define HID_EVT_ITEMSTATECHANGED (HID_EVT_START + 20) +#define HID_EVT_KEYTYPED (HID_EVT_START + 21) +#define HID_EVT_LOADED (HID_EVT_START + 22) +#define HID_EVT_MOUSEDRAGGED (HID_EVT_START + 23) +#define HID_EVT_MOUSEENTERED (HID_EVT_START + 24) +#define HID_EVT_MOUSEEXITED (HID_EVT_START + 25) +#define HID_EVT_MOUSEMOVED (HID_EVT_START + 26) +#define HID_EVT_MOUSEPRESSED (HID_EVT_START + 27) +#define HID_EVT_MOUSERELEASED (HID_EVT_START + 28) +#define HID_EVT_POSITIONED (HID_EVT_START + 29) +#define HID_EVT_RESETTED (HID_EVT_START + 33) +#define HID_EVT_SUBMITTED (HID_EVT_START + 34) +#define HID_EVT_TEXTCHANGED (HID_EVT_START + 35) +#define HID_EVT_UNLOADED (HID_EVT_START + 36) +#define HID_EVT_CHANGED (HID_EVT_START + 39) +#define HID_EVT_APPROVEACTIONPERFORMED (HID_EVT_START + 40) +#define HID_EVT_APPROVERESETTED (HID_EVT_START + 41) +#define HID_EVT_KEYUP (HID_EVT_START + 42) +#define HID_EVT_APPROVEPARAMETER (HID_EVT_START + 43) +#define HID_EVT_POSITIONING (HID_EVT_START + 44) +#define HID_EVT_RELOADED (HID_EVT_START + 45) +#define HID_EVT_APPROVEROWCHANGE (HID_EVT_START + 46) +#define HID_EVT_ROWCHANGE (HID_EVT_START + 47) +#define HID_EVT_RELOADING (HID_EVT_START + 48) +#define HID_EVT_UNLOADING (HID_EVT_START + 49) + +#define UID_EVT_MACRODLG (HID_EVT_START + 99) + +// ---------------------------------------------------------------------------- + +#define UID_PROP_DLG (HID_FORMS_START + 180) + +#define UID_PROP_DLG_FONT_TYPE (UID_PROP_DLG + 0) +#define UID_PROP_DLG_ATTR_TARGET_URL (UID_PROP_DLG + 5) +#define UID_PROP_DLG_IMAGE_URL (UID_PROP_DLG + 1) +#define UID_PROP_DLG_BACKGROUNDCOLOR (UID_PROP_DLG + 2) +#define UID_PROP_DLG_CONTROLLABEL (UID_PROP_DLG + 7) +#define UID_PROP_DLG_NUMBER_FORMAT (UID_PROP_DLG + 6) +#define UID_PROP_DLG_ATTR_DATASOURCE (UID_PROP_DLG + 4) + +// ---------------------------------------------------------------------------- + +#define HID_FORM_DLG_START (HID_FORMS_START + 400) + +#define HID_FM_PROPDLG_TAB_EVT (HID_FORM_DLG_START + 8) + +#endif // _EXTENSIONS_FORMCTRLR_FORMHELPID_HRC_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 15:59:13 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formmetadata.cxx b/extensions/source/propctrlr/formmetadata.cxx new file mode 100644 index 000000000..f1c5b8241 --- /dev/null +++ b/extensions/source/propctrlr/formmetadata.cxx @@ -0,0 +1,473 @@ +/************************************************************************* + * + * $RCSfile: formmetadata.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:28:26 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ +#include "formmetadata.hxx" +#endif +#ifndef _EXTENSIONS_FORMCTRLR_FORMHELPID_HRC_ +#include "formhelpid.hrc" +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ +#include "formstrings.hxx" +#endif +#ifndef _EXTENSIONS_FORMCTRLR_PROPRESID_HRC_ +#include "formresid.hrc" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + using namespace ::com::sun::star::uno; + + //======================================================================== + //= OPropertyInfoImpl + //======================================================================== + struct OPropertyInfoImpl + { + String sName; + String sTranslation; + sal_uInt32 nHelpId; + sal_Int32 nId; + sal_uInt16 nPos; + sal_Bool bMultiSelectable; + + OPropertyInfoImpl( + const String& rName, + sal_Int32 _nId, + sal_Bool bMSel, + const String& aTranslation, + sal_uInt16 nPosId, + sal_uInt32 nHelpId); + }; + + //------------------------------------------------------------------------ + OPropertyInfoImpl::OPropertyInfoImpl(const String& _rName, sal_Int32 _nId, sal_Bool bMSel, + const String& aString, sal_uInt16 nP, sal_uInt32 nHid) + :sName(_rName) + ,nId(_nId) + ,bMultiSelectable(bMSel) + ,sTranslation(aString) + ,nPos(nP) + ,nHelpId(nHid) + { + } + + //------------------------------------------------------------------------ + // Vergleichen von PropertyInfo + static int + #if defined( WNT ) + __cdecl + #endif + #if defined( ICC ) && defined( OS2 ) + _Optlink + #endif + PropertyInfoCompare(const void* pFirst, const void* pSecond) + { + return reinterpret_cast<const OPropertyInfoImpl*>(pFirst)->sName.CompareTo(reinterpret_cast<const OPropertyInfoImpl*>(pSecond)->sName); + } + + //======================================================================== + //= OFormPropertyInfoService + //======================================================================== + sal_uInt16 OFormPropertyInfoService::s_nCount = 0; + OPropertyInfoImpl* OFormPropertyInfoService::s_pPropertyInfos = NULL; + //------------------------------------------------------------------------ + const OPropertyInfoImpl* OFormPropertyInfoService::getPropertyInfo() + { + sal_uInt16 nPos=1; + if (s_pPropertyInfos == NULL) + { + OModuleResourceClient aResourceAccess; + // this ensures that we have our resource file loaded + + // somewhat ugly ... but this way we easily ensure that the + static OPropertyInfoImpl __READONLY_DATA aPropertyInfos[] = + { + OPropertyInfoImpl(PROPERTY_NAME, PROPERTY_ID_NAME, sal_False, String(ModuleRes(RID_STR_NAME)), nPos++, HID_PROP_NAME) , + OPropertyInfoImpl(PROPERTY_LABEL, PROPERTY_ID_LABEL, sal_True, String(ModuleRes(RID_STR_LABEL)), nPos++, HID_PROP_LABEL), + OPropertyInfoImpl(PROPERTY_CONTROLLABEL, PROPERTY_ID_CONTROLLABEL, sal_False, String(ModuleRes(RID_STR_LABELCONTROL)), nPos++, HID_PROP_CONTROLLABEL), + OPropertyInfoImpl(PROPERTY_MAXTEXTLEN, PROPERTY_ID_MAXTEXTLEN, sal_True, String(ModuleRes(RID_STR_MAXTEXTLEN)), nPos++, HID_PROP_MAXTEXTLEN), + OPropertyInfoImpl(PROPERTY_EDITMASK, PROPERTY_ID_EDITMASK, sal_True, String(ModuleRes(RID_STR_EDITMASK)), nPos++, HID_PROP_EDITMASK), + OPropertyInfoImpl(PROPERTY_LITERALMASK, PROPERTY_ID_LITERALMASK, sal_True, String(ModuleRes(RID_STR_LITERALMASK)), nPos++, HID_PROP_LITERALMASK), + OPropertyInfoImpl(PROPERTY_STRICTFORMAT, PROPERTY_ID_STRICTFORMAT, sal_True, String(ModuleRes(RID_STR_STRICTFORMAT)), nPos++, HID_PROP_STRICTFORMAT), + OPropertyInfoImpl(PROPERTY_ENABLED, PROPERTY_ID_ENABLED, sal_True, String(ModuleRes(RID_STR_ENABLED)), nPos++, HID_PROP_ENABLED) , + OPropertyInfoImpl(PROPERTY_READONLY, PROPERTY_ID_READONLY, sal_True, String(ModuleRes(RID_STR_READONLY)), nPos++, HID_PROP_READONLY) , + OPropertyInfoImpl(PROPERTY_PRINTABLE, PROPERTY_ID_PRINTABLE, sal_True, String(ModuleRes(RID_STR_PRINTABLE)), nPos++, HID_PROP_PRINTABLE) , + OPropertyInfoImpl(PROPERTY_CONTROLSOURCE, PROPERTY_ID_CONTROLSOURCE, sal_True, String(ModuleRes(RID_STR_CONTROLSOURCE)), nPos++, HID_PROP_CONTROLSOURCE), + OPropertyInfoImpl(PROPERTY_TABSTOP, PROPERTY_ID_TABSTOP, sal_True, String(ModuleRes(RID_STR_TABSTOP)), nPos++, HID_PROP_TABSTOP), + OPropertyInfoImpl(PROPERTY_TABINDEX, PROPERTY_ID_TABINDEX, sal_True, String(ModuleRes(RID_STR_TABINDEX)), nPos++, HID_PROP_TABINDEX) , + OPropertyInfoImpl(PROPERTY_DATASOURCE, PROPERTY_ID_DATASOURCE, sal_True, String(ModuleRes(RID_STR_DATASOURCE)), nPos++, HID_PROP_DATASOURCE) , + OPropertyInfoImpl(PROPERTY_COMMAND, PROPERTY_ID_COMMAND, sal_False, String(ModuleRes(RID_STR_CURSORSOURCE)), nPos++, HID_PROP_CURSORSOURCE), + OPropertyInfoImpl(PROPERTY_COMMANDTYPE, PROPERTY_ID_COMMANDTYPE, sal_False, String(ModuleRes(RID_STR_CURSORSOURCETYPE)), nPos++, HID_PROP_CURSORSOURCETYPE), + OPropertyInfoImpl(PROPERTY_ESCAPE_PROCESSING, PROPERTY_ID_ESCAPE_PROCESSING, sal_False, String(ModuleRes(RID_STR_ESCAPE_PROCESSING)), nPos++, HID_PROP_ESCAPE_PROCESSING), + OPropertyInfoImpl(PROPERTY_FILTER_CRITERIA, PROPERTY_ID_FILTER_CRITERIA, sal_False, String(ModuleRes(RID_STR_FILTER_CRITERIA)), nPos++, HID_PROP_FILTER_CRITERIA ), + OPropertyInfoImpl(PROPERTY_SORT, PROPERTY_ID_SORT, sal_False, String(ModuleRes(RID_STR_SORT_CRITERIA)), nPos++, HID_PROP_SORT_CRITERIA) , + OPropertyInfoImpl(PROPERTY_ALLOWADDITIONS, PROPERTY_ID_ALLOWADDITIONS, sal_True, String(ModuleRes(RID_STR_ALLOW_ADDITIONS)), nPos++, HID_PROP_ALLOW_ADDITIONS) , + OPropertyInfoImpl(PROPERTY_ALLOWEDITS, PROPERTY_ID_ALLOWEDITS, sal_True, String(ModuleRes(RID_STR_ALLOW_EDITS)), nPos++, HID_PROP_ALLOW_EDITS ) , + OPropertyInfoImpl(PROPERTY_ALLOWDELETIONS, PROPERTY_ID_ALLOWDELETIONS, sal_True, String(ModuleRes(RID_STR_ALLOW_DELETIONS)), nPos++, HID_PROP_ALLOW_DELETIONS) , + OPropertyInfoImpl(PROPERTY_INSERTONLY, PROPERTY_ID_INSERTONLY, sal_True, String(ModuleRes(RID_STR_DATAENTRY)), nPos++, HID_PROP_DATAENTRY) , + OPropertyInfoImpl(PROPERTY_NAVIGATION, PROPERTY_ID_NAVIGATION, sal_True, String(ModuleRes(RID_STR_NAVIGATION)), nPos++, HID_PROP_NAVIGATION) , + OPropertyInfoImpl(PROPERTY_CYCLE, PROPERTY_ID_CYCLE, sal_True, String(ModuleRes(RID_STR_CYCLE)), nPos++, HID_PROP_CYCLE) , + OPropertyInfoImpl(PROPERTY_HIDDEN_VALUE, PROPERTY_ID_HIDDEN_VALUE, sal_True, String(ModuleRes(RID_STR_VALUE)), nPos++, HID_PROP_HIDDEN_VALUE), + OPropertyInfoImpl(PROPERTY_VALUEMIN, PROPERTY_ID_VALUEMIN, sal_True, String(ModuleRes(RID_STR_VALUEMIN)), nPos++, HID_PROP_VALUEMIN) , + OPropertyInfoImpl(PROPERTY_VALUEMAX, PROPERTY_ID_VALUEMAX, sal_True, String(ModuleRes(RID_STR_VALUEMAX)), nPos++, HID_PROP_VALUEMAX) , + OPropertyInfoImpl(PROPERTY_VALUESTEP, PROPERTY_ID_VALUESTEP, sal_True, String(ModuleRes(RID_STR_VALUESTEP)), nPos++, HID_PROP_VALUESTEP) , + OPropertyInfoImpl(PROPERTY_DEFAULT_VALUE, PROPERTY_ID_DEFAULT_VALUE, sal_True, String(ModuleRes(RID_STR_DEFAULTVALUE)), nPos++, HID_PROP_DEFAULT_LONG_VALUE ), + OPropertyInfoImpl(PROPERTY_DECIMAL_ACCURACY, PROPERTY_ID_DECIMAL_ACCURACY, sal_True, String(ModuleRes(RID_STR_DECIMAL_ACCURACY)), nPos++, HID_PROP_DECIMAL_ACCURACY ), + OPropertyInfoImpl(PROPERTY_SHOWTHOUSANDSEP, PROPERTY_ID_SHOWTHOUSANDSEP, sal_True, String(ModuleRes(RID_STR_SHOWTHOUSANDSEP)), nPos++, HID_PROP_SHOWTHOUSANDSEP), + + OPropertyInfoImpl(PROPERTY_REFVALUE, PROPERTY_ID_REFVALUE, sal_True, String(ModuleRes(RID_STR_REFVALUE)), nPos++, HID_PROP_REFVALUE), + OPropertyInfoImpl(PROPERTY_CURRENCYSYMBOL, PROPERTY_ID_CURRENCYSYMBOL, sal_True, String(ModuleRes(RID_STR_CURRENCYSYMBOL)), nPos++, HID_PROP_CURRENCYSYMBOL), + OPropertyInfoImpl(PROPERTY_CURRSYM_POSITION, PROPERTY_ID_CURRSYM_POSITION, sal_True, String(ModuleRes(RID_STR_CURRSYM_POSITION)), nPos++, HID_PROP_CURRSYM_POSITION), + + OPropertyInfoImpl(PROPERTY_DATEMIN, PROPERTY_ID_DATEMIN, sal_True, String(ModuleRes(RID_STR_DATEMIN)), nPos++, HID_PROP_DATEMIN) , + OPropertyInfoImpl(PROPERTY_DATEMAX, PROPERTY_ID_DATEMAX, sal_True, String(ModuleRes(RID_STR_DATEMAX)), nPos++, HID_PROP_DATEMAX) , + OPropertyInfoImpl(PROPERTY_DATEFORMAT, PROPERTY_ID_DATEFORMAT, sal_True, String(ModuleRes(RID_STR_DATEFORMAT)), nPos++, HID_PROP_DATEFORMAT) , + OPropertyInfoImpl(PROPERTY_DATE_SHOW_CENTURY, PROPERTY_ID_DATE_SHOW_CENTURY, sal_True, String(ModuleRes(RID_STR_DATE_SHOW_CENTURY)),nPos++, HID_PROP_DATE_SHOW_CENTURY ), + OPropertyInfoImpl(PROPERTY_DEFAULT_DATE, PROPERTY_ID_DEFAULT_DATE, sal_True, String(ModuleRes(RID_STR_DEFAULTVALUE)), nPos++, HID_PROP_DEFAULT_DATE ), + + OPropertyInfoImpl(PROPERTY_TIMEMIN, PROPERTY_ID_TIMEMIN, sal_True, String(ModuleRes(RID_STR_TIMEMIN)), nPos++, HID_PROP_TIMEMIN) , + OPropertyInfoImpl(PROPERTY_TIMEMAX, PROPERTY_ID_TIMEMAX, sal_True, String(ModuleRes(RID_STR_TIMEMAX)), nPos++, HID_PROP_TIMEMAX) , + OPropertyInfoImpl(PROPERTY_TIMEFORMAT, PROPERTY_ID_TIMEFORMAT, sal_True, String(ModuleRes(RID_STR_TIMEFORMAT)), nPos++, HID_PROP_TIMEFORMAT) , + OPropertyInfoImpl(PROPERTY_DEFAULT_TIME, PROPERTY_ID_DEFAULT_TIME, sal_True, String(ModuleRes(RID_STR_DEFAULTVALUE)), nPos++, HID_PROP_DEFAULT_TIME ), + + OPropertyInfoImpl(PROPERTY_EFFECTIVE_MIN, PROPERTY_ID_EFFECTIVE_MIN, sal_False, String(ModuleRes(RID_STR_VALUEMIN)), nPos++, HID_PROP_EFFECTIVEMIN), + OPropertyInfoImpl(PROPERTY_EFFECTIVE_MAX, PROPERTY_ID_EFFECTIVE_MAX, sal_False, String(ModuleRes(RID_STR_VALUEMAX)), nPos++, HID_PROP_EFFECTIVEMAX), + OPropertyInfoImpl(PROPERTY_EFFECTIVE_DEFAULT, PROPERTY_ID_EFFECTIVE_DEFAULT, sal_False, String(ModuleRes(RID_STR_DEFAULTVALUE)), nPos++, HID_PROP_EFFECTIVEDEFAULT), + OPropertyInfoImpl(PROPERTY_FORMATKEY, PROPERTY_ID_FORMATKEY, sal_True, String(ModuleRes(RID_STR_FORMATKEY)), nPos++, HID_PROP_FORMATKEY), + + OPropertyInfoImpl(PROPERTY_CLASSID, PROPERTY_ID_CLASSID, sal_False, String(ModuleRes(RID_STR_CLASSID)), nPos++, HID_PROP_CLASSID), + OPropertyInfoImpl(PROPERTY_HEIGHT, PROPERTY_ID_HEIGHT, sal_True, String(ModuleRes(RID_STR_HEIGHT)), nPos++, HID_PROP_HEIGHT), + OPropertyInfoImpl(PROPERTY_WIDTH, PROPERTY_ID_WIDTH, sal_True, String(ModuleRes(RID_STR_WIDTH)), nPos++, HID_PROP_WIDTH), + OPropertyInfoImpl(PROPERTY_BOUNDCOLUMN, PROPERTY_ID_BOUNDCOLUMN, sal_True, String(ModuleRes(RID_STR_BOUNDCOLUMN)), nPos++, HID_PROP_BOUNDCOLUMN), + OPropertyInfoImpl(PROPERTY_LISTSOURCETYPE, PROPERTY_ID_LISTSOURCETYPE, sal_True, String(ModuleRes(RID_STR_LISTSOURCETYPE)), nPos++, HID_PROP_LISTSOURCETYPE), + OPropertyInfoImpl(PROPERTY_LISTSOURCE, PROPERTY_ID_LISTSOURCE, sal_True, String(ModuleRes(RID_STR_LISTSOURCE)), nPos++, HID_PROP_LISTSOURCE), + OPropertyInfoImpl(PROPERTY_LISTINDEX, PROPERTY_ID_LISTINDEX, sal_True, String(ModuleRes(RID_STR_LISTINDEX)), nPos++, HID_PROP_LISTINDEX), + OPropertyInfoImpl(PROPERTY_STRINGITEMLIST, PROPERTY_ID_STRINGITEMLIST, sal_True, String(ModuleRes(RID_STR_STRINGITEMLIST)), nPos++, HID_PROP_STRINGITEMLIST), + OPropertyInfoImpl(PROPERTY_DEFAULT_TEXT, PROPERTY_ID_DEFAULT_TEXT, sal_True, String(ModuleRes(RID_STR_DEFAULTVALUE)), nPos++, HID_PROP_DEFAULTVALUE ), + OPropertyInfoImpl(PROPERTY_FONT_NAME, PROPERTY_ID_FONT_NAME, sal_True, String(ModuleRes(RID_STR_FONT)), nPos++, HID_PROP_FONT), + OPropertyInfoImpl(PROPERTY_ALIGN, PROPERTY_ID_ALIGN, sal_True, String(ModuleRes(RID_STR_ALIGN)), nPos++, HID_PROP_ALIGN), + OPropertyInfoImpl(PROPERTY_ROWHEIGHT, PROPERTY_ID_ROWHEIGHT, sal_True, String(ModuleRes(RID_STR_ROWHEIGHT)), nPos++, HID_PROP_ROWHEIGHT), + OPropertyInfoImpl(PROPERTY_BACKGROUNDCOLOR, PROPERTY_ID_BACKGROUNDCOLOR, sal_True, String(ModuleRes(RID_STR_BACKGROUNDCOLOR)), nPos++, HID_PROP_BACKGROUNDCOLOR), + OPropertyInfoImpl(PROPERTY_FILLCOLOR, PROPERTY_ID_FILLCOLOR, sal_True, String(ModuleRes(RID_STR_FILLCOLOR)), nPos++, HID_PROP_FILLCOLOR), + OPropertyInfoImpl(PROPERTY_LINECOLOR, PROPERTY_ID_LINECOLOR, sal_True, String(ModuleRes(RID_STR_LINECOLOR)), nPos++, HID_PROP_LINECOLOR), + OPropertyInfoImpl(PROPERTY_BORDER, PROPERTY_ID_BORDER, sal_True, String(ModuleRes(RID_STR_BORDER)), nPos++, HID_PROP_BORDER), + OPropertyInfoImpl(PROPERTY_DROPDOWN, PROPERTY_ID_DROPDOWN, sal_True, String(ModuleRes(RID_STR_DROPDOWN)), nPos++, HID_PROP_DROPDOWN), + OPropertyInfoImpl(PROPERTY_AUTOCOMPLETE, PROPERTY_ID_AUTOCOMPLETE, sal_True, String(ModuleRes(RID_STR_AUTOCOMPLETE)), nPos++, HID_PROP_AUTOCOMPLETE), + OPropertyInfoImpl(PROPERTY_LINECOUNT, PROPERTY_ID_LINECOUNT, sal_True, String(ModuleRes(RID_STR_LINECOUNT)), nPos++, HID_PROP_LINECOUNT), + OPropertyInfoImpl(PROPERTY_MULTI, PROPERTY_ID_MULTI, sal_True, String(ModuleRes(RID_STR_MULTILINE)), nPos++, HID_PROP_MULTILINE), + OPropertyInfoImpl(PROPERTY_MULTILINE, PROPERTY_ID_MULTILINE, sal_True, String(ModuleRes(RID_STR_MULTILINE)), nPos++, HID_PROP_MULTILINE), + OPropertyInfoImpl(PROPERTY_MULTISELECTION, PROPERTY_ID_MULTISELECTION, sal_True, String(ModuleRes(RID_STR_MULTISELECTION)), nPos++, HID_PROP_MULTISELECTION), + OPropertyInfoImpl(PROPERTY_HARDLINEBREAKS, PROPERTY_ID_HARDLINEBREAKS, sal_True, String(ModuleRes(RID_STR_HARDLINEBREAKS)), nPos++, HID_PROP_HARDLINEBREAKS), + OPropertyInfoImpl(PROPERTY_HSCROLL, PROPERTY_ID_HSCROLL, sal_True, String(ModuleRes(RID_STR_HSCROLL)), nPos++, HID_PROP_HSCROLL), + OPropertyInfoImpl(PROPERTY_VSCROLL, PROPERTY_ID_VSCROLL, sal_True, String(ModuleRes(RID_STR_VSCROLL)), nPos++, HID_PROP_VSCROLL), + OPropertyInfoImpl(PROPERTY_SPIN, PROPERTY_ID_SPIN, sal_True, String(ModuleRes(RID_STR_SPIN)), nPos++, HID_PROP_SPIN), + OPropertyInfoImpl(PROPERTY_BUTTONTYPE, PROPERTY_ID_BUTTONTYPE, sal_True, String(ModuleRes(RID_STR_BUTTONTYPE)), nPos++, HID_PROP_BUTTONTYPE), + OPropertyInfoImpl(PROPERTY_TARGET_URL, PROPERTY_ID_TARGET_URL, sal_True, String(ModuleRes(RID_STR_TARGET_URL)), nPos++, HID_PROP_TARGET_URL ), + OPropertyInfoImpl(PROPERTY_TARGET_FRAME, PROPERTY_ID_TARGET_FRAME, sal_True, String(ModuleRes(RID_STR_TARGET_FRAME)), nPos++, HID_PROP_TARGET_FRAME ), + OPropertyInfoImpl(PROPERTY_SUBMIT_ACTION, PROPERTY_ID_SUBMIT_ACTION, sal_True, String(ModuleRes(RID_STR_SUBMIT_ACTION)), nPos++, HID_PROP_SUBMIT_ACTION ), + OPropertyInfoImpl(PROPERTY_SUBMIT_TARGET, PROPERTY_ID_SUBMIT_TARGET, sal_True, String(ModuleRes(RID_STR_SUBMIT_TARGET)), nPos++, HID_PROP_SUBMIT_TARGET ), + OPropertyInfoImpl(PROPERTY_SUBMIT_METHOD, PROPERTY_ID_SUBMIT_METHOD, sal_True, String(ModuleRes(RID_STR_SUBMIT_METHOD)), nPos++, HID_PROP_SUBMIT_METHOD ), + OPropertyInfoImpl(PROPERTY_SUBMIT_ENCODING, PROPERTY_ID_SUBMIT_ENCODING, sal_True, String(ModuleRes(RID_STR_SUBMIT_ENCODING)), nPos++, HID_PROP_SUBMIT_ENCODING ), + OPropertyInfoImpl(PROPERTY_DEFAULTCHECKED, PROPERTY_ID_DEFAULT_CHECKED, sal_True, String(ModuleRes(RID_STR_DEFAULT_CHECKED)), nPos++, HID_PROP_DEFAULT_CHECKED ), + OPropertyInfoImpl(PROPERTY_DEFAULTBUTTON, PROPERTY_ID_DEFAULT_BUTTON, sal_True, String(ModuleRes(RID_STR_DEFAULT_BUTTON)), nPos++, HID_PROP_DEFAULT_BUTTON ), + OPropertyInfoImpl(PROPERTY_IMAGE_URL, PROPERTY_ID_IMAGE_URL, sal_True, String(ModuleRes(RID_STR_IMAGE_URL)), nPos++, HID_PROP_IMAGE_URL ), + OPropertyInfoImpl(PROPERTY_DEFAULT_SELECT_SEQ, PROPERTY_ID_DEFAULT_SELECT_SEQ, sal_True, String(ModuleRes(RID_STR_DEFAULT_SELECT_SEQ)),nPos++, HID_PROP_DEFAULT_SELECT_SEQ ), + OPropertyInfoImpl(PROPERTY_ECHO_CHAR, PROPERTY_ID_ECHO_CHAR, sal_True, String(ModuleRes(RID_STR_ECHO_CHAR)), nPos++, HID_PROP_ECHO_CHAR ), + OPropertyInfoImpl(PROPERTY_EMPTY_IS_NULL, PROPERTY_ID_EMPTY_IS_NULL, sal_True, String(ModuleRes(RID_STR_EMPTY_IS_NULL)), nPos++, HID_PROP_EMPTY_IS_NULL ), + OPropertyInfoImpl(PROPERTY_TRISTATE, PROPERTY_ID_TRISTATE , sal_True, String(ModuleRes(RID_STR_TRISTATE)), nPos++, HID_PROP_TRISTATE ), + OPropertyInfoImpl(PROPERTY_MASTERFIELDS, PROPERTY_ID_MASTERFIELDS, sal_True, String(ModuleRes(RID_STR_MASTERFIELDS)), nPos++, HID_PROP_MASTERFIELDS) , + OPropertyInfoImpl(PROPERTY_DETAILFIELDS, PROPERTY_ID_DETAILFIELDS, sal_True, String(ModuleRes(RID_STR_SLAVEFIELDS)), nPos++, HID_PROP_SLAVEFIELDS), + OPropertyInfoImpl(PROPERTY_HASNAVIGATION, PROPERTY_ID_HASNAVIGATION, sal_True, String(ModuleRes(RID_STR_NAVIGATIONBAR)), nPos++, HID_PROP_NAVIGATIONBAR) , + OPropertyInfoImpl(PROPERTY_RECORDMARKER, PROPERTY_ID_RECORDMARKER, sal_True, String(ModuleRes(RID_STR_RECORDMARKER)), nPos++, HID_PROP_RECORDMARKER) , + OPropertyInfoImpl(PROPERTY_FILTERPROPOSAL, PROPERTY_ID_FILTERPROPOSAL, sal_True, String(ModuleRes(RID_STR_FILTERPROPOSAL)), nPos++, HID_PROP_FILTERPROPOSAL) , + OPropertyInfoImpl(PROPERTY_TAG, PROPERTY_ID_TAG, sal_True, String(ModuleRes(RID_STR_TAG)), nPos++, HID_PROP_TAG ), + OPropertyInfoImpl(PROPERTY_HELPTEXT, PROPERTY_ID_HELPTEXT, sal_False, String(ModuleRes(RID_STR_HELPTEXT)), nPos++, HID_PROP_HELPTEXT), + OPropertyInfoImpl(PROPERTY_HELPURL, PROPERTY_ID_HELPURL, sal_False, String(ModuleRes(RID_STR_HELPURL)), nPos++, HID_PROP_HELPURL) + }; + + s_pPropertyInfos = const_cast<OPropertyInfoImpl*>(aPropertyInfos); + s_nCount = sizeof(aPropertyInfos) / sizeof(OPropertyInfoImpl); + + // sort + qsort((void*) aPropertyInfos, + s_nCount, + sizeof(OPropertyInfoImpl), + &PropertyInfoCompare); + + } + return s_pPropertyInfos; + } + + //------------------------------------------------------------------------ + sal_Int32 OFormPropertyInfoService::getPropertyId(const String& _rName) const + { + const OPropertyInfoImpl* pInfo = getPropertyInfo(_rName); + return pInfo ? pInfo->nId : -1; + } + + //------------------------------------------------------------------------ + String OFormPropertyInfoService::getPropertyTranslation(sal_Int32 _nId) const + { + const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId); + return (pInfo) ? pInfo->sTranslation : String(); + } + + //------------------------------------------------------------------------ + sal_Int32 OFormPropertyInfoService::getPropertyHelpId(sal_Int32 _nId) const + { + const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId); + return (pInfo) ? pInfo->nHelpId : 0; + } + + //------------------------------------------------------------------------ + sal_Int16 OFormPropertyInfoService::getPropertyPos(sal_Int32 _nId) const + { + const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId); + return (pInfo) ? pInfo->nPos : 0xFFFF; + } + + //------------------------------------------------------------------------ + sal_Bool OFormPropertyInfoService::getPropertyMultiFlag(sal_Int32 _nId) const + { + const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId); + return (pInfo) ? pInfo->bMultiSelectable : sal_False; + } + + //------------------------------------------------------------------------ + Sequence< ::rtl::OUString > OFormPropertyInfoService::getPropertyEnumRepresentations(sal_Int32 _nId) const + { + String sSeparatedList; + switch (_nId) + { + case PROPERTY_ID_BORDER: + sSeparatedList = String(ModuleRes(RID_STR_BORDER_TYPE)); + break; + case PROPERTY_ID_COMMANDTYPE: + sSeparatedList = String(ModuleRes(RID_STR_COMMAND_TYPE)); + break; + case PROPERTY_ID_LISTSOURCETYPE: + sSeparatedList = String(ModuleRes(RID_STR_LISTSOURCE_TYPE)); + break; + case PROPERTY_ID_ALIGN: + sSeparatedList = String(ModuleRes(RID_STR_ALIGNMENT)); + break; + case PROPERTY_ID_BUTTONTYPE: + sSeparatedList = String(ModuleRes(RID_STR_ENUM_BUTTONTYPE)); + break; + case PROPERTY_ID_SUBMIT_METHOD: + sSeparatedList = String(ModuleRes(RID_STR_ENUM_SUBMIT_METHOD)); + break; + case PROPERTY_ID_SUBMIT_ENCODING: + sSeparatedList = String(ModuleRes(RID_STR_ENUM_SUBMIT_ENCODING)); + break; + case PROPERTY_ID_DATEFORMAT: + sSeparatedList = String(ModuleRes(RID_STR_DATEFORMAT_LIST)); + break; + case PROPERTY_ID_TIMEFORMAT: + sSeparatedList = String(ModuleRes(RID_STR_TIMEFORMAT_LIST)); + break; + case PROPERTY_ID_DEFAULT_CHECKED: + sSeparatedList = String(ModuleRes(RID_STR_ENUM_CHECKED)); + break; + case PROPERTY_ID_CYCLE: + sSeparatedList = String(ModuleRes(RID_STR_ENUM_CYCLE)); + break; + case PROPERTY_ID_NAVIGATION: + sSeparatedList = String(ModuleRes(RID_STR_ENUM_NAVIGATION)); + break; + } + + sal_Int32 nTokens = sSeparatedList.GetTokenCount(';'); + Sequence< ::rtl::OUString > aReturn(nTokens); + ::rtl::OUString* pReturn = aReturn.getArray(); + for (sal_Int32 i=0; i<nTokens; ++i, ++pReturn) + *pReturn = sSeparatedList.GetToken((sal_uInt16)i); + + return aReturn; + } + + //------------------------------------------------------------------------ + const OPropertyInfoImpl* OFormPropertyInfoService::getPropertyInfo(const String& _rName) + { + // intialisierung + if(!s_pPropertyInfos) + getPropertyInfo(); + OPropertyInfoImpl aSearch(_rName, 0L, sal_False, String(), 0, 0); + + const OPropertyInfoImpl* pPropInfo = (OPropertyInfoImpl*) bsearch(&aSearch, + static_cast<void*>(s_pPropertyInfos), + s_nCount, + sizeof(OPropertyInfoImpl), + &PropertyInfoCompare); + + return pPropInfo; + } + + + //------------------------------------------------------------------------ + const OPropertyInfoImpl* OFormPropertyInfoService::getPropertyInfo(sal_Int32 _nId) + { + // intialisierung + if(!s_pPropertyInfos) + getPropertyInfo(); + + // TODO: a real structure which allows quick access by name as well as by id + for (sal_uInt16 i = 0; i < s_nCount; i++) + if (s_pPropertyInfos[i].nId == _nId) + return &s_pPropertyInfos[i]; + + return NULL; + } + + //======================================================================== + //= event meta data handling + //======================================================================== + //------------------------------------------------------------------------ + // Vergleichen von PropertyInfo + static int + #if defined( WNT ) + __cdecl + #endif + #if defined( ICC ) && defined( OS2 ) + _Optlink + #endif + EventDisplayDescriptionCompareByName(const void* pFirst, const void* pSecond) + { + return + static_cast<const EventDisplayDescription*>(pFirst)->sName.compareTo( + static_cast<const EventDisplayDescription*>(pSecond)->sName); + } + + //------------------------------------------------------------------------ + EventDisplayDescription* GetEvtTranslation(const ::rtl::OUString& rName) + { + static EventDisplayDescription* s_pEventTranslation = NULL; + static sal_Int32 nCount = 0; + if (!s_pEventTranslation) + { + static EventDisplayDescription __READONLY_DATA aEventDisplayDescriptions[] = + { + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveAction"), String(ModuleRes(RID_STR_EVT_APPROVEACTIONPERFORMED)),HID_EVT_APPROVEACTIONPERFORMED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("actionPerformed"), String(ModuleRes(RID_STR_EVT_ACTIONPERFORMED)), HID_EVT_ACTIONPERFORMED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("changed"), String(ModuleRes(RID_STR_EVT_CHANGED)), HID_EVT_CHANGED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("textChanged"), String(ModuleRes(RID_STR_EVT_TEXTCHANGED)), HID_EVT_TEXTCHANGED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("itemStateChanged"), String(ModuleRes(RID_STR_EVT_ITEMSTATECHANGED)), HID_EVT_ITEMSTATECHANGED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("focusGained"), String(ModuleRes(RID_STR_EVT_FOCUSGAINED)), HID_EVT_FOCUSGAINED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("focusLost"), String(ModuleRes(RID_STR_EVT_FOCUSLOST)), HID_EVT_FOCUSLOST), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("keyPressed"), String(ModuleRes(RID_STR_EVT_KEYTYPED)), HID_EVT_KEYTYPED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("keyReleased"), String(ModuleRes(RID_STR_EVT_KEYUP)), HID_EVT_KEYUP), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("mouseEntered"), String(ModuleRes(RID_STR_EVT_MOUSEENTERED)), HID_EVT_MOUSEENTERED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("mouseDragged"), String(ModuleRes(RID_STR_EVT_MOUSEDRAGGED)), HID_EVT_MOUSEDRAGGED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("mouseMoved"), String(ModuleRes(RID_STR_EVT_MOUSEMOVED)), HID_EVT_MOUSEMOVED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("mousePressed"), String(ModuleRes(RID_STR_EVT_MOUSEPRESSED)), HID_EVT_MOUSEPRESSED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("mouseReleased"), String(ModuleRes(RID_STR_EVT_MOUSERELEASED)), HID_EVT_MOUSERELEASED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("mouseExited"), String(ModuleRes(RID_STR_EVT_MOUSEEXITED)), HID_EVT_MOUSEEXITED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveReset"), String(ModuleRes(RID_STR_EVT_APPROVERESETTED)), HID_EVT_APPROVERESETTED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("resetted"), String(ModuleRes(RID_STR_EVT_RESETTED)), HID_EVT_RESETTED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveSubmit"), String(ModuleRes(RID_STR_EVT_SUBMITTED)), HID_EVT_SUBMITTED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveUpdate"), String(ModuleRes(RID_STR_EVT_BEFOREUPDATE)), HID_EVT_BEFOREUPDATE), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("updated"), String(ModuleRes(RID_STR_EVT_AFTERUPDATE)), HID_EVT_AFTERUPDATE), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("loaded"), String(ModuleRes(RID_STR_EVT_LOADED)), HID_EVT_LOADED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("reloading"), String(ModuleRes(RID_STR_EVT_RELOADING)), HID_EVT_RELOADING), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("reloaded"), String(ModuleRes(RID_STR_EVT_RELOADED)), HID_EVT_RELOADED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("unloading"), String(ModuleRes(RID_STR_EVT_UNLOADING)), HID_EVT_UNLOADING), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("unloaded"), String(ModuleRes(RID_STR_EVT_UNLOADED)), HID_EVT_UNLOADED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("confirmDelete"), String(ModuleRes(RID_STR_EVT_CONFIRMDELETE)), HID_EVT_CONFIRMDELETE), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveRowChange"), String(ModuleRes(RID_STR_EVT_APPROVEROWCHANGE)), HID_EVT_APPROVEROWCHANGE), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("rowChanged"), String(ModuleRes(RID_STR_EVT_ROWCHANGE)), HID_EVT_ROWCHANGE), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveCursorMove"), String(ModuleRes(RID_STR_EVT_POSITIONING)), HID_EVT_POSITIONING), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("cursorMoved"), String(ModuleRes(RID_STR_EVT_POSITIONED)), HID_EVT_POSITIONED), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("approveParameter"), String(ModuleRes(RID_STR_EVT_APPROVEPARAMETER)), HID_EVT_APPROVEPARAMETER), + EventDisplayDescription(nCount++,::rtl::OUString::createFromAscii("errorOccured"), String(ModuleRes(RID_STR_EVT_ERROROCCURED)), HID_EVT_ERROROCCURED) + }; + s_pEventTranslation = const_cast<EventDisplayDescription*>(aEventDisplayDescriptions); + nCount = sizeof(aEventDisplayDescriptions) / sizeof(EventDisplayDescription); + + qsort(static_cast<void*>(s_pEventTranslation), + nCount, + sizeof(EventDisplayDescription), + &EventDisplayDescriptionCompareByName); + } + + EventDisplayDescription aSearch(0, rName, String(), 0); + return static_cast<EventDisplayDescription*>(bsearch( + &aSearch, + static_cast<void*>(s_pEventTranslation), + nCount, + sizeof(EventDisplayDescription), + &EventDisplayDescriptionCompareByName + )); + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 15:35:18 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formmetadata.hxx b/extensions/source/propctrlr/formmetadata.hxx new file mode 100644 index 000000000..c7e21d374 --- /dev/null +++ b/extensions/source/propctrlr/formmetadata.hxx @@ -0,0 +1,245 @@ +/************************************************************************* + * + * $RCSfile: formmetadata.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:28:36 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ +#define _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYINFO_HXX_ +#include "propertyinfo.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + struct OPropertyInfoImpl; + + //======================================================================== + //= OFormPropertyInfoService + //======================================================================== + class OFormPropertyInfoService + :public IPropertyInfoService + ,public OModuleResourceClient + { + protected: + static sal_uInt16 s_nCount; + static OPropertyInfoImpl* s_pPropertyInfos; + // TODO: a real structure which allows quick access by name as well as by id + + public: + sal_Int32 getPropertyId(const String& _rName) const; + String getPropertyTranslation(sal_Int32 _nId) const; + sal_Int32 getPropertyHelpId(sal_Int32 _nId) const; + sal_Int16 getPropertyPos(sal_Int32 _nId) const; + sal_Bool getPropertyMultiFlag(sal_Int32 _nId) const; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getPropertyEnumRepresentations(sal_Int32 _nId) const; + + protected: + static const OPropertyInfoImpl* getPropertyInfo(); + + static const OPropertyInfoImpl* getPropertyInfo(const String& _rName); + static const OPropertyInfoImpl* getPropertyInfo(sal_Int32 _nId); + }; + + //======================================================================== + //= event description + //======================================================================== + class EventDisplayDescription + { + public: + ::rtl::OUString sName; + String sDisplayName; + sal_Int32 nHelpId; + sal_Int32 nIndex; + + EventDisplayDescription(sal_Int32 _nId, const ::rtl::OUString& _rName, const UniString& _rDisplayName, sal_Int32 _nHelpId) + :nIndex(_nId) + ,sName(_rName) + ,sDisplayName(_rDisplayName) + ,nHelpId(_nHelpId) + { + } + }; + + //======================================================================== + //= event helpers + //======================================================================== + EventDisplayDescription* GetEvtTranslation(const ::rtl::OUString& _rName); + + //======================================================================== + //= property ids (for all browseable properties) + //======================================================================== + + #define PROPERTY_ID_NAME 1 + #define PROPERTY_ID_LABEL 2 + #define PROPERTY_ID_CONTROLLABEL 3 + #define PROPERTY_ID_MAXTEXTLEN 4 + #define PROPERTY_ID_EDITMASK 5 + #define PROPERTY_ID_LITERALMASK 6 + #define PROPERTY_ID_STRICTFORMAT 7 + #define PROPERTY_ID_ENABLED 8 + #define PROPERTY_ID_READONLY 9 + #define PROPERTY_ID_PRINTABLE 10 + #define PROPERTY_ID_CONTROLSOURCE 11 + #define PROPERTY_ID_TABSTOP 12 + #define PROPERTY_ID_TABINDEX 13 + #define PROPERTY_ID_DATASOURCE 14 + #define PROPERTY_ID_COMMAND 15 + #define PROPERTY_ID_COMMANDTYPE 16 + #define PROPERTY_ID_FILTER_CRITERIA 17 + #define PROPERTY_ID_SORT 18 + #define PROPERTY_ID_INSERTONLY 19 + #define PROPERTY_ID_ALLOWADDITIONS 20 + #define PROPERTY_ID_ALLOWEDITS 21 + #define PROPERTY_ID_ALLOWDELETIONS 22 + #define PROPERTY_ID_NAVIGATION 24 + #define PROPERTY_ID_CYCLE 25 + #define PROPERTY_ID_HIDDEN_VALUE 26 + #define PROPERTY_ID_VALUEMIN 27 + #define PROPERTY_ID_VALUEMAX 28 + #define PROPERTY_ID_VALUESTEP 29 + #define PROPERTY_ID_DEFAULT_VALUE 30 + #define PROPERTY_ID_DECIMAL_ACCURACY 31 + #define PROPERTY_ID_SHOWTHOUSANDSEP 32 + #define PROPERTY_ID_REFVALUE 33 + #define PROPERTY_ID_CURRENCYSYMBOL 34 + #define PROPERTY_ID_CURRSYM_POSITION 35 + #define PROPERTY_ID_DATEMIN 36 + #define PROPERTY_ID_DATEMAX 37 + #define PROPERTY_ID_DATEFORMAT 38 + #define PROPERTY_ID_DATE_SHOW_CENTURY 39 + #define PROPERTY_ID_DEFAULT_DATE 40 + #define PROPERTY_ID_TIMEMIN 41 + #define PROPERTY_ID_TIMEMAX 42 + #define PROPERTY_ID_TIMEFORMAT 43 + #define PROPERTY_ID_DEFAULT_TIME 44 + #define PROPERTY_ID_EFFECTIVE_MIN 45 + #define PROPERTY_ID_EFFECTIVE_MAX 46 + #define PROPERTY_ID_EFFECTIVE_DEFAULT 47 + #define PROPERTY_ID_FORMATKEY 48 + #define PROPERTY_ID_CLASSID 50 + #define PROPERTY_ID_HEIGHT 51 + #define PROPERTY_ID_WIDTH 52 + #define PROPERTY_ID_BOUNDCOLUMN 53 + #define PROPERTY_ID_LISTSOURCETYPE 54 + #define PROPERTY_ID_LISTSOURCE 55 + #define PROPERTY_ID_LISTINDEX 56 + #define PROPERTY_ID_STRINGITEMLIST 57 + #define PROPERTY_ID_DEFAULT_TEXT 58 + #define PROPERTY_ID_FONT_NAME 59 + #define PROPERTY_ID_ALIGN 60 + #define PROPERTY_ID_ROWHEIGHT 61 + #define PROPERTY_ID_BACKGROUNDCOLOR 62 + #define PROPERTY_ID_FILLCOLOR 63 + #define PROPERTY_ID_ESCAPE_PROCESSING 64 + #define PROPERTY_ID_LINECOLOR 65 + #define PROPERTY_ID_BORDER 66 + #define PROPERTY_ID_DROPDOWN 67 + #define PROPERTY_ID_AUTOCOMPLETE 68 + #define PROPERTY_ID_LINECOUNT 69 + #define PROPERTY_ID_MULTI 70 + #define PROPERTY_ID_MULTILINE 71 + #define PROPERTY_ID_MULTISELECTION 72 + #define PROPERTY_ID_HARDLINEBREAKS 73 + #define PROPERTY_ID_HSCROLL 74 + #define PROPERTY_ID_VSCROLL 75 + #define PROPERTY_ID_SPIN 76 + #define PROPERTY_ID_BUTTONTYPE 77 + #define PROPERTY_ID_TARGET_URL 78 + #define PROPERTY_ID_TARGET_FRAME 79 + #define PROPERTY_ID_SUBMIT_ACTION 80 + #define PROPERTY_ID_SUBMIT_TARGET 81 + #define PROPERTY_ID_SUBMIT_METHOD 82 + #define PROPERTY_ID_SUBMIT_ENCODING 83 + #define PROPERTY_ID_DEFAULT_CHECKED 84 + #define PROPERTY_ID_DEFAULT_BUTTON 85 + #define PROPERTY_ID_IMAGE_URL 86 + #define PROPERTY_ID_DEFAULT_SELECT_SEQ 87 + #define PROPERTY_ID_ECHO_CHAR 88 + #define PROPERTY_ID_EMPTY_IS_NULL 89 + #define PROPERTY_ID_TRISTATE 90 + #define PROPERTY_ID_MASTERFIELDS 91 + #define PROPERTY_ID_DETAILFIELDS 92 + #define PROPERTY_ID_HASNAVIGATION 93 + #define PROPERTY_ID_RECORDMARKER 94 + #define PROPERTY_ID_FILTERPROPOSAL 95 + #define PROPERTY_ID_TAG 96 + #define PROPERTY_ID_HELPTEXT 97 + #define PROPERTY_ID_HELPURL 98 + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 12:09:11 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formres.src b/extensions/source/propctrlr/formres.src new file mode 100644 index 000000000..3c61ec852 --- /dev/null +++ b/extensions/source/propctrlr/formres.src @@ -0,0 +1,3829 @@ +/************************************************************************* + * + * $RCSfile: formres.src,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:28:49 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "formresid.hrc" +#endif + +String RID_STR_FORMS +{ + Text = "Formulare" ; + Text [ English ] = "Forms" ; + Text [ portuguese ] = "Formulários" ; + Text [ english_us ] = "Forms" ; + Text [ portuguese_brazilian ] = "Formulare" ; + Text [ swedish ] = "Formulär" ; + Text [ danish ] = "Formularer" ; + Text [ italian ] = "Formulari" ; + Text [ spanish ] = "Formularios" ; + Text [ french ] = "Formulaires" ; + Text [ dutch ] = "Formulieren" ; + Text[ chinese_simplified ] = "±íµ¥"; + Text[ russian ] = "Ôîðìóëÿðû"; + Text[ polish ] = "Formularze"; + Text[ japanese ] = "Ì«°Ñ"; + Text[ chinese_traditional ] = "ªí³æ"; + Text[ greek ] = "Öüñìåò"; + Text[ korean ] = "¾ç½Ä"; + Text[ arabic ] = "ÇÓÊãÇÑÇÊ"; + Text[ turkish ] = "Formlar"; + Text[ language_user1 ] = " "; +}; + +ModalDialog RID_DLG_SELECTLABELCONTROL +{ + OutputSize = TRUE; + Size = MAP_APPFONT( 200, 143 ); + Text = "Auswahl Beschriftungsfeld"; + Text [ ENGLISH ] = "Label field selection"; + Moveable = TRUE; + Closeable = TRUE; + FixedText 1 + { + Pos = MAP_APPFONT( 6, 6 ); + Size = MAP_APPFONT( 188, 20 ); + Text = "Dies sind alle Kontrollfelder, die dem $control_class$ $control_name$ als Beschriftungsfeld zugeordnet werden können."; + Text [ ENGLISH ] = "This are all controls which may be used as label field for the $control_class$ $control_name$."; + WordBreak = TRUE; + Text[ english_us ] = "These are all control fields which may be used as label fields for the $control_class$ $control_name$."; + Text[ portuguese ] = "Estes são todos os campos de controlo que podem ser atribuídos a $control_class$ $control_name$ como campos de rótulos."; + Text[ russian ] = "Ýòî âñå ýëåìåíòû óïðàâëåíèÿ, êîòîðûå ìîãóò áûòü èñïîëüçîâàíû êàê ïîëÿ ïîäïèñåé äëÿ $control_class$ $control_name$."; + Text[ greek ] = "ÁõôÜ åßíáé üëá ôá ðåäßá åëÝã÷ïõ ôá ïðïßá ìðïñïýí íá ÷ñçóéìïðïéçèïýí ùò ðåäßï åðéãñáöÞò ãéá ôï $control_class$ $control_name$."; + Text[ dutch ] = "Dit zijn controlevelden die als titelveld kunnen worden toegewezen aan $control_class$ $control_name$."; + Text[ french ] = "Voici tous les champs de contrôle qui peuvent être assignés comme champ d'étiquette à $control_class$ $control_name$."; + Text[ spanish ] = "Estos son campos de control que pueden asignarse al $control_class$ $control_name$ como campo de etiqueta."; + Text[ italian ] = "Tutti questi campi di controllo possono essere assegnati a $control_class$ $control_name$ come testo fisso."; + Text[ danish ] = "Dette er alle kontrolfelter, som kan tildeles $control_class$ $control_name$ som etiketfelt."; + Text[ swedish ] = "Detta är alla kontrollfält som kan tilldelas $control_class$ $control_name$ som etikettfält."; + Text[ polish ] = "S¹ to wszystkie pola kontrolne, które mog¹ zostaæ przypisane $control_class$ $control_name$ jako pola etykiety."; + Text[ portuguese_brazilian ] = "This are all controls which may be used as label field for the $control_class$ $control_name$."; + Text[ japanese ] = "‚±‚ê‚ç‚Í‚Ý‚È$control_class$ $control_name$‚É×ÍÞŲ̀°ÙÄÞ‚Æ‚µ‚ÄŠ„‚è“–‚Ă邱‚Æ‚Ì‚Å‚«‚éºÝÄÛ°Ų̀°ÙÄÞ‚Å‚·B"; + Text[ korean ] = "ÀÌ°ÍÀº $control_class$ $control_name$¿¡ ¶óº§ Çʵå·Î¼ ¹èÁ¤µÉ ¼ö ÀÖ´Â Àüü ÄÁÆ®·Ñ ÇʵåÀÔ´Ï´Ù."; + Text[ chinese_simplified ] = "ÕâЩÊÇ¿ÉÖ¸¶¨µ±×÷±êÇ©×Ö¶Î$control_class$ $control_name$µÄËùÓпØÖÆ×ֶΡ£"; + Text[ chinese_traditional ] = "³o¨Ç¬O¯à°÷³Q¤ÀÃþ¦¨§@¬°¼ÐÅÒÄæ¦ì $control_class$ $control_name$ ªº©Ò¦³±±¨î¶µ¡C"; + Text[ arabic ] = "ßÇäÊ åÐå åí ßÇÝÉ ÚäÇÕÑ ÇáÊÍßã ÇáÊí íãßä ÇÓÊÎÏÇãåÇ ßÍÞá ÚäæäÉ áÜ $control_class$ $control_name$."; + Text[ turkish ] = "$control_class$ $control_name$ için etiket alaný olarak atanabilecek tüm komut öðeleri bunlar."; + Text[ language_user1 ] = " "; + }; + Control 1 + { + Pos = MAP_APPFONT( 6, 29 ); + Size = MAP_APPFONT( 110, 83 ); + TabStop = TRUE; + Border = TRUE ; + }; + CheckBox 1 + { + Pos = MAP_APPFONT( 122, 29 ); + Size = MAP_APPFONT( 72, 12 ); + Text = "~keine Zuordnung"; + Text [ ENGLISH ] = "~no assignment"; + Text[ english_us ] = "~no assignment"; + Text[ portuguese ] = "~nenhuma atribuição"; + Text[ russian ] = "~áåç íàçíà÷åíèÿ"; + Text[ greek ] = "÷ùñßò áíôéóôïß÷éóç"; + Text[ dutch ] = "~geen toewijzing"; + Text[ french ] = "~aucune assignation"; + Text[ spanish ] = "~sin asignación"; + Text[ italian ] = "~nessuna assegnazione"; + Text[ danish ] = "ingen tildeling"; + Text[ swedish ] = "ingen tilldelning"; + Text[ polish ] = "~bez przyporz¹dkowania"; + Text[ portuguese_brazilian ] = "~no assignment"; + Text[ japanese ] = "Š„‚è“–‚Ä‚È‚µ(~N)"; + Text[ korean ] = "¹èÁ¤¾øÀ½(~N)"; + Text[ chinese_simplified ] = "ÎÞ·¨Ö¸¶¨(~N)"; + Text[ chinese_traditional ] = "µLªk¤ÀÃþ(~N)"; + Text[ arabic ] = "ÈÏæä ÊÚííä"; + Text[ turkish ] = "Atama yok"; + }; + FixedLine 1 + { + Pos = MAP_APPFONT( 3, 118 ); + Size = MAP_APPFONT( 194, 2 ); + }; + OKButton 1 + { + Pos = MAP_APPFONT ( 91 , 123 ) ; + Size = MAP_APPFONT ( 50 , 14 ) ; + TabStop = TRUE ; + DefButton = TRUE ; + }; + CancelButton 1 + { + Pos = MAP_APPFONT ( 144 , 123 ) ; + Size = MAP_APPFONT ( 50 , 14 ) ; + TabStop = TRUE ; + }; + Text[ english_us ] = "Label Field Selection"; + Text[ portuguese ] = "Selecção de campo de rótulo"; + Text[ russian ] = "Âûáîð ïîëÿ ïîäïèñè"; + Text[ greek ] = "ÅðéëïãÞ ðåäßïõ åðéãñáöÞò"; + Text[ dutch ] = "Selectie titelveld"; + Text[ french ] = "Sélection de champ d'étiquette"; + Text[ spanish ] = "Selección campo de etiqueta"; + Text[ italian ] = "Selezione testo fisso"; + Text[ danish ] = "Udvalg etiketfelt"; + Text[ swedish ] = "Urval etikettfält"; + Text[ polish ] = "Wybór pola etykiety"; + Text[ portuguese_brazilian ] = "Label field selection"; + Text[ japanese ] = "×ÍÞŲ̀°ÙÄÞ‚Ì‘I‘ð"; + Text[ korean ] = "¶óº§ ÇÊµå ¼±ÅÃ"; + Text[ chinese_simplified ] = "Ñ¡Ôñ±êÇ©Óò"; + Text[ chinese_traditional ] = "¿ï¾Ü¼ÐÅÒÄæ¦ì"; + Text[ arabic ] = "ÊÍÏíÏ ÍÞá ÇáÚäæäÉ"; + Text[ turkish ] = "Etiket alaný seçimi"; +}; + +ImageList RID_IL_FORMEXPLORER +{ + ImageBitmap = Bitmap { File = "sx_propbrw.bmp" ; }; + MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; }; + IdList = + { + RID_SVXIMG_FIXEDTEXT ; + RID_SVXIMG_GROUPBOX ; + RID_SVXIMG_FORM ; + RID_SVXIMG_FORMS ; + RID_SVXIMG_COLLAPSEDNODE ; + RID_SVXIMG_EXPANDEDNODE ; + }; + IdCount = 6 ; +}; +String RID_STR_PROPTITLE_PUSHBUTTON +{ + Text = "Schaltfläche" ; + Text [ ENGLISH ] = "Button" ; + Text [ portuguese ] = "Botão" ; + Text [ english_us ] = "Button" ; + Text [ portuguese_brazilian ] = "Button" ; + Text [ swedish ] = "Kommandoknapp" ; + Text [ danish ] = "Knap" ; + Text [ italian ] = "Pulsante" ; + Text [ spanish ] = "Botón" ; + Text [ french ] = "Bouton" ; + Text [ dutch ] = "Knop" ; + Text[ chinese_simplified ] = "°´Å¥"; + Text[ russian ] = "Êíîïêà"; + Text[ polish ] = "Przycisk"; + Text[ japanese ] = "ÎÞÀÝ"; + Text[ chinese_traditional ] = "«ö¶s"; + Text[ greek ] = "Ðåäßï åðéëïãÞò"; + Text[ korean ] = "¹öÆ°"; + Text[ arabic ] = "ãÝÊÇÍ"; + Text[ turkish ] = "Düðme"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_RADIOBUTTON +{ + Text = "Optionsfeld" ; + Text [ ENGLISH ] = "OptionButton" ; + Text [ portuguese ] = "Botão de selecção" ; + Text [ english_us ] = "Option Button" ; + Text [ portuguese_brazilian ] = "Radio button" ; + Text [ swedish ] = "Alternativfält" ; + Text [ danish ] = "Alternativfelt" ; + Text [ italian ] = "Pulsante di scelta" ; + Text [ spanish ] = "Botón radio" ; + Text [ french ] = "Bouton radio" ; + Text [ dutch ] = "Optieveld" ; + Text[ chinese_simplified ] = "Ñ¡Ïî°´Å¥"; + Text[ russian ] = "Ïåðåêëþ÷àòåëü"; + Text[ polish ] = "Pole opcji"; + Text[ japanese ] = "×¼ÞµÎÞÀÝ"; + Text[ chinese_traditional ] = "¿ï¶µ«ö¶s"; + Text[ greek ] = "Ðåäßï åðéëïãþí"; + Text[ korean ] = "¿É¼Ç Çʵå"; + Text[ arabic ] = "ÒÑ ÎíÇÑ"; + Text[ turkish ] = "Seçim alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_CHECKBOX +{ + Text = "Markierfeld" ; + Text [ ENGLISH ] = "CheckBox" ; + Text [ portuguese ] = "Caixa de verificação" ; + Text [ english_us ] = "Check Box" ; + Text [ portuguese_brazilian ] = "Checkbox" ; + Text [ swedish ] = "Markeringsfält" ; + Text [ danish ] = "Afkrydsningsfelt" ; + Text [ italian ] = "Casella di controllo" ; + Text [ spanish ] = "Casilla de verificación" ; + Text [ french ] = "Case à cocher" ; + Text [ dutch ] = "Markeerveld" ; + Text[ chinese_simplified ] = "¸´Ñ¡¿ò"; + Text[ russian ] = "Îêíî ôëàæêà"; + Text[ polish ] = "Pole wyboru"; + Text[ japanese ] = "Áª¯¸ÎÞ¯¸½"; + Text[ chinese_traditional ] = "®Ö¨ú¤è¶ô"; + Text[ greek ] = "Ðëáßóéï åëÝã÷ïõ"; + Text[ korean ] = "È®Àζõ"; + Text[ arabic ] = "ÎÇäÉ ÇÎÊíÇÑ"; + Text[ turkish ] = "Seçme kutusu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_FIXEDTEXT +{ + Text = "Beschriftungsfeld" ; + Text [ ENGLISH ] = "Label" ; + Text [ portuguese ] = "Campo de rótulo" ; + Text [ english_us ] = "Label field" ; + Text [ portuguese_brazilian ] = "Fixed text" ; + Text [ swedish ] = "Etikettfält" ; + Text [ danish ] = "Etiketfelt" ; + Text [ italian ] = "Testo fisso" ; + Text [ spanish ] = "Campo de etiqueta" ; + Text [ french ] = "Champ d'étiquette" ; + Text [ dutch ] = "Titelveld" ; + Text[ chinese_simplified ] = "±êÇ©À¸"; + Text[ russian ] = "Ïîëå íàäïèñè"; + Text[ polish ] = "Pole etykiety"; + Text[ japanese ] = "×ÍÞŲ̀°ÙÄÞ"; + Text[ chinese_traditional ] = "¼ÐÅÒÄæ¦ì"; + Text[ greek ] = "Ðåäßï åðéãñáöÞò"; + Text[ korean ] = "¶óº§ Çʵå"; + Text[ arabic ] = "ÍÞá ÚäæäÉ"; + Text[ turkish ] = "Etiket alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_GROUPBOX +{ + Text = "Gruppierungsrahmen" ; + Text [ ENGLISH ] = "FrameControl" ; + Text [ portuguese ] = "Caixa de grupo" ; + Text [ english_us ] = "Group Box" ; + Text [ portuguese_brazilian ] = "Groupbox" ; + Text [ swedish ] = "Grupperingsram" ; + Text [ danish ] = "Gruppeboks" ; + Text [ italian ] = "Casella di gruppo" ; + Text [ spanish ] = "Marco de grupo" ; + Text [ french ] = "Zone de groupe" ; + Text [ dutch ] = "Groepskader" ; + Text[ chinese_simplified ] = "С×é¿ò"; + Text[ russian ] = "Ðàìêà ãðóïïû"; + Text[ polish ] = "Pole grupy"; + Text[ japanese ] = "¸ÞÙ°ÌßÎÞ¯¸½"; + Text[ chinese_traditional ] = "¸s²Õ¤è¶ô"; + Text[ greek ] = "Ðëáßóéï ïìáäïðïßçóçò"; + Text[ korean ] = "±×·ì ¹Ú½º"; + Text[ arabic ] = "ßÇÏÑ ÊÌãíÚ"; + Text[ turkish ] = "Grup çerçevesi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_EDIT +{ + Text = "Textfeld" ; + Text [ ENGLISH ] = "Edit" ; + Text [ portuguese ] = "Campo de texto" ; + Text [ english_us ] = "Text Box" ; + Text [ portuguese_brazilian ] = "Edit" ; + Text [ swedish ] = "Textfält" ; + Text [ danish ] = "Tekstfelt" ; + Text [ italian ] = "Campo di testo" ; + Text [ spanish ] = "Campo de texto" ; + Text [ french ] = "Zone de texte" ; + Text [ dutch ] = "Tekstveld" ; + Text[ chinese_simplified ] = "ÎÄ×Ö¿ò"; + Text[ russian ] = "Òåêñòîâîå ïîëå"; + Text[ polish ] = "Pole tekstowe"; + Text[ japanese ] = "÷½ÄÎÞ¯¸½"; + Text[ chinese_traditional ] = "¤å¦r¤è¶ô"; + Text[ greek ] = "Ðëáßóéï êåéìÝíïõ"; + Text[ korean ] = "ÅؽºÆ® Çʵå"; + Text[ arabic ] = "ÍÞá ÇáäÕ"; + Text[ turkish ] = "Metin alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_FORMATTED +{ + Text = "Formatiertes Feld" ; + Text [ ENGLISH ] = "Formatted Field" ; + Text[ english_us ] = "Formatted Field"; + Text[ portuguese ] = "Campo formatado"; + Text[ russian ] = "Îòôîðìàòèðîâàííîå ïîëå"; + Text[ greek ] = "ÌïñöïðïéçìÝíï ðåäßï"; + Text[ dutch ] = "Opgemaakt veld"; + Text[ french ] = "Champ formaté"; + Text[ spanish ] = "Campo formateado"; + Text[ italian ] = "Campo formattato"; + Text[ danish ] = "Formateret felt"; + Text[ swedish ] = "Formaterat fält"; + Text[ polish ] = "Formatowane pole"; + Text[ portuguese_brazilian ] = "Formatted Field"; + Text[ japanese ] = "‘Ž®Ý’肳‚ꂽ̨°ÙÄÞ"; + Text[ korean ] = "¼½ÄµÈ Çʵå"; + Text[ chinese_simplified ] = "¸ñʽ»¯µÄÇøÓò"; + Text[ chinese_traditional ] = "®æ¦¡¤ÆªºÄæ"; + Text[ arabic ] = "ÍÞá ãõäÓøóÞ"; + Text[ turkish ] = "Formatlý alan"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_LISTBOX +{ + Text = "Listenfeld" ; + Text [ ENGLISH ] = "ListBox" ; + Text [ portuguese ] = "Caixa de listagem" ; + Text [ english_us ] = "List Box" ; + Text [ portuguese_brazilian ] = "Listbox" ; + Text [ swedish ] = "Listruta" ; + Text [ danish ] = "Rulleliste" ; + Text [ italian ] = "Casella di riepilogo" ; + Text [ spanish ] = "Listado" ; + Text [ french ] = "Zone de liste" ; + Text [ dutch ] = "Keuzelijst" ; + Text[ chinese_simplified ] = "Áбí¿ò"; + Text[ russian ] = "Ñïèñîê"; + Text[ polish ] = "Pole listy"; + Text[ japanese ] = "ؽÄÎÞ¯¸½"; + Text[ chinese_traditional ] = "²M³æ¤è¶ô"; + Text[ greek ] = "Ðåäßï ëßóôáò"; + Text[ korean ] = "¸ñ·Ï Çʵå"; + Text[ arabic ] = "ãÑÈÚ ÞÇÆãÉ"; + Text[ turkish ] = "Liste alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_COMBOBOX +{ + Text = "Kombinationsfeld" ; + Text [ ENGLISH ] = "ComboBox" ; + Text [ portuguese ] = "Caixa de combinação" ; + Text [ english_us ] = "Combo Box" ; + Text [ portuguese_brazilian ] = "Combobox" ; + Text [ swedish ] = "Kombinationsfält" ; + Text [ danish ] = "Kombinationsboks" ; + Text [ italian ] = "Casella combinata" ; + Text [ spanish ] = "Campo combinado" ; + Text [ french ] = "Zone combinée" ; + Text [ dutch ] = "Combinatieveld" ; + Text[ chinese_simplified ] = "×éºÏ¿ò"; + Text[ russian ] = "Ïîëå ñî ñïèñêîì"; + Text[ polish ] = "Pole kombi"; + Text[ japanese ] = "ºÝÎÞÎÞ¯¸½"; + Text[ chinese_traditional ] = "²Õ¦X¤è¶ô"; + Text[ greek ] = "Ðåäßï óõíäõáóìïý"; + Text[ korean ] = "ÄÞº¸ ¹Ú½º"; + Text[ arabic ] = "ãÑÈÚ ÊÍÑíÑ æÓÑÏ"; + Text[ turkish ] = "Kombinasyon alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_IMAGEBUTTON +{ + Text = "Grafische Schaltfläche" ; + Text [ ENGLISH ] = "ImageButton" ; + Text [ portuguese ] = "Botão de imagem" ; + Text [ english_us ] = "Image Button" ; + Text [ portuguese_brazilian ] = "Image button" ; + Text [ swedish ] = "Imageknapp" ; + Text [ danish ] = "Grafisk knap" ; + Text [ italian ] = "Pulsante immagine" ; + Text [ spanish ] = "Botón de imagen" ; + Text [ french ] = "Bouton imagé" ; + Text [ dutch ] = "Afbeeldingenknop" ; + Text[ chinese_simplified ] = "ͼʽ°´Å¥"; + Text[ russian ] = "Êíîïêà ãðàôèêè"; + Text[ polish ] = "Przycisk graficzny"; + Text[ japanese ] = "²Ò°¼ÞÎÞÀÝ"; + Text[ chinese_traditional ] = "¹Ï«¬«ö¶s"; + Text[ greek ] = "Ãñáöéêü ðåäßï åðéëïãÞò"; + Text[ korean ] = "À̹ÌÁö ¹öÆ°"; + Text[ arabic ] = "ãÝÊÇÍ ãÕæøÑ"; + Text[ turkish ] = "Grafiksel düðme"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_HIDDENCONTROL +{ + Text = "verstecktes Kontrollfeld" ; + Text [ english ] = "Hidden Control" ; + Text [ english_us ] = "Hidden Control" ; +}; +String RID_STR_PROPTITLE_UNKNOWNCONTROL +{ + Text = "Kontrollfeld (unbekannter Typ)" ; + Text [ english ] = "Control (unknown type)" ; + Text [ english_us ] = "Control (unknown type)" ; +}; +String RID_STR_PROPTITLE_IMAGECONTROL +{ + Text = "Grafisches Kontrollfeld" ; + Text [ ENGLISH ] = "ImageControl" ; + Text [ portuguese ] = "Controlo gráfico" ; + Text [ english_us ] = "Image Control" ; + Text [ portuguese_brazilian ] = "Grafisches Kontrollfeld" ; + Text [ swedish ] = "Grafiskt kontrollfält" ; + Text [ danish ] = "Grafisk kontrolelement" ; + Text [ italian ] = "Campo di controllo immagine" ; + Text [ spanish ] = "Control de imagen" ; + Text [ french ] = "Champ de contrôle graphique" ; + Text [ dutch ] = "Afbeeldingscontrole" ; + Text[ chinese_simplified ] = "ͼʽ¿ØÖÆ×Ö¶Î"; + Text[ russian ] = "Ãðàôè÷åñêèé ýëåìåíò óïðàâëåíèÿ"; + Text[ polish ] = "Graficzne pole kontrolne"; + Text[ japanese ] = "²Ò°¼ÞºÝÄÛ°Ù"; + Text[ chinese_traditional ] = "¹Ï¦¡±±¨î¶µ"; + Text[ greek ] = "Ãñáöéêü ðåäßï åëÝã÷ïõ"; + Text[ korean ] = "À̹ÌÁö ÄÁÆ®·Ñ Çʵå"; + Text[ arabic ] = "ÚäÕÑ ÊÍßã ãÑÓæã"; + Text[ turkish ] = "Grafiksel komut öðesi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_FILECONTROL +{ + Text = "Dateiauswahl" ; + Text [ ENGLISH ] = "FileControl" ; + Text [ portuguese ] = "Selecção de ficheiros" ; + Text [ english_us ] = "File Selection" ; + Text [ portuguese_brazilian ] = "Dateiauswahl" ; + Text [ swedish ] = "Filurval" ; + Text [ danish ] = "Filudvalg" ; + Text [ italian ] = "Scelta file" ; + Text [ spanish ] = "Selección de archivo" ; + Text [ french ] = "Sélection de fichier" ; + Text [ dutch ] = "Bestandselectie" ; + Text[ chinese_simplified ] = "Ñ¡ÔñÎļþ"; + Text[ russian ] = "Âûáîð ôàéëà"; + Text[ polish ] = "Wybór plików"; + Text[ japanese ] = "̧²Ù‚Ì‘I‘ð"; + Text[ chinese_traditional ] = "¿ï¾ÜÀÉ®×"; + Text[ greek ] = "ÅðéëïãÞ áñ÷åßïõ"; + Text[ korean ] = "ÆÄÀÏ ¼±ÅÃ"; + Text[ arabic ] = "ÇÎÊíÇÑ ÇáãáÝ"; + Text[ turkish ] = "Dosya seçimi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_DATEFIELD +{ + Text = "Datumsfeld" ; + Text [ ENGLISH ] = "DateField" ; + Text [ portuguese ] = "Campo para data" ; + Text [ english_us ] = "Date Field" ; + Text [ portuguese_brazilian ] = "Datumsfeld" ; + Text [ swedish ] = "Datumfält" ; + Text [ danish ] = "Datofelt" ; + Text [ italian ] = "Campo data" ; + Text [ spanish ] = "Campo de fecha" ; + Text [ french ] = "Champ de date" ; + Text [ dutch ] = "Datumveld" ; + Text[ chinese_simplified ] = "ÈÕÆÚ×Ö¶Î"; + Text[ russian ] = "Ïîëå äàòû"; + Text[ polish ] = "Pole daty"; + Text[ japanese ] = "“ú•tÎÞ¯¸½"; + Text[ chinese_traditional ] = "¤é´ÁÄæ¦ì"; + Text[ greek ] = "Ðåäßï çìåñïìçíßáò"; + Text[ korean ] = "³¯Â¥ Çʵå"; + Text[ arabic ] = "ÍÞá ÇáÊÇÑíÎ"; + Text[ turkish ] = "Tarih alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_TIMEFIELD +{ + Text = "Zeitfeld" ; + Text [ ENGLISH ] = "TimeField" ; + Text [ portuguese ] = "Campo para hora" ; + Text [ english_us ] = "Time Field" ; + Text [ portuguese_brazilian ] = "Zeitfeld" ; + Text [ swedish ] = "Tidsfält" ; + Text [ danish ] = "Klokkeslætsfelt" ; + Text [ italian ] = "Campo orario" ; + Text [ spanish ] = "Campo horario" ; + Text [ french ] = "Champ horaire" ; + Text [ dutch ] = "Tijdveld" ; + Text[ chinese_simplified ] = "ʱ¼ä×Ö¶Î"; + Text[ russian ] = "Ïîëå âðåìåíè"; + Text[ polish ] = "Pole czasu"; + Text[ japanese ] = "ŽžŠǪ̂°ÙÄÞ"; + Text[ chinese_traditional ] = "®É¶¡Äæ¦ì"; + Text[ greek ] = "Ðåäßï ÷ñüíïõ"; + Text[ korean ] = "½Ã°£ Çʵå"; + Text[ arabic ] = "ÍÞá ÇáæÞÊ"; + Text[ turkish ] = "Zaman alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_NUMERICFIELD +{ + Text = "Numerisches Feld" ; + Text [ ENGLISH ] = "NumericField" ; + Text [ portuguese ] = "Campo numérico" ; + Text [ english_us ] = "Numeric Field" ; + Text [ portuguese_brazilian ] = "Numerisches Feld" ; + Text [ swedish ] = "Numeriskt fält" ; + Text [ danish ] = "Numerisk felt" ; + Text [ italian ] = "Campo numerico" ; + Text [ spanish ] = "Campo numérico" ; + Text [ french ] = "Champ numérique" ; + Text [ dutch ] = "Numeriek veld" ; + Text[ chinese_simplified ] = "Êý×ÖÀ¸"; + Text[ russian ] = "×èñëîâîå ïîëå"; + Text[ polish ] = "Pole numeryczne"; + Text[ japanese ] = "”ŽšÎÞ¯¸½"; + Text[ chinese_traditional ] = "¼Æ¦rÄæ¦ì"; + Text[ greek ] = "Áñéèìçôéêü ðåäßï"; + Text[ korean ] = "¼ýÀÚ Çʵå"; + Text[ arabic ] = "ÍÞá ÑÞãí"; + Text[ turkish ] = "Sayýsal alan"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_CURRENCYFIELD +{ + Text = "Währungsfeld" ; + Text [ ENGLISH ] = "CurrencyField" ; + Text [ portuguese ] = "Campo para moeda" ; + Text [ english_us ] = "Currency Field" ; + Text [ portuguese_brazilian ] = "Währungsfeld" ; + Text [ swedish ] = "Valutafält" ; + Text [ danish ] = "Valutafelt" ; + Text [ italian ] = "Campo di valuta" ; + Text [ spanish ] = "Campo de moneda" ; + Text [ french ] = "Champ monétaire" ; + Text [ dutch ] = "Valutaveld" ; + Text[ chinese_simplified ] = "»õ±Ò×Ö¶Î"; + Text[ russian ] = "Ïîëå âàëþòû"; + Text[ polish ] = "Pole walutowe"; + Text[ japanese ] = "’ʉÝ̨°ÙÄÞ"; + Text[ chinese_traditional ] = "³f¹ôÄæ¦ì"; + Text[ greek ] = "Ðåäßï íïìßóìáôïò"; + Text[ korean ] = "ÅëÈ Çʵå"; + Text[ arabic ] = "ÍÞá ÇáÚãáÉ"; + Text[ turkish ] = "Para birimi alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_PATTERNFIELD +{ + Text = "Maskiertes Feld" ; + Text [ ENGLISH ] = "PatternField" ; + Text [ portuguese ] = "Campo mascarado" ; + Text [ english_us ] = "Pattern Field" ; + Text [ portuguese_brazilian ] = "Maskiertes Feld" ; + Text [ swedish ] = "Maskerat fält" ; + Text [ danish ] = "Maskeret felt" ; + Text [ italian ] = "Campo a maschera" ; + Text [ spanish ] = "Campo enmascarado" ; + Text [ french ] = "Champ masqué" ; + Text [ dutch ] = "Patroonveld" ; + Text[ chinese_simplified ] = "ÑÚÂëÀ¸"; + Text[ russian ] = "Ïîëå îáðàçöà"; + Text[ polish ] = "Pole wzorca"; + Text[ japanese ] = "ÊßÀ°Ý̨°ÙÄÞ"; + Text[ chinese_traditional ] = "±»½XÄæ¦ì"; + Text[ greek ] = "ÊáëõììÝíï ðåäßï"; + Text[ korean ] = "ÆÐÅÏ Çʵå"; + Text[ arabic ] = "ÍÞá ãõÞäøÚ"; + Text[ turkish ] = "Maskelenmiþ alan"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPTITLE_DBGRID +{ + Text = "Tabellen-Kontrollfeld " ; + Text [ ENGLISH ] = "TableControl" ; + Text [ portuguese ] = "Controlo de tabelas " ; + Text [ english_us ] = "Table Control " ; + Text [ portuguese_brazilian ] = "Tabellen Control " ; + Text [ swedish ] = "Tabellkontrollfält " ; + Text [ danish ] = "Tabelkontrolelement " ; + Text [ italian ] = "Campo di controllo tabella " ; + Text [ spanish ] = "Control de tablas " ; + Text [ french ] = "Champ de contrôle de table " ; + Text [ dutch ] = "Tabelcontrole " ; + Text[ chinese_simplified ] = "±í¸ñ¿ØÖÆ×ֶΠ"; + Text[ russian ] = "Ýëåìåíò óïðàâëåíèÿ òàáëèö "; + Text[ polish ] = "Pole kontrolne tabeli "; + Text[ japanese ] = "ðÌÞÙºÝÄÛ°Ù "; + Text[ chinese_traditional ] = "ªí®æ±±¨î¶µ "; + Text[ greek ] = "Ðåäßï åëÝã÷ïõ ðßíáêá "; + Text[ korean ] = "Ç¥ ÄÁÆ®·Ñ- Çʵå "; + Text[ arabic ] = "ÚäÕÑ ÊÍßã ÎÇÕ ÈÇáÌÏÇæá"; + Text[ turkish ] = "Tablo komut öðesi "; + Text[ language_user1 ] = " "; +}; +String RID_STR_EDITMASK +{ + Text = "Eingabemaske" ; + Text [ English ] = "Editmask" ; + Text [ portuguese ] = "Editar máscara" ; + Text [ english_us ] = "Edit mask" ; + Text [ portuguese_brazilian ] = "Eingabemaske" ; + Text [ swedish ] = "Inmatningsmask" ; + Text [ danish ] = "Redigeringsmaske" ; + Text [ italian ] = "Maschera di digitazione" ; + Text [ spanish ] = "Máscara de entrada" ; + Text [ french ] = "Masque de saisie" ; + Text [ dutch ] = "Invoervenster" ; + Text[ chinese_simplified ] = "±à¼ÑÚÂë"; + Text[ russian ] = "Ìàñêà ââîäà"; + Text[ polish ] = "Maska wprowadzania"; + Text[ japanese ] = "“ü—ÍϽ¸"; + Text[ chinese_traditional ] = "½s¿è±»½X"; + Text[ greek ] = "ÌÜóêá åéóáãùãÞò"; + Text[ korean ] = "ÀÔ·Â ¸¶½ºÅ©"; + Text[ arabic ] = "ÞäÇÚ ÇáÅÏÎÇá"; + Text[ turkish ] = "Giriþ ekraný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LITERALMASK +{ + Text = "Zeichenmaske" ; + Text [ English ] = "Literal mask" ; + Text [ portuguese ] = "Máscara de caracteres" ; + Text [ english_us ] = "Literal mask" ; + Text [ portuguese_brazilian ] = "Zeichenmaske" ; + Text [ swedish ] = "Teckenmask" ; + Text [ danish ] = "Tegnmaske" ; + Text [ italian ] = "Maschera caratteri" ; + Text [ spanish ] = "Máscara de caracteres" ; + Text [ french ] = "Masque de caractères" ; + Text [ dutch ] = "Tekenmasker" ; + Text[ chinese_simplified ] = "×Ö·ûÑÚÂë"; + Text[ russian ] = "Ìàñêà çíàêîâ"; + Text[ polish ] = "Maska znaków"; + Text[ japanese ] = "•¶ŽšÏ½¸"; + Text[ chinese_traditional ] = "¦r¤¸±»½X"; + Text[ greek ] = "ÌÜóêá ÷áñáêôÞñùí"; + Text[ korean ] = "±âÈ£ ¸¶½ºÅ©"; + Text[ arabic ] = "ÞäÇÚ ÇáÃÍÑÝ"; + Text[ turkish ] = "Karakter ekraný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_READONLY +{ + Text = "Nur lesen" ; + Text [ ENGLISH ] = "Read only" ; + Text [ portuguese ] = "Só leitura" ; + Text [ english_us ] = "Read-only" ; + Text [ portuguese_brazilian ] = "Nur lesen" ; + Text [ swedish ] = "Endast läsa" ; + Text [ danish ] = "Skrivebeskyttet" ; + Text [ italian ] = "Solo lettura" ; + Text [ spanish ] = "Solo lectura" ; + Text [ french ] = "En lecture seule" ; + Text [ dutch ] = "Alleen lezen" ; + Text[ chinese_simplified ] = "Ö»¶Á"; + Text[ russian ] = "Òîëüêî ÷òåíèå"; + Text[ polish ] = "Tylko do odczytu"; + Text[ japanese ] = "“Ç‚ÝŽæ‚èê—p"; + Text[ chinese_traditional ] = "°ßŪ"; + Text[ greek ] = "Ìüíï áíÜãíùóç"; + Text[ korean ] = "Àб⸸"; + Text[ arabic ] = "ááÞÑÇÁÉ ÝÞØ"; + Text[ turkish ] = "Salt okunur"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENABLED +{ + Text = "Aktiviert" ; + Text [ English ] = "Enabled" ; + Text [ portuguese ] = "Activado" ; + Text [ english_us ] = "Enabled" ; + Text [ portuguese_brazilian ] = "Aktiviert" ; + Text [ swedish ] = "Aktiverad" ; + Text [ danish ] = "Aktiveret" ; + Text [ italian ] = "Abilitato" ; + Text [ spanish ] = "Activado" ; + Text [ french ] = "Activé" ; + Text [ dutch ] = "Geactiveerd" ; + Text[ chinese_simplified ] = "¼¤»îµÄ"; + Text[ russian ] = "Àêòèâèðîâàíî"; + Text[ polish ] = "Uaktywniony"; + Text[ japanese ] = "±¸Ã¨ÌÞ‚É‚·‚é"; + Text[ chinese_traditional ] = "¿E¬¡ªº"; + Text[ greek ] = "ÅíåñãïðïéçìÝíï"; + Text[ korean ] = "È°¼º »óÅÂ"; + Text[ arabic ] = "äÔØ"; + Text[ turkish ] = "Etkinleþtirildi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_AUTOCOMPLETE +{ + Text = "Automatisch füllen" ; + Text [ English ] = "Autocomplete" ; + Text [ portuguese ] = "AutoPreenchimento" ; + Text [ english_us ] = "AutoFill" ; + Text [ portuguese_brazilian ] = "Automatisch füllen" ; + Text [ swedish ] = "Automatisk fyllning" ; + Text [ danish ] = "Fyld automatisk" ; + Text [ italian ] = "Riempi automaticamente" ; + Text [ spanish ] = "Rellenar automáticamente" ; + Text [ french ] = "AutoSaisie" ; + Text [ dutch ] = "Automatisch vullen" ; + Text[ chinese_simplified ] = "×Ô¶¯Íê³É"; + Text[ russian ] = "Àâòîââîä"; + Text[ polish ] = "Autowype³nianie"; + Text[ japanese ] = "Ž©“®“ü—Í"; + Text[ chinese_traditional ] = "¦Û°Ê§¹¦¨"; + Text[ greek ] = "Áõôüìáôï ãÝìéóìá"; + Text[ korean ] = "ÀÚµ¿ ä¿ì±â"; + Text[ arabic ] = "ÊÚÈÆÉ ÊáÞÇÆíÉ"; + Text[ turkish ] = "Otomatik olarak tamamla"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LINECOUNT +{ + Text = "Anzahl der Zeilen" ; + Text [ English ] = "Linecount" ; + Text [ portuguese ] = "Contar linhas" ; + Text [ english_us ] = "Line count" ; + Text [ portuguese_brazilian ] = "Anzahl der Zeilen" ; + Text [ swedish ] = "Antal rader" ; + Text [ danish ] = "Antal rækker" ; + Text [ italian ] = "Numero delle righe" ; + Text [ spanish ] = "Número de líneas" ; + Text [ french ] = "Nombre de lignes" ; + Text [ dutch ] = "Aantal regels" ; + Text[ chinese_simplified ] = "ÐÐÊý"; + Text[ russian ] = "Êîëè÷åñòâî ñòðîê"; + Text[ polish ] = "Liczba linii"; + Text[ japanese ] = "s”"; + Text[ chinese_traditional ] = "¦æ¼Æ"; + Text[ greek ] = "Áñéèìüò ãñáììþí"; + Text[ korean ] = "ÁÙÀÇ ¼ö"; + Text[ arabic ] = "ÚÏÏ ÇáÃÓØÑ"; + Text[ turkish ] = "Satýr sayýsý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_MAXTEXTLEN +{ + Text = "Max. Textlänge" ; + Text [ English ] = "Max. textlength" ; + Text [ portuguese ] = "Comprimento máx. do texto" ; + Text [ english_us ] = "Max. text length" ; + Text [ portuguese_brazilian ] = "Max. Textlänge" ; + Text [ swedish ] = "Max. textlängd" ; + Text [ danish ] = "Maks. tekstlængde" ; + Text [ italian ] = "Lunghezza testo max." ; + Text [ spanish ] = "Longitud máx. del texto" ; + Text [ french ] = "Longueur de texte max." ; + Text [ dutch ] = "Max. tekstlengte" ; + Text[ chinese_simplified ] = "×µÄÎÄ×Ö"; + Text[ russian ] = "Ìàêñ. äëèíà òåêñòà"; + Text[ polish ] = "Maks. d³ugoœæ tekstu"; + Text[ japanese ] = "Å‚‚Ì÷½Ä‚Ì’·‚³"; + Text[ chinese_traditional ] = "³Ìªøªº¤å¦r"; + Text[ greek ] = "ÌÝãéóôï ìÞêïò êåéìÝíïõ"; + Text[ korean ] = "ÃÖ´ë ÅؽºÆ® ±æÀÌ"; + Text[ arabic ] = "ÇáØæá ÇáÃÞÕì ááäÕ"; + Text[ turkish ] = "Azami metin uzunluðu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SPIN +{ + Text = "Drehfeld" ; + Text [ English ] = "Spinbutton" ; + Text [ portuguese ] = "Botão de rotação" ; + Text [ english_us ] = "Spin Button" ; + Text [ portuguese_brazilian ] = "Drehfeld" ; + Text [ swedish ] = "Rotationsknapp" ; + Text [ danish ] = "Rulleknap" ; + Text [ italian ] = "Pulsante di selezione" ; + Text [ spanish ] = "Campo giratorio" ; + Text [ french ] = "Compteur" ; + Text [ dutch ] = "Draaiveld" ; + Text[ chinese_simplified ] = "Ñ¡Öµ¿ò"; + Text[ language_user1 ] = " "; + Text[ russian ] = "Ñ÷åò÷èê"; + Text[ polish ] = "Pole obrotu"; + Text[ japanese ] = "½ËßÝÎÞÀÝ"; + Text[ chinese_traditional ] = "½Õ¸`¤è¶ô"; + Text[ greek ] = "Ðåäßï ðåñéóôñïöÞò"; + Text[ korean ] = "ȸÀü Çʵå"; + Text[ arabic ] = "ÒÑ ÒíÇÏÉ æäÞÕÇä"; + Text[ turkish ] = "Deðer kutusu"; +}; +String RID_STR_STRICTFORMAT +{ + Text = "Formatüberprüfung" ; + Text [ English ] = "Strict format" ; + Text [ portuguese ] = "Controlar formato" ; + Text [ english_us ] = "Strict format" ; + Text [ portuguese_brazilian ] = "Formatüberprüfung" ; + Text [ swedish ] = "Formatkontroll" ; + Text [ danish ] = "Formatkontrol" ; + Text [ italian ] = "Controllo formato" ; + Text [ spanish ] = "Control de formato" ; + Text [ french ] = "Vérification de format" ; + Text [ dutch ] = "Formaatcontrole" ; + Text[ chinese_simplified ] = "¼ì²é¸ñʽ"; + Text[ russian ] = "Ïðîâåðêà ôîðìàòà"; + Text[ polish ] = "Sprawdzenie formatu"; + Text[ japanese ] = "‘Ž®‚ÌÁª¯¸"; + Text[ chinese_traditional ] = "Àˬd®æ¦¡"; + Text[ greek ] = "¸ëåã÷ïò ìïñöÞò"; + Text[ korean ] = "¼½Ä °Ë»ç"; + Text[ arabic ] = "ÝÍÕ ÇáÊäÓíÞ"; + Text[ turkish ] = "Format denetimi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SHOWTHOUSANDSEP +{ + Text = "Tausender-Trennz." ; + Text [ English ] = "Show thousandsep." ; + Text [ portuguese ] = "Separador de milhares" ; + Text [ english_us ] = "Thousands Separator" ; + Text [ portuguese_brazilian ] = "Tausender-Trennz." ; + Text [ swedish ] = "Tusentalsavgränsare" ; + Text [ danish ] = "Tusindtalsseparator" ; + Text [ italian ] = "Car. di separz. migliaia" ; + Text [ spanish ] = "Delimitador decimal" ; + Text [ french ] = "Séparateur de milliers" ; + Text [ dutch ] = "Scheidingsteken voor duizendtallen" ; + Text[ chinese_simplified ] = "ǧλ·Ö¸ô·û"; + Text[ russian ] = "Ðàçäåëèòåëü ãðóïï ðàçðÿäîâ"; + Text[ polish ] = "Separator tysiêczny"; + Text[ japanese ] = "ç’PˆÊ¾ÊßÚ°À"; + Text[ chinese_traditional ] = "¤d¦ì¤À¹j²Å"; + Text[ greek ] = "Äéá÷ùñéóôéêü ÷éëßùí"; + Text[ korean ] = "õ´ÜÀ§ ±¸ºÐ±âÈ£"; + Text[ arabic ] = "ÚáÇãÉ ÝÕá ÇáÃáæÝ"; + Text[ turkish ] = "Binlik ayýrma iþareti"; + Text[ language_user1 ] = " "; +}; +String RID_STR_HARDLINEBREAKS +{ + Text = "Harter Zeilenumbruch" ; + Text [ English ] = "Hard line breaks" ; + Text [ portuguese ] = "Quebra de linha dura" ; + Text [ english_us ] = "Direct line break" ; + Text [ portuguese_brazilian ] = "Harter Zeilenumbruch" ; + Text [ swedish ] = "Hård radbrytning" ; + Text [ danish ] = "Hårdt linjeskift" ; + Text [ italian ] = "Interruzione di riga fissa" ; + Text [ spanish ] = "Salto de línea rígido" ; + Text [ french ] = "Renvoi à la ligne forcé" ; + Text [ dutch ] = "Vast regeleinde" ; + Text[ chinese_simplified ] = "ÊÖ¹¤·ÖÐзû"; + Text[ russian ] = "Æåñòêèé ðàçðûâ ñòðîêè"; + Text[ polish ] = "Twardy podzia³ wiersza"; + Text[ japanese ] = "‰üs"; + Text[ chinese_traditional ] = "¤â¤u¤À¦æ²Å"; + Text[ greek ] = "¸íôïíç áëëáãÞ ãñáììÞò"; + Text[ korean ] = "°³Çà (°íÁ¤)"; + Text[ arabic ] = "ÝÇÕá ÃÓØÑ íÏæí"; + Text[ turkish ] = "Kullanýcý tanýmlý satýr sonu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PRINTABLE +{ + Text = "Drucken" ; + Text [ English ] = "Printable" ; + Text [ portuguese ] = "Imprimir" ; + Text [ english_us ] = "Print" ; + Text [ portuguese_brazilian ] = "Drucken" ; + Text [ swedish ] = "Skriv ut" ; + Text [ danish ] = "Udskriv" ; + Text [ italian ] = "Stampa" ; + Text [ spanish ] = "Imprimir" ; + Text [ french ] = "Imprimer" ; + Text [ dutch ] = "Afdrukken" ; + Text[ chinese_simplified ] = "´òÓ¡"; + Text[ russian ] = "Ïå÷àòü"; + Text[ polish ] = "Drukuj"; + Text[ japanese ] = "ˆóü"; + Text[ chinese_traditional ] = "¦C¦L"; + Text[ greek ] = "Åêôýðùóç"; + Text[ korean ] = "Àμâ"; + Text[ arabic ] = "ØÈÇÚÉ"; + Text[ turkish ] = "Yazdýr"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TARGET_URL +{ + Text = "URL" ; + Text [ English ] = "URL" ; + Text [ portuguese ] = "URL" ; + Text [ english_us ] = "URL" ; + Text [ portuguese_brazilian ] = "URL" ; + Text [ swedish ] = "URL" ; + Text [ danish ] = "URL" ; + Text [ italian ] = "URL" ; + Text [ spanish ] = "URL" ; + Text [ french ] = "URL" ; + Text [ dutch ] = "URL" ; + Text[ chinese_simplified ] = "URL"; + Text[ russian ] = "URL"; + Text[ polish ] = "URL"; + Text[ japanese ] = "URL"; + Text[ chinese_traditional ] = "URL"; + Text[ greek ] = "URL"; + Text[ korean ] = "URL"; + Text[ arabic ] = "URL"; + Text[ turkish ] = "URL"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TARGET_FRAME +{ + Text = "Frame" ; + Text [ English ] = "TargetFrame" ; + Text [ portuguese ] = "Moldura" ; + Text [ english_us ] = "Target Frame" ; + Text [ portuguese_brazilian ] = "Frame" ; + Text [ swedish ] = "Ram" ; + Text [ danish ] = "Frame" ; + Text [ italian ] = "Frame" ; + Text [ spanish ] = "Frame" ; + Text [ french ] = "Frame" ; + Text [ dutch ] = "Frame" ; + Text[ chinese_simplified ] = "¿ò¶ÔÏó"; + Text[ russian ] = "Êàäð"; + Text[ polish ] = "Frame"; + Text[ japanese ] = "ÌÚ°Ñ"; + Text[ chinese_traditional ] = "°T®Ø"; + Text[ greek ] = "Ðëáßóéï"; + Text[ korean ] = "ÇÁ·¹ÀÓ"; + Text[ arabic ] = "ÅØÇÑ"; + Text[ turkish ] = "Frame"; + Text[ language_user1 ] = " "; +}; +String RID_STR_HELPTEXT +{ + Text = "Hilfetext" ; + Text [ ENGLISH ] = "Helptext" ; + Text [ english_us ] = "Help text" ; + Text[ portuguese ] = "Texto de ajuda"; + Text[ russian ] = "Òåêñò ñïðàâêè"; + Text[ dutch ] = "Hulptekst"; + Text[ french ] = "Texte d'aide"; + Text[ spanish ] = "Texto de ayuda"; + Text[ italian ] = "Testo della Guida"; + Text[ danish ] = "Hjælp-tekst"; + Text[ swedish ] = "Hjälptext"; + Text[ polish ] = "Tekst pomocy"; + Text[ portuguese_brazilian ] = "Helptext"; + Text[ japanese ] = "ÍÙÌß÷½Ä"; + Text[ chinese_simplified ] = "°ïÖúÎÄ"; + Text[ chinese_traditional ] = "»¡©ú¤å"; + Text[ greek ] = "Êåßìåíï âïÞèåéáò"; + Text[ korean ] = "µµ¿ò¸» ÅؽºÆ®"; + Text[ arabic ] = "äÕ ÇáãÓÇÚÏÉ"; + Text[ turkish ] = "Yardým metni"; + Text[ language_user1 ] = " "; +}; +String RID_STR_HELPURL +{ + Text = "Hilfe URL" ; + Text [ ENGLISH ] = "Help URL" ; + Text[ english_us ] = "Help URL"; + Text[ portuguese ] = "URL da Ajuda"; + Text[ russian ] = "URL ïîìîùè"; + Text[ dutch ] = "Help URL"; + Text[ french ] = "URL de l'aide"; + Text[ spanish ] = "Ayuda URL"; + Text[ italian ] = "URL della Guida"; + Text[ danish ] = "Hjælp-URL"; + Text[ swedish ] = "Hjälp URL"; + Text[ polish ] = "Pomoc URL"; + Text[ portuguese_brazilian ] = "Help URL"; + Text[ japanese ] = "URLÍÙÌß"; + Text[ chinese_simplified ] = "°ïÖú URL"; + Text[ chinese_traditional ] = "»¡©ú URL"; + Text[ greek ] = "URL âïÞèåéáò"; + Text[ korean ] = "URL µµ¿ò¸»"; + Text[ arabic ] = "URL ÇáãÓÇÚÏÉ"; + Text[ turkish ] = "URL yardýmý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TAG +{ + Text = "Zusatzinformation" ; + Text [ English ] = "Tag" ; + Text [ portuguese ] = "Informação adicional" ; + Text [ english_us ] = "Additonal Information" ; + Text [ portuguese_brazilian ] = "Zusatzinformation" ; + Text [ swedish ] = "Ytterligare information" ; + Text [ danish ] = "Yderligere information" ; + Text [ italian ] = "Informazione aggiuntiva" ; + Text [ spanish ] = "Información adicional" ; + Text [ french ] = "Complément d'information" ; + Text [ dutch ] = "Verdere informatie" ; + Text[ chinese_simplified ] = "¸½¼ÓÐÅÏ¢"; + Text[ russian ] = "Äîïîëíèòåëüíàÿ èíôîðìàöèÿ"; + Text[ polish ] = "Dodatkowa informacja"; + Text[ japanese ] = "’ljÁî•ñ"; + Text[ chinese_traditional ] = "ªþ¥[¸ê°T"; + Text[ greek ] = "Ðñüóèåôåò ðëçñïöïñßåò"; + Text[ korean ] = "Ãß°¡ Á¤º¸"; + Text[ arabic ] = "ãÚáæãÇÊ ÅÖÇÝíÉ"; + Text[ turkish ] = "Ek bilgi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ECHO_CHAR +{ + Text = "Zeichen für Passwörter" ; + Text [ English ] = "Password char" ; + Text [ portuguese ] = "Caracteres para senhas" ; + Text [ english_us ] = "Password characters" ; + Text [ portuguese_brazilian ] = "Zeichen für Passwörter" ; + Text [ swedish ] = "Tecken för lösenord" ; + Text [ danish ] = "Tegn til adgangskoder" ; + Text [ italian ] = "Caratteri per le password" ; + Text [ spanish ] = "Caracteres para contraseñas" ; + Text [ french ] = "Caractères de mots de passe" ; + Text [ dutch ] = "Teken voor wachtwoorden" ; + Text[ chinese_simplified ] = "ÃÜÂë×Ö·û"; + Text[ russian ] = "Çíàêè äëÿ ïàðîëÿ"; + Text[ polish ] = "Znaki dla hase³"; + Text[ japanese ] = "Ê߽ܰÄÞ—p‚Ì•¶Žš"; + Text[ chinese_traditional ] = "±K½X¦r¤¸"; + Text[ greek ] = "×áñáêôÞñåò ãéá êùäéêïýò ðñüóâáóçò"; + Text[ korean ] = "Æнº¿öµå¿ë ¹®ÀÚ"; + Text[ arabic ] = "ÃÍÑÝ ßáãÇÊ ÇáÓÑ"; + Text[ turkish ] = "Þifre karakterleri"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TRISTATE +{ + Text = "Dreifacher Status" ; + Text [ ENGLISH ] = "Tristate" ; + Text [ portuguese ] = "Estado triplo" ; + Text [ english_us ] = "Tristate" ; + Text [ portuguese_brazilian ] = "Dreifacher Status" ; + Text [ swedish ] = "Trefaldig status" ; + Text [ danish ] = "Tredobbelt status" ; + Text [ italian ] = "Stato triplo" ; + Text [ spanish ] = "Estado triple" ; + Text [ french ] = "Statut triple" ; + Text [ dutch ] = "Drievoudige status" ; + Text[ chinese_simplified ] = "ÈýÖØ״̬"; + Text[ russian ] = "Òðîéíîå ñîñòîÿíèå"; + Text[ polish ] = "Potrójny stan"; + Text[ japanese ] = "3”{‚̽ðÀ½"; + Text[ chinese_traditional ] = "¤T«ª¬ºA"; + Text[ greek ] = "ÔñéðëÞ êáôÜóôáóç"; + Text[ korean ] = "»ïÁß »óÅÂ"; + Text[ arabic ] = "ÍÇáÉ ËáÇËíÉ"; + Text[ turkish ] = "Üçlü durum"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EMPTY_IS_NULL +{ + Text = "Leere Zeichenfolge ist NULL" ; + Text [ English ] = "Empty string is NULL" ; + Text [ portuguese ] = "Espaço vazio é ZERO" ; + Text [ english_us ] = "Empty string is NULL" ; + Text [ swedish ] = "Tom teckensträng är NOLL" ; + Text [ italian ] = "Lo string vuoto è ZERO" ; + Text [ spanish ] = "Serie de caracteres vacía es NULL" ; + Text [ french ] = "Espace vide égale NULL" ; + Text [ dutch ] = "Opvullen met NUL" ; + Text[ portuguese_brazilian ] = "Leerzeichen ist NULL"; + Text[ danish ] = "Tom streng er NULL"; + Text[ chinese_simplified ] = "¿Õ°××Ö·ûÊÇ NULL"; + Text[ russian ] = "Ïóñòàÿ ñòðîêà - ÍÓËÜ"; + Text[ polish ] = "Pusty ci¹g znaków jest ZEREM"; + Text[ japanese ] = "‹ó”’‚Ì•¶Žš—ñ‚;ÞÛ"; + Text[ chinese_traditional ] = "ªÅ¥Õ¦r¤¸¬O NULL"; + Text[ greek ] = "ÊåíÞ áêïëïõèßá ÷áñáêôÞñùí åßíáé NULL (ÌÇÄÅÍ)"; + Text[ korean ] = "ºñ¾î ÀÖ´Â ¹®ÀÚ¿Àº NULLÀÓ"; + Text[ arabic ] = "ÓáÓáÉ ÇáÃÍÑÝ ÇáÝÇÑÛÉ ÊÚÊÈÑ NULL"; + Text[ turkish ] = "Boþ karakter dizilimi SIFIR"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DECIMAL_ACCURACY +{ + Text = "Nachkommastellen" ; + Text [ English ] = "Decimal accuracy" ; + Text [ portuguese ] = "Casas decimais" ; + Text [ english_us ] = "Decimal accuracy" ; + Text [ portuguese_brazilian ] = "Nachkommastellen" ; + Text [ swedish ] = "Decimalpositioner" ; + Text [ danish ] = "Antal decimaler" ; + Text [ italian ] = "Posizioni decimali" ; + Text [ spanish ] = "Decimales" ; + Text [ french ] = "Décimales" ; + Text [ dutch ] = "Plaatsen achter de komma" ; + Text[ chinese_simplified ] = "СÊýµã"; + Text[ russian ] = "Äðîáíàÿ ÷àñòü"; + Text[ polish ] = "Miejsca po przecinku"; + Text[ japanese ] = "¬”“_ˆÈ‰º‚ÌŒ…"; + Text[ chinese_traditional ] = "¤p¼ÆÂI"; + Text[ greek ] = "ÄåêáäéêÜ øçößá"; + Text[ korean ] = "¼Ò¼öÁ¡ ÀÌÇÏ ÀÚ¸®"; + Text[ arabic ] = "ÇáãäÇÒá ÇáÚÔÑíÉ"; + Text[ turkish ] = "Virgül sonrasý haneler"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATE_SHOW_CENTURY +{ + Text = "Jahrhundert zeigen" ; + Text [ English ] = "Show Century" ; + Text [ portuguese ] = "Mostrar século" ; + Text [ english_us ] = "Show Century" ; + Text [ portuguese_brazilian ] = "Jahrhundert zeigen" ; + Text [ swedish ] = "Visa århundrade" ; + Text [ danish ] = "Vis århundrede" ; + Text [ italian ] = "Mostra secolo" ; + Text [ spanish ] = "Mostrar siglo" ; + Text [ french ] = "Afficher le siècle" ; + Text [ dutch ] = "Eeuw weergeven" ; + Text[ chinese_simplified ] = "4 λÄê·Ý"; + Text[ russian ] = "Ïîêàçàòü âåê"; + Text[ polish ] = "Poka¿ stulecie"; + Text[ japanese ] = "•S”N‚ð•\\Ž¦"; + Text[ chinese_traditional ] = "4 ¦ì¦~¥÷"; + Text[ greek ] = "ÅìöÜíéóç áéþíá"; + Text[ korean ] = "¼¼±â Ç¥½Ã"; + Text[ arabic ] = "ÅÙåÇÑ ÇáÞÑä"; + Text[ turkish ] = "Yüzyýlý görüntüle"; + Text[ language_user1 ] = " "; +}; +String RID_STR_IMAGE_URL +{ + Text = "Grafik" ; + Text [ English ] = "Graphic" ; + Text [ portuguese ] = "Imagem" ; + Text [ english_us ] = "Graphic" ; + Text [ portuguese_brazilian ] = "Grafik" ; + Text [ swedish ] = "Grafik" ; + Text [ danish ] = "Grafik" ; + Text [ italian ] = "Immagine" ; + Text [ spanish ] = "Imagen" ; + Text [ french ] = "Image" ; + Text [ dutch ] = "Afbeelding" ; + Text[ chinese_simplified ] = "ͼÐÎ"; + Text[ russian ] = "Ðèñóíîê"; + Text[ polish ] = "Grafika"; + Text[ japanese ] = "¸Þ×̨¯¸"; + Text[ chinese_traditional ] = "¹Ï¤ù"; + Text[ greek ] = "Ãñáöéêü"; + Text[ korean ] = "±×·¡ÇÈ"; + Text[ arabic ] = "ÕæÑÉ"; + Text[ turkish ] = "Grafik"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DEFAULT_SELECT_SEQ +{ + Text = "Standardselektion" ; + Text [ English ] = "Default selection" ; + Text [ portuguese ] = "Selecção padrão" ; + Text [ english_us ] = "Default selection" ; + Text [ portuguese_brazilian ] = "Default Selektion" ; + Text [ swedish ] = "Standardmarkering" ; + Text [ danish ] = "Standardmarkering" ; + Text [ italian ] = "Selezione standard" ; + Text [ spanish ] = "Selección predeterminada" ; + Text [ french ] = "Sélection par défaut" ; + Text [ dutch ] = "Standaardselectie" ; + Text[ chinese_simplified ] = "±ê׼ѡÔñ"; + Text[ russian ] = "Âûáîð ïî óìîë÷àíèþ"; + Text[ polish ] = "Selekcja domyœlna"; + Text[ japanese ] = "•W€‘I‘ð”͈Í"; + Text[ chinese_traditional ] = "¼Ð·Ç¿ï¾Ü"; + Text[ greek ] = "ÐñïåðéëåãìÝíç åðéëïãÞ"; + Text[ korean ] = "±âº» ¼±ÅÃ"; + Text[ arabic ] = "ÊÍÏíÏ ÇÝÊÑÇÖí"; + Text[ turkish ] = "Standart seçim"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DEFAULT_BUTTON +{ + Text = "Standardschaltfläche" ; + Text [ English ] = "Default button" ; + Text [ portuguese ] = "Botão padrão" ; + Text [ english_us ] = "Default button" ; + Text [ portuguese_brazilian ] = "Standard-Schaltfläche" ; + Text [ swedish ] = "Standardknapp" ; + Text [ danish ] = "Standardknap" ; + Text [ italian ] = "Pulsante standard" ; + Text [ spanish ] = "Botón predeterminado" ; + Text [ french ] = "Bouton par défaut" ; + Text [ dutch ] = "Standaardknop" ; + Text[ chinese_simplified ] = "±ê×¼°´Å¥"; + Text[ russian ] = "Ñòàíäàðòíàÿ êíîïêà"; + Text[ polish ] = "Przycisk domyœlny"; + Text[ japanese ] = "•W€ÎÞÀÝ"; + Text[ chinese_traditional ] = "¼Ð·Ç«ö¶s"; + Text[ greek ] = "Ðåäßï åðéëïãÞò (ÐñïåðéëïãÞ)"; + Text[ korean ] = "±âº» ¹öÆ°"; + Text[ arabic ] = "ãÝÊÇÍ ÇÝÊÑÇÖí"; + Text[ turkish ] = "Standart düðme"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LABELCONTROL +{ + Text = "Beschriftungsfeld"; + Text [ ENGLISH ] = "Label field"; + Text[ english_us ] = "Label field"; + Text[ portuguese ] = "Campo de rótulo"; + Text[ russian ] = "Ïîëå ïîäïèñè"; + Text[ greek ] = "Ðåäßï åðéãñáöÞò"; + Text[ dutch ] = "Titelveld"; + Text[ french ] = "Champ d'étiquette"; + Text[ spanish ] = "Campo de etiqueta"; + Text[ italian ] = "Testo fisso"; + Text[ danish ] = "Etiketfelt"; + Text[ swedish ] = "Etikettfält"; + Text[ polish ] = "Pole etykiety"; + Text[ portuguese_brazilian ] = "Label field"; + Text[ japanese ] = "×ÍÞŲ̀°ÙÄÞ"; + Text[ korean ] = "¶óº§ Çʵå"; + Text[ chinese_simplified ] = "±êÇ©À¸"; + Text[ chinese_traditional ] = "¼ÐÅÒÄæ¦ì"; + Text[ arabic ] = "ÍÞá ÚäæäÉ"; + Text[ turkish ] = "Etiket alaný"; +}; +String RID_STR_LABEL +{ + Text = "Titel" ; + Text [ English ] = "Label" ; + Text [ portuguese ] = "Título" ; + Text [ english_us ] = "Label" ; + Text [ portuguese_brazilian ] = "Titel" ; + Text [ swedish ] = "Rubrik" ; + Text [ danish ] = "Titel" ; + Text [ italian ] = "Titolo" ; + Text [ spanish ] = "Título" ; + Text [ french ] = "Titre" ; + Text [ dutch ] = "Titel" ; + Text[ chinese_simplified ] = "±êÌâ"; + Text[ russian ] = "Çàãîëîâîê"; + Text[ polish ] = "Etykieta"; + Text[ japanese ] = "À²ÄÙ"; + Text[ chinese_traditional ] = "¼ÐÃD"; + Text[ greek ] = "Ôßôëïò"; + Text[ korean ] = "Á¦¸ñ"; + Text[ arabic ] = "ÇáÚäæÇä"; + Text[ turkish ] = "Baþlýk"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ALIGN +{ + Text = "Ausrichtung" ; + Text [ English ] = "Alignment" ; + Text [ portuguese ] = "Alinhamento" ; + Text [ english_us ] = "Alignment" ; + Text [ portuguese_brazilian ] = "Ausrichtung" ; + Text [ swedish ] = "Justering" ; + Text [ danish ] = "Justering" ; + Text [ italian ] = "Allineamento" ; + Text [ spanish ] = "Alineación" ; + Text [ french ] = "Alignement" ; + Text [ dutch ] = "Uitlijning" ; + Text[ chinese_simplified ] = "¶ÔÆë"; + Text[ russian ] = "Âûðàâíèâàíèå"; + Text[ polish ] = "Wyrównanie"; + Text[ japanese ] = "”z’u"; + Text[ chinese_traditional ] = "¹ï»ô"; + Text[ greek ] = "Óôïß÷éóç"; + Text[ korean ] = "¸ÂÃã"; + Text[ arabic ] = "ÇáãÍÇÐÇÉ"; + Text[ turkish ] = "Hizalama"; + Text[ language_user1 ] = " "; +}; +String RID_STR_FONT +{ + Text = "Zeichensatz" ; + Text [ English ] = "Font" ; + Text [ portuguese ] = "Conjunto de caracteres" ; + Text [ english_us ] = "Character set" ; + Text [ portuguese_brazilian ] = "Zeichensatz" ; + Text [ swedish ] = "Teckenuppsättning" ; + Text [ danish ] = "Tegnsæt" ; + Text [ italian ] = "Tipo di carattere" ; + Text [ spanish ] = "Juego de caracteres" ; + Text [ french ] = "Jeu de caractères" ; + Text [ dutch ] = "Tekenset" ; + Text[ chinese_simplified ] = "×ÖÌå"; + Text[ russian ] = "Íàáîð çíàêîâ"; + Text[ polish ] = "Zbiór znaków"; + Text[ japanese ] = "•¶Žš—ñ"; + Text[ chinese_traditional ] = "¦r¤¸"; + Text[ greek ] = "Óåô ÷áñáêôÞñùí"; + Text[ korean ] = "¹®ÀÚÁýÇÕ"; + Text[ arabic ] = "ãÌãæÚÉ ÃÍÑÝ"; + Text[ turkish ] = "Karakter kümesi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_BACKGROUNDCOLOR +{ + Text = "Hintergrundfarbe" ; + Text [ English ] = "Background color" ; + Text [ portuguese ] = "Cor de fundo" ; + Text [ english_us ] = "Background color" ; + Text [ portuguese_brazilian ] = "Hintergrundfarbe" ; + Text [ swedish ] = "Bakgrundsfärg" ; + Text [ danish ] = "Baggrundsfarve" ; + Text [ italian ] = "Colore di sfondo" ; + Text [ spanish ] = "Color de fondo" ; + Text [ french ] = "Couleur d'arrière-plan" ; + Text [ dutch ] = "Achtergrondkleur" ; + Text[ chinese_simplified ] = "±³¾°ÑÕÉ«"; + Text[ russian ] = "Öâåò ôîíà"; + Text[ polish ] = "Kolor t³a"; + Text[ japanese ] = "”wŒiF"; + Text[ chinese_traditional ] = "I´ºÃC¦â"; + Text[ greek ] = "×ñþìá öüíôïõ"; + Text[ korean ] = "¹è°æ»ö"; + Text[ arabic ] = "áæä ÇáÎáÝíÉ"; + Text[ turkish ] = "Artalan rengi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_BORDER +{ + Text = "Rahmen" ; + Text [ English ] = "Border" ; + Text [ portuguese ] = "Moldura" ; + Text [ english_us ] = "Border" ; + Text [ portuguese_brazilian ] = "Rahmen" ; + Text [ swedish ] = "Ram" ; + Text [ danish ] = "Ramme" ; + Text [ italian ] = "Cornice" ; + Text [ spanish ] = "Marco" ; + Text [ french ] = "Cadre" ; + Text [ dutch ] = "Kader" ; + Text[ chinese_simplified ] = "¿ò"; + Text[ russian ] = "Ðàìêà"; + Text[ polish ] = "Ramka"; + Text[ japanese ] = "˜g"; + Text[ chinese_traditional ] = "®Ø"; + Text[ greek ] = "Ðåñßãñáììá"; + Text[ korean ] = "Å׵θ®"; + Text[ arabic ] = "ßÇÏÑ"; + Text[ turkish ] = "Çerçeve"; + Text[ language_user1 ] = " "; +}; +String RID_STR_HSCROLL +{ + Text = "Horizontaler Scrollbar" ; + Text [ English ] = "Horizontal scrollbar" ; + Text [ portuguese ] = "Barra de deslocamento horizontal" ; + Text [ english_us ] = "Horizontal scroll bar" ; + Text [ portuguese_brazilian ] = "Horizontaler Scrollbar" ; + Text [ swedish ] = "Horisontal rullningslist" ; + Text [ danish ] = "Vandret rullepanel" ; + Text [ italian ] = "Barra di scorrimento orizzontale" ; + Text [ spanish ] = "Barra de deplazamiento horizontal" ; + Text [ french ] = "Barre de défilement horizontale" ; + Text [ dutch ] = "Horizontale beeldschuifbalk" ; + Text[ chinese_simplified ] = "ˮƽ·½Ïò¹ö¶¯À¸"; + Text[ russian ] = "Ãîðèçîíòàëüíàÿ ïîëîñà ïðîêðóòêè"; + Text[ polish ] = "Poziomy pasek przewijania"; + Text[ japanese ] = "…•½‚Ƚ¸Û°ÙÊÞ°"; + Text[ chinese_traditional ] = "¤ô¥¦¡¨÷¶b"; + Text[ greek ] = "Ïñéæüíôéá ãñáììÞ êýëéóçò"; + Text[ korean ] = "¼öÆò ½ºÅ©·Ñ¹Ù"; + Text[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÃÝÞíÇð"; + Text[ turkish ] = "Yatay kaydýrma çubuðu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_VSCROLL +{ + Text = "Vertikaler Scrollbar" ; + Text [ English ] = "Vertical scrollbar" ; + Text [ portuguese ] = "Barra de desl. vertical" ; + Text [ english_us ] = "Vertical scroll bar" ; + Text [ portuguese_brazilian ] = "Vertikaler Scrollbar" ; + Text [ swedish ] = "Vertikal rullningslist" ; + Text [ danish ] = "Lodret rullepanel" ; + Text [ italian ] = "Barra di scorrimento verticale" ; + Text [ spanish ] = "Barra de desplazamiento vertical" ; + Text [ french ] = "Barre de défilement verticale" ; + Text [ dutch ] = "Verticale beeldschuifbalk" ; + Text[ chinese_simplified ] = "´¹Ö±·½Ïò¹ö¶¯À¸"; + Text[ russian ] = "Âåðòèêàëüíàÿ ïîëîñà ïðîêðóòêè"; + Text[ polish ] = "Pionowy pasek przesuwania"; + Text[ japanese ] = "‚’¼‚Ƚ¸Û°ÙÊÞ°"; + Text[ chinese_traditional ] = "««ª½¤è¦V¨÷¶b"; + Text[ greek ] = "Êáôáêüñõöç ãñáììÞ êýëéóçò"; + Text[ korean ] = "¼öÁ÷ ½ºÅ©·Ñ¹Ù"; + Text[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÑÃÓíÇð"; + Text[ turkish ] = "Dikey kaydýrma çubuðu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_MULTILINE +{ + Text = "Mehrzeilig" ; + Text [ English ] = "Multiline" ; + Text [ portuguese ] = "Várias linhas" ; + Text [ english_us ] = "Multiline Input" ; + Text [ portuguese_brazilian ] = "Mehrzeilige Eingabe" ; + Text [ swedish ] = "Flerradig" ; + Text [ danish ] = "Flerlinjede" ; + Text [ italian ] = "Digitazione a più righe" ; + Text [ spanish ] = "Varias líneas" ; + Text [ french ] = "Saisie à plusieurs lignes" ; + Text [ dutch ] = "Meerdere regels" ; + Text[ chinese_simplified ] = "¶àÐÐ"; + Text[ russian ] = "Ìíîãîñòðî÷íûé"; + Text[ polish ] = "Wielowierszowy"; + Text[ japanese ] = "•¡”s"; + Text[ chinese_traditional ] = "¦h¦æ"; + Text[ greek ] = "Ðïëýóôõëï"; + Text[ korean ] = "¿©·¯ ÁÙ ÀÔ·Â"; + Text[ arabic ] = "ãÊÚÏÏ ÇáÃÓØÑ"; + Text[ turkish ] = "Çok satýrlý giriþ"; + Text[ language_user1 ] = " "; +}; +String RID_STR_MULTISELECTION +{ + Text = "Mehrfachselektion" ; + Text [ English ] = "Multiselection" ; + Text [ portuguese ] = "Multi-selecção" ; + Text [ english_us ] = "Multiselection" ; + Text [ portuguese_brazilian ] = "Mehrfachselektion" ; + Text [ swedish ] = "Multipel markering" ; + Text [ danish ] = "Multimarkering" ; + Text [ italian ] = "Selezione multipla" ; + Text [ spanish ] = "Selección múltiple" ; + Text [ french ] = "Sélection multiple" ; + Text [ dutch ] = "Meevoudige selectie" ; + Text[ chinese_simplified ] = "¶àÖØÑ¡Ôñ"; + Text[ russian ] = "Ãðóïïîâîå âûäåëåíèå"; + Text[ polish ] = "Wielokrotny wybór"; + Text[ japanese ] = "•¡”‘I‘ð"; + Text[ chinese_traditional ] = "¦h«¿ï¾Ü"; + Text[ greek ] = "ÐïëëáðëÞ åðéëïãÞ"; + Text[ korean ] = "´ÙÁß ¼±ÅÃ"; + Text[ arabic ] = "ÊÍÏíÏ ãÊÚÏÏ"; + Text[ turkish ] = "Çoklu seçim"; + Text[ language_user1 ] = " "; +}; +String RID_STR_NAME +{ + Text = "Name" ; + Text [ English ] = "Name" ; + Text [ portuguese ] = "Nome" ; + Text [ english_us ] = "Name" ; + Text [ portuguese_brazilian ] = "Name" ; + Text [ swedish ] = "Namn" ; + Text [ danish ] = "Navn" ; + Text [ italian ] = "Nome" ; + Text [ spanish ] = "Nombre" ; + Text [ french ] = "Nom" ; + Text [ dutch ] = "Naam" ; + Text[ chinese_simplified ] = "Ãû³Æ"; + Text[ russian ] = "Èìÿ"; + Text[ polish ] = "Nazwa"; + Text[ japanese ] = "–¼‘O"; + Text[ chinese_traditional ] = "¦WºÙ"; + Text[ greek ] = "¼íïìá"; + Text[ korean ] = "À̸§"; + Text[ arabic ] = "ÇáÇÓã"; + Text[ turkish ] = "Ad"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TABINDEX +{ + Text = "Reihenfolge" ; + Text [ ENGLISH ] = "TabIndex" ; + Text [ portuguese ] = "Ordem" ; + Text [ english_us ] = "Order" ; + Text [ portuguese_brazilian ] = "Reihenfolge" ; + Text [ swedish ] = "Ordningsföljd" ; + Text [ danish ] = "Rækkefølge" ; + Text [ italian ] = "Sequenza" ; + Text [ spanish ] = "Orden" ; + Text [ french ] = "Ordre" ; + Text [ dutch ] = "Volgorde" ; + Text[ chinese_simplified ] = "˳Ðò"; + Text[ russian ] = "Ïîðÿäîê"; + Text[ polish ] = "Kolejnoœæ"; + Text[ japanese ] = "‡˜"; + Text[ chinese_traditional ] = "¶¶§Ç"; + Text[ greek ] = "ÄéÜôáîç"; + Text[ korean ] = "¼ø¼"; + Text[ arabic ] = "ÇáÊÑÊíÈ"; + Text[ turkish ] = "Sýra"; + Text[ language_user1 ] = " "; +}; +String RID_STR_NAVIGATION +{ + Text = "Navigation" ; + Text [ ENGLISH ] = "Navigation" ; + Text [ portuguese ] = "Navegação" ; + Text [ english_us ] = "Navigation" ; + Text [ portuguese_brazilian ] = "Navigation" ; + Text [ swedish ] = "Navigation" ; + Text [ danish ] = "Navigation" ; + Text [ italian ] = "Navigazione" ; + Text [ spanish ] = "Navegación" ; + Text [ french ] = "Navigation" ; + Text [ dutch ] = "Navigatie" ; + Text[ chinese_simplified ] = "ä¯ÀÀ"; + Text[ russian ] = "Íàâèãàöèÿ"; + Text[ polish ] = "Nawigacja"; + Text[ japanese ] = "ÅËÞ¹Þ°¼®Ý"; + Text[ chinese_traditional ] = "ÂsÄý"; + Text[ greek ] = "Ìåôáêßíçóç"; + Text[ korean ] = "Ž»ö"; + Text[ arabic ] = "ÇáãáÇÍÉ"; + Text[ turkish ] = "Dolaþma"; + Text[ language_user1 ] = " "; +}; +String RID_STR_FILTER_CRITERIA +{ + Text = "Filter" ; + Text [ ENGLISH ] = "Filter" ; + Text [ english_us ] = "Filter" ; + Text[ italian ] = "Filtro"; + Text[ portuguese_brazilian ] = "Filter"; + Text[ portuguese ] = "Filtro"; + Text[ danish ] = "Filter"; + Text[ french ] = "Filtre"; + Text[ swedish ] = "Filter"; + Text[ dutch ] = "Filter"; + Text[ spanish ] = "Filtro"; + Text[ chinese_simplified ] = "ɸѡ"; + Text[ russian ] = "Ôèëüòð"; + Text[ polish ] = "Filtr"; + Text[ japanese ] = "̨ÙÀ"; + Text[ chinese_traditional ] = "¿z¿ï"; + Text[ greek ] = "Ößëôñï"; + Text[ korean ] = "ÇÊÅÍ"; + Text[ arabic ] = "ÝáÊÑ"; + Text[ turkish ] = "Filtre"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SORT_CRITERIA +{ + Text = "Sortierung" ; + Text [ ENGLISH ] = "Sort" ; + Text [ english_us ] = "Sort" ; + Text[ italian ] = "Ordina"; + Text[ portuguese_brazilian ] = "Sort"; + Text[ portuguese ] = "Ordenar"; + Text[ danish ] = "Sortering"; + Text[ french ] = "Tri"; + Text[ swedish ] = "Sortering"; + Text[ dutch ] = "Sortering"; + Text[ spanish ] = "Ordenar"; + Text[ chinese_simplified ] = "ÅÅÐò"; + Text[ russian ] = "Ñîðòèðîâêà"; + Text[ polish ] = "Sortowanie"; + Text[ japanese ] = "•À‚בւ¦"; + Text[ chinese_traditional ] = "±Æ§Ç"; + Text[ greek ] = "Ôáîéíüìçóç"; + Text[ korean ] = "Á¤·Ä"; + Text[ arabic ] = "ÇáÝÑÒ"; + Text[ turkish ] = "Sýralama"; + Text[ language_user1 ] = " "; +}; +String RID_STR_RECORDMARKER +{ + Text = "Datensatzmarkierer" ; + Text[ english_us ] = "Record marker"; + Text[ portuguese ] = "Marcador de registos"; + Text[ russian ] = "Ìàðêåð çàïèñè"; + Text[ dutch ] = "Record marker"; + Text[ french ] = "Marqueur d'enregistrement"; + Text[ spanish ] = "Marcador de registros"; + Text[ italian ] = "Selezionatore record di dati"; + Text[ danish ] = "Datapostmarkering"; + Text[ swedish ] = "Datapostmarkör"; + Text[ polish ] = "Znacznik rekordów"; + Text[ portuguese_brazilian ] = "Record marker"; + Text[ japanese ] = "Úº°ÄÞ Ï°¶°"; + Text[ chinese_simplified ] = "Êý¾Ý±ê¼Ç"; + Text[ chinese_traditional ] = "¸ê®Æ¼Ð°O"; + Text[ greek ] = "ÓÞìáíóç åããñáöÞò"; + Text[ korean ] = "·¹ÄÚµå Ç¥½Ä"; + Text[ arabic ] = "ãõÍÏÏ ÇáÓÌá"; + Text[ turkish ] = "Veri kümesi iþareti"; + Text[ language_user1 ] = " "; +}; +String RID_STR_FILTERPROPOSAL +{ + Text = "Filtervorschlag"; + Text [ ENGLISH ] = " Filter proposal"; + Text [ english_us ] = "Filter proposal"; + Text[ portuguese ] = "Proposta de filtro"; + Text[ russian ] = "Ðåêîìåíäàöèÿ ôèëüòðà"; + Text[ greek ] = "Ðñïôåéíüìåíï ößëôñïõ"; + Text[ dutch ] = "Filtervoorstel"; + Text[ french ] = "Proposition de filtre"; + Text[ spanish ] = "Propuesta de filtro"; + Text[ italian ] = "Filtro proposto"; + Text[ danish ] = "Filterforslag"; + Text[ swedish ] = "Filterförslag"; + Text[ polish ] = "Propozycja filtru"; + Text[ portuguese_brazilian ] = "Filter proposal"; + Text[ japanese ] = "̨ÙÀ‚ÌŒó•â"; + Text[ korean ] = "ÇÊÅÍ Á¦¾È"; + Text[ chinese_simplified ] = "½¨ÒéʹÓùýÂËÆ÷"; + Text[ chinese_traditional ] = "«Øij¨Ï¥Î¹LÂo¾¹"; + Text[ arabic ] = "ÇÞÊÑÇÍ ÝáÊÑ"; + Text[ turkish ] = "Filtre önerisi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_NAVIGATIONBAR +{ + Text = "Navigationsleiste" ; + Text [ ENGLISH ] = "Navigationbar" ; + Text [ english_us ] = "Navigation bar" ; + Text[ italian ] = "Barra di navigazione"; + Text[ portuguese_brazilian ] = "Navigationbar"; + Text[ portuguese ] = "Barra de navegação"; + Text[ danish ] = "Navigationslinje"; + Text[ french ] = "Barre de navigation"; + Text[ swedish ] = "Navigationslist"; + Text[ dutch ] = "Navigatiebalk"; + Text[ spanish ] = "Barra de navegación"; + Text[ chinese_simplified ] = "ä¯ÀÀµØÖ·À¸"; + Text[ russian ] = "Ïàíåëü íàâèãàöèè"; + Text[ polish ] = "Pasek nawigacji"; + Text[ japanese ] = "ÅËÞ¹Þ°¼®Ý ÊÞ°"; + Text[ chinese_traditional ] = "ÂsÄý¦ì§}¦C"; + Text[ greek ] = "ÃñáììÞ ìåôáêßíçóçò"; + Text[ korean ] = "Ž»ö Ç¥½ÃÁÙ"; + Text[ arabic ] = "ÔÑíØ ÇáãáÇÍÉ"; + Text[ turkish ] = "Dolaþma çubuðu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_CYCLE +{ + Text = "Zyklus" ; + Text [ ENGLISH ] = "Cycle" ; + Text [ portuguese ] = "Ciclo" ; + Text [ english_us ] = "Cycle" ; + Text [ portuguese_brazilian ] = "Zyklus" ; + Text [ swedish ] = "Cykel" ; + Text [ danish ] = "Cyklus" ; + Text [ italian ] = "Ciclo" ; + Text [ spanish ] = "Ciclo" ; + Text [ french ] = "Cycle" ; + Text [ dutch ] = "Cyclus" ; + Text[ chinese_simplified ] = "Ñ»·"; + Text[ russian ] = "Öèêë"; + Text[ polish ] = "Cykl"; + Text[ japanese ] = "»²¸Ù"; + Text[ chinese_traditional ] = "´`Àô"; + Text[ greek ] = "Êýêëïò"; + Text[ korean ] = "»çÀÌŬ"; + Text[ arabic ] = "ÏÇÆÑÉ"; + Text[ turkish ] = "Devre"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TABSTOP +{ + Text = "Tabstop" ; + Text [ English ] = "Tabstop" ; + Text [ portuguese ] = "Tabstop" ; + Text [ english_us ] = "Tabstop" ; + Text [ portuguese_brazilian ] = "Tabstop" ; + Text [ swedish ] = "Tabbstopp" ; + Text [ danish ] = "Tabstop" ; + Text [ italian ] = "Tabstop" ; + Text [ spanish ] = "Tabstop" ; + Text [ french ] = "Tabstop" ; + Text [ dutch ] = "Tabstop" ; + Text[ chinese_simplified ] = "ÖƱí·û"; + Text[ russian ] = "Tabstop"; + Text[ polish ] = "Tabstop"; + Text[ japanese ] = "ÀÌ޽įÌß"; + Text[ chinese_traditional ] = "»sªí²Å"; + Text[ greek ] = "ÓôçëïèÝôçò"; + Text[ korean ] = "ÅÇ ÁßÁö"; + Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ"; + Text[ turkish ] = "Sekme duraðý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_CONTROLSOURCE +{ + Text = "Datenfeld" ; + Text [ English ] = "Data field" ; + Text [ portuguese ] = "Campo de dados" ; + Text [ english_us ] = "Field name" ; + Text [ portuguese_brazilian ] = "Datenfeld" ; + Text [ swedish ] = "Datafält" ; + Text [ danish ] = "Datafelt" ; + Text [ italian ] = "Campo di dati" ; + Text [ spanish ] = "Campo de datos" ; + Text [ french ] = "Champ de données" ; + Text [ dutch ] = "Gegevensveld" ; + Text[ chinese_simplified ] = "Êý¾Ý×Ö¶Î"; + Text[ russian ] = "Ïîëå äàííûõ"; + Text[ polish ] = "Pole danych"; + Text[ japanese ] = "ÃÞ°Ą̀°ÙÄÞ"; + Text[ chinese_traditional ] = "¸ê®ÆÄæ¦ì"; + Text[ greek ] = "Ðåäßï äåäïìÝíùí"; + Text[ korean ] = "µ¥ÀÌÅÍ Çʵå"; + Text[ arabic ] = "ÍÞá ÈíÇäÇÊ"; + Text[ turkish ] = "Veri alaný"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DROPDOWN +{ + Text = "Aufklappbar" ; + Text [ English ] = "Dropdown" ; + Text [ portuguese ] = "Desdobrável" ; + Text [ english_us ] = "Dropdown" ; + Text [ portuguese_brazilian ] = "Aufklappbar" ; + Text [ swedish ] = "Öppningsbar" ; + Text [ danish ] = "Udklappelig" ; + Text [ italian ] = "Apribile" ; + Text [ spanish ] = "Desplegable" ; + Text [ french ] = "Déroulante" ; + Text [ dutch ] = "Openslaan mogelijk" ; + Text[ chinese_simplified ] = "¿ÉÀ©Õ¹"; + Text[ russian ] = "Ðàñêðûâàåìûé"; + Text[ polish ] = "Rozwijany"; + Text[ japanese ] = "ÄÞÛ¯ÌßÀÞ³Ý"; + Text[ chinese_traditional ] = "¥iÂX®i"; + Text[ greek ] = "Äõíáôüôçôá áíïßãìáôïò"; + Text[ korean ] = "µå·Ó´Ù¿î"; + Text[ arabic ] = "ãäÓÏá"; + Text[ turkish ] = "Açýlabilir"; + Text[ language_user1 ] = " "; +}; +String RID_STR_BOUNDCOLUMN +{ + Text = "Gebundenes Feld" ; + Text [ English ] = "Bound field" ; + Text [ portuguese ] = "Coluna ligada" ; + Text [ english_us ] = "Bound column" ; + Text [ portuguese_brazilian ] = "Gebundenes Feld" ; + Text [ swedish ] = "Bundet fält" ; + Text [ danish ] = "Bundet felt" ; + Text [ italian ] = "Campo collegato" ; + Text [ spanish ] = "Campo ligado" ; + Text [ french ] = "Champ lié" ; + Text [ dutch ] = "Gebonden veld" ; + Text[ chinese_simplified ] = "¹Ì¶¨µÄ×Ö¶Î"; + Text[ russian ] = "Ïðèâÿçàííîå ïîëå"; + Text[ polish ] = "Powi¹zane pole"; + Text[ japanese ] = "ŠÖ˜A‚ ‚ę́°ÙÄÞ"; + Text[ chinese_traditional ] = "©T©wªºÄæ¦ì"; + Text[ greek ] = "ÄåóìåõìÝíï ðåäßï"; + Text[ korean ] = "¹Ù¿îµå ¿"; + Text[ arabic ] = "ÍÞá ãÑÈæØ"; + Text[ turkish ] = "Baðlý alan"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LISTSOURCE +{ + Text = "Listeninhalt" ; + Text [ English ] = "Listsource" ; + Text [ portuguese ] = "Contéudo de lista" ; + Text [ english_us ] = "List content" ; + Text [ portuguese_brazilian ] = "Datenquelle" ; + Text [ swedish ] = "Listinnehåll" ; + Text [ danish ] = "Listeindhold" ; + Text [ italian ] = "Contenuto elenco" ; + Text [ spanish ] = "Contenido de lista" ; + Text [ french ] = "Contenu de liste" ; + Text [ dutch ] = "Lijstinhoud" ; + Text[ chinese_simplified ] = "ÁбíÄÚÈÝ"; + Text[ russian ] = "Ñîäåðæèìîå ñïèñêà"; + Text[ polish ] = "Zawartoœæ listy"; + Text[ japanese ] = "ؽēà—e"; + Text[ chinese_traditional ] = "²M³æ¤º®e"; + Text[ greek ] = "Ðåñéå÷üìåíï ëßóôáò"; + Text[ korean ] = "¸ñ·Ï ³»¿ë"; + Text[ arabic ] = "ãÍÊæíÇÊ ÇáÞÇÆãÉ"; + Text[ turkish ] = "Liste içeriði"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LISTSOURCETYPE +{ + Text = "Art des Listeninhalts" ; + Text [ English ] = "Type of listsource" ; + Text [ portuguese ] = "Tipo do conteúdo da lista" ; + Text [ english_us ] = "Type of list contents" ; + Text [ portuguese_brazilian ] = "Typ der Datenquelle" ; + Text [ swedish ] = "Typ av listinnehåll" ; + Text [ danish ] = "Listeindholdstype" ; + Text [ italian ] = "Tipo del contenuto della lista" ; + Text [ spanish ] = "Tipo del contenido de lista" ; + Text [ french ] = "Type du contenu de liste" ; + Text [ dutch ] = "Type lijstinhoud" ; + Text[ chinese_simplified ] = "ÁбíÄÚÈݵÄÀàÐÍ"; + Text[ russian ] = "Òèï ñîäåðæèìîãî ñïèñêà"; + Text[ polish ] = "Typ zawartoœci listy"; + Text[ japanese ] = "ؽēà—e‚ÌŽí—Þ"; + Text[ chinese_traditional ] = "²M³æ¤º®eªºÃþ«¬"; + Text[ greek ] = "Åßäïò ôïõ ðåñéå÷ïìÝíïõ ëßóôáò"; + Text[ korean ] = "¸ñ·Ï ³»¿ëÀÇ À¯Çü"; + Text[ arabic ] = "äæÚ ãÍÊæíÇÊ ÇáÞÇÆãÉ"; + Text[ turkish ] = "Liste içeriði türü"; + Text[ language_user1 ] = " "; +}; +String RID_STR_CURSORSOURCE +{ + Text = "Inhalt" ; + Text [ English ] = "Content" ; + Text[ english_us ] = "Content"; + Text[ portuguese ] = "Conteúdo"; + Text[ russian ] = "Ñîäåðæèìîå"; + Text[ greek ] = "Ðåñéå÷üìåíá"; + Text[ dutch ] = "Inhoud"; + Text[ french ] = "Contenu"; + Text[ spanish ] = "Contenido"; + Text[ italian ] = "Contenuto"; + Text[ danish ] = "Datakilde"; + Text[ swedish ] = "Innehåll"; + Text[ polish ] = "Zawartoœæ"; + Text[ portuguese_brazilian ] = "Datenquelle"; + Text[ japanese ] = "“à—e"; + Text[ korean ] = "³»¿ë"; + Text[ chinese_simplified ] = "ÄÚÈÝ"; + Text[ chinese_traditional ] = "¤º®e"; + Text[ turkish ] = "Veri kaynaðý"; + Text[ arabic ] = "ÇáãÍÊæíÇÊ"; +}; +String RID_STR_CURSORSOURCETYPE +{ + Text = "Art des Inhaltes" ; + Text [ English ] = "Type of Content" ; + Text[ english_us ] = "Content Type"; + Text[ portuguese ] = "Tipo de conteúdo"; + Text[ russian ] = "Òèï ñîäåðæèìîãî"; + Text[ greek ] = "Ôýðïò ðåñéå÷ïìÝíùí"; + Text[ dutch ] = "Soort inhoud"; + Text[ french ] = "Type de contenu"; + Text[ spanish ] = "Tipo de contenido"; + Text[ italian ] = "Tipo di contenuto"; + Text[ danish ] = "Datakildetype"; + Text[ swedish ] = "Typ av innehåll"; + Text[ polish ] = "Rodzaj zawartoœci"; + Text[ portuguese_brazilian ] = "Typ der Datenquelle"; + Text[ japanese ] = "“à—e‚ÌŽí—Þ"; + Text[ korean ] = "³»¿ë Á¾·ù"; + Text[ chinese_simplified ] = "ÄÚÈÝÀàÐÍ"; + Text[ chinese_traditional ] = "¤º®eÃþ«¬"; + Text[ turkish ] = "Veri kaynaðý türü"; + Text[ arabic ] = "äæÚ ÇáãÍÊæíÇÊ"; +}; +String RID_STR_ALLOW_ADDITIONS +{ + Text = "Daten hinzufügen" ; + Text [ English ] = "Allow additions" ; + Text [ portuguese ] = "Adicionar dados" ; + Text [ english_us ] = "Allow additions" ; + Text [ portuguese_brazilian ] = "Daten hinzufügen" ; + Text [ swedish ] = "Lägg till data" ; + Text [ danish ] = "Tilføj data" ; + Text [ italian ] = "Aggiungi dati" ; + Text [ spanish ] = "Añadir datos" ; + Text [ french ] = "Ajouter des données" ; + Text [ dutch ] = "Gegevens toevoegen" ; + Text[ chinese_simplified ] = "ÐÂÔöÊý¾Ý"; + Text[ russian ] = "Äîáàâèòü äàííûå"; + Text[ polish ] = "Dodaj dane"; + Text[ japanese ] = "ÃÞ°À‚̒ljÁ"; + Text[ chinese_traditional ] = "¼W¥[¸ê®Æ"; + Text[ greek ] = "ÐñïóèÞêç äåäïìÝíùí"; + Text[ korean ] = "µ¥ÀÌÅÍ Ãß°¡"; + Text[ arabic ] = "ÅÖÇÝÉ ÈíÇäÇÊ"; + Text[ turkish ] = "Veri ekle"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ALLOW_DELETIONS +{ + Text = "Daten löschen" ; + Text [ English ] = "Allow deletions" ; + Text [ portuguese ] = "Eliminar dados" ; + Text [ english_us ] = "Delete data" ; + Text [ portuguese_brazilian ] = "Daten löschen" ; + Text [ swedish ] = "Radera data" ; + Text [ danish ] = "Slet data" ; + Text [ italian ] = "Elimina dati" ; + Text [ spanish ] = "Eliminar datos" ; + Text [ french ] = "Supprimer les données" ; + Text [ dutch ] = "Gegevens wissen" ; + Text[ chinese_simplified ] = "ɾ³ýÊý¾Ý"; + Text[ russian ] = "Óäàëèòü äàííûå"; + Text[ polish ] = "Usuñ dane"; + Text[ japanese ] = "ÃÞ°À‚Ìíœ"; + Text[ chinese_traditional ] = "§R°£¸ê®Æ"; + Text[ greek ] = "ÄéáãñáöÞ äåäïìÝíùí"; + Text[ korean ] = "µ¥ÀÌÅÍ »èÁ¦"; + Text[ arabic ] = "ÍÐÝ ÈíÇäÇÊ"; + Text[ turkish ] = "Verileri sil"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ALLOW_EDITS +{ + Text = "Daten ändern" ; + Text [ English ] = "Allow edits" ; + Text [ portuguese ] = "Modificar dados" ; + Text [ english_us ] = "Allow modifications" ; + Text [ portuguese_brazilian ] = "Daten ändern" ; + Text [ swedish ] = "Ändra data" ; + Text [ danish ] = "Modificer data" ; + Text [ italian ] = "Modifica dati" ; + Text [ spanish ] = "Modificar datos" ; + Text [ french ] = "Modifier les données" ; + Text [ dutch ] = "Gegevens wijzigen" ; + Text[ chinese_simplified ] = "ÐÞ¸ÄÊý¾Ý"; + Text[ russian ] = "Èçìåíèòü äàííûå"; + Text[ polish ] = "Modyfikuj dane"; + Text[ japanese ] = "ÃÞ°À‚Ì•ÏX"; + Text[ chinese_traditional ] = "קï¸ê®Æ"; + Text[ greek ] = "Ôñïðïðïßçóç äåäïìÝíùí"; + Text[ korean ] = "µ¥ÀÌÅÍ º¯°æ"; + Text[ arabic ] = "ÊÛííÑ ÈíÇäÇÊ"; + Text[ turkish ] = "Verileri deðiþtir"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATAENTRY +{ + Text = "Nur Daten hinzufügen" ; + Text [ English ] = "Only additions allowed" ; + Text [ portuguese ] = "Adicionar apenas dados" ; + Text [ english_us ] = "Add data only " ; + Text [ portuguese_brazilian ] = "Nur Daten hinzufügen" ; + Text [ swedish ] = "Lägg endast till data" ; + Text [ danish ] = "Tilføj kun data" ; + Text [ italian ] = "Aggiungi solo i dati" ; + Text [ spanish ] = "Añadir solo datos" ; + Text [ french ] = "N'ajouter que des données" ; + Text [ dutch ] = "Alleen gegevens toevoegen" ; + Text[ chinese_simplified ] = "Ö»ÐÂÔöÊý¾Ý"; + Text[ russian ] = "Äîáàâèòü òîëüêî äàííûå"; + Text[ polish ] = "Dodaj tylko dane"; + Text[ japanese ] = "ÃÞ°À‚̂ݒljÁ"; + Text[ chinese_traditional ] = "¶È¼W¥[¸ê®Æ"; + Text[ greek ] = "ÐñïóèÞêç äåäïìÝíùí ìüíï"; + Text[ korean ] = "µ¥ÀÌÅ͸¸ Ãß°¡"; + Text[ arabic ] = "ÅÖÇÝÉ ÈíÇäÇÊ ÝÞØ"; + Text[ turkish ] = "Yalnýzca veri ekle"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATASOURCE +{ + Text = "Datenquelle" ; + Text [ English ] = "Data Source" ; + Text[ english_us ] = "Data source"; + Text[ portuguese ] = "Fonte de dados"; + Text[ russian ] = "Èñòî÷íèê äàííûõ"; + Text[ greek ] = "ÐñïÝëåõóç äåäïìÝíùí"; + Text[ dutch ] = "Gegevensbron"; + Text[ french ] = "Source de données"; + Text[ spanish ] = "Fuente de datos"; + Text[ italian ] = "Sorgente dati"; + Text[ danish ] = "Database"; + Text[ swedish ] = "Datakälla"; + Text[ polish ] = "ród³o danych"; + Text[ portuguese_brazilian ] = "Datenbank"; + Text[ japanese ] = "ÃÞ°ÀÍÞ°½"; + Text[ korean ] = "µ¥ÀÌÅÍ ¼Ò½º"; + Text[ chinese_simplified ] = "Êý¾ÝÔ´"; + Text[ chinese_traditional ] = "¸ê®Æ®w·½"; + Text[ turkish ] = "Veritabaný"; + Text[ arabic ] = "ãÕÏÑ ÇáÈíÇäÇÊ"; +}; +String RID_STR_MASTERFIELDS +{ + Text = "Verknüpfen von" ; + Text [ English ] = "Master fields" ; + Text [ portuguese ] = "Ligar de" ; + Text [ english_us ] = "Linking" ; + Text [ portuguese_brazilian ] = "Übergeordnete Felder" ; + Text [ swedish ] = "Länka från" ; + Text [ danish ] = "Kæde fra" ; + Text [ italian ] = "Collega da" ; + Text [ spanish ] = "Vinculación de" ; + Text [ french ] = "Établir un lien depuis" ; + Text [ dutch ] = "Koppelen van" ; + Text[ chinese_simplified ] = "Á´½Óµ½"; + Text[ russian ] = "Ñâÿçè"; + Text[ polish ] = "Po³¹cz"; + Text[ japanese ] = "ØݸŒ³"; + Text[ chinese_traditional ] = "³sµ²¨ì"; + Text[ greek ] = "Óýíäåóç ôùí"; + Text[ korean ] = "¿¬°á"; + Text[ arabic ] = "ÑÈØ"; + Text[ turkish ] = "Baðlantý öðeleri"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SLAVEFIELDS +{ + Text = "Verknüpfen nach" ; + Text [ English ] = "Subfields" ; + Text [ portuguese ] = "Ligar com" ; + Text [ english_us ] = "Subfields" ; + Text [ portuguese_brazilian ] = "Untergeordnete Felder" ; + Text [ swedish ] = "Länka till" ; + Text [ danish ] = "Kæde til" ; + Text [ italian ] = "Collega per" ; + Text [ spanish ] = "Vincular con" ; + Text [ french ] = "Établir un lien avec" ; + Text [ dutch ] = "Koppelen met" ; + Text[ chinese_simplified ] = "Á´½Óµ½"; + Text[ russian ] = "Ñâÿçàòü ñ"; + Text[ polish ] = "Po³¹cz z"; + Text[ japanese ] = "Ú‘±æ"; + Text[ chinese_traditional ] = "³sµ²¨ì"; + Text[ greek ] = "Óýíäåóç ìå"; + Text[ korean ] = "ÇÏÀ§ Çʵå"; + Text[ arabic ] = "ÇÑÊÈÇØ ãÚ"; + Text[ turkish ] = "Alt alanlar"; + Text[ language_user1 ] = " "; +}; +String RID_STR_VALUEMIN +{ + Text = "Min. Wert" ; + Text [ English ] = "Value min." ; + Text [ portuguese ] = "Valor min." ; + Text [ english_us ] = "Value min." ; + Text [ portuguese_brazilian ] = "Min. Wert" ; + Text [ swedish ] = "Min. värde" ; + Text [ danish ] = "Min. værdi" ; + Text [ italian ] = "Valore min." ; + Text [ spanish ] = "Valor mín." ; + Text [ french ] = "Valeur min." ; + Text [ dutch ] = "Min. waarde" ; + Text[ chinese_simplified ] = "×îСÊýÖµ"; + Text[ russian ] = "Ìèí. çíà÷åíèå"; + Text[ polish ] = "Min. wartoœæ"; + Text[ japanese ] = "Å’á’l"; + Text[ chinese_traditional ] = "³Ì¤p¼ÆÈ"; + Text[ greek ] = "ÅëÜ÷éóôç ôéìÞ"; + Text[ korean ] = "ÃÖ¼Ò°ª"; + Text[ arabic ] = "ÃÏäì ÞíãÉ"; + Text[ turkish ] = "Asgari deðer"; + Text[ language_user1 ] = " "; +}; +String RID_STR_VALUEMAX +{ + Text = "Max. Wert" ; + Text [ English ] = "Value max." ; + Text [ portuguese ] = "Valor máx." ; + Text [ english_us ] = "Value max." ; + Text [ portuguese_brazilian ] = "Max. Wert" ; + Text [ swedish ] = "Max. värde" ; + Text [ danish ] = "Maks. værdi" ; + Text [ italian ] = "Valore max." ; + Text [ spanish ] = "Valor máx." ; + Text [ french ] = "Valeur max." ; + Text [ dutch ] = "Max. waarde" ; + Text[ chinese_simplified ] = "×î´óÊýÖµ"; + Text[ russian ] = "Ìàêñ. çíà÷åíèå"; + Text[ polish ] = "Maks. wartoœæ"; + Text[ japanese ] = "Å‚’l"; + Text[ chinese_traditional ] = "³Ì¤j¼ÆÈ"; + Text[ greek ] = "ÌÝãéóôç ôéìÞ"; + Text[ korean ] = "ÃÖ´ë°ª"; + Text[ arabic ] = "ÃÞÕì ÞíãÉ"; + Text[ turkish ] = "Azami deðer"; + Text[ language_user1 ] = " "; +}; +String RID_STR_VALUESTEP +{ + Text = "Intervall" ; + Text [ English ] = "Value step" ; + Text [ portuguese ] = "Intervalo" ; + Text [ english_us ] = "Incr./Decrement value" ; + Text [ swedish ] = "Intervall" ; + Text [ italian ] = "Intervallo" ; + Text [ spanish ] = "Intervalo" ; + Text [ dutch ] = "Interval" ; + Text[ portuguese_brazilian ] = "Differenzwert"; + Text[ danish ] = "Interval"; + Text[ french ] = "Intervalle"; + Text[ chinese_simplified ] = "Çø¼ä"; + Text[ russian ] = "Çíà÷åíèå âîçðàñòàíèÿ/óáûâàíèÿ"; + Text[ polish ] = "Przedzia³"; + Text[ japanese ] = "ŠÔŠu"; + Text[ chinese_traditional ] = "°Ï¶¡"; + Text[ greek ] = "ÄéÜóôçìá"; + Text[ korean ] = "Áõ°¨°ª"; + Text[ arabic ] = "ÒíÇÏÉ/ÅäÞÇÕ ÇáÞíãÉ"; + Text[ turkish ] = "Aralýk"; + Text[ language_user1 ] = " "; +}; +String RID_STR_CURRENCYSYMBOL +{ + Text = "Währungssymbol" ; + Text [ English ] = "Currencysymbol" ; + Text [ portuguese ] = "Símbolo de moeda" ; + Text [ english_us ] = "Currency symbol" ; + Text [ portuguese_brazilian ] = "Währungssymbol" ; + Text [ swedish ] = "Valutasymbol" ; + Text [ danish ] = "Valutasymbol" ; + Text [ italian ] = "Simbolo valuta" ; + Text [ spanish ] = "Símbolo de moneda" ; + Text [ french ] = "Symbole monétaire" ; + Text [ dutch ] = "Valutasymbool" ; + Text[ chinese_simplified ] = "»õ±Òͼ±ê"; + Text[ russian ] = "Ñèìâîë âàëþòû"; + Text[ polish ] = "Symbol waluty"; + Text[ japanese ] = "’ʉݼÝÎÞÙ"; + Text[ chinese_traditional ] = "³f¹ô¹Ï¥Ü"; + Text[ greek ] = "Óýìâïëï íïìßóìáôïò"; + Text[ korean ] = "ÅëÈ ±âÈ£"; + Text[ arabic ] = "ÑãÒ ÇáÚãáÉ"; + Text[ turkish ] = "Para birimi simgesi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATEMIN +{ + Text = "Min. Datum" ; + Text [ English ] = "Date min." ; + Text [ portuguese ] = "Data min." ; + Text [ english_us ] = "Date min." ; + Text [ portuguese_brazilian ] = "Min. Datum" ; + Text [ swedish ] = "Min. datum" ; + Text [ danish ] = "Min. dato" ; + Text [ italian ] = "Data min." ; + Text [ spanish ] = "Fecha mín." ; + Text [ french ] = "Date min." ; + Text [ dutch ] = "Min. datum" ; + Text[ chinese_simplified ] = "×î¶ÌµÄÈÕÆÚ"; + Text[ russian ] = "Ìèí. äàòà"; + Text[ polish ] = "Min. data"; + Text[ japanese ] = "Ŭ “ú•t"; + Text[ chinese_traditional ] = "³Ìµuªº¤é´Á"; + Text[ greek ] = "Åëá÷. çìåñïìçíßá"; + Text[ korean ] = "ÃÖ¼Ò ³¯Â¥"; + Text[ arabic ] = "ÃÏäì ÊÇÑíÎ"; + Text[ turkish ] = "Tarih (asgari)"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATEMAX +{ + Text = "Max. Datum" ; + Text [ English ] = "Date max." ; + Text [ portuguese ] = "Data máx." ; + Text [ english_us ] = "Date max." ; + Text [ portuguese_brazilian ] = "Max. Datum" ; + Text [ swedish ] = "Max. datum" ; + Text [ danish ] = "Maks. dato" ; + Text [ italian ] = "Data max." ; + Text [ spanish ] = "Fecha máx." ; + Text [ french ] = "Date max." ; + Text [ dutch ] = "Max. datum" ; + Text[ chinese_simplified ] = "×µÄÈÕÆÚ"; + Text[ russian ] = "Ìàêñ. äàòà"; + Text[ polish ] = "Maks. data"; + Text[ japanese ] = "Å‘å “ú•t"; + Text[ chinese_traditional ] = "³Ìªøªº¤é´Á"; + Text[ greek ] = "Ìåã. çìåñïìçíßá"; + Text[ korean ] = "ÃÖ´ë ³¯Â¥"; + Text[ arabic ] = "ÃÞÕì ÊÇÑíÎ"; + Text[ turkish ] = "Tarih (azami)"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATEFORMAT +{ + Text = "Datumsformat" ; + Text [ English ] = "Date format" ; + Text [ portuguese ] = "Formato da data" ; + Text [ english_us ] = "Date format" ; + Text [ portuguese_brazilian ] = "Datumsformat" ; + Text [ swedish ] = "Datumformat" ; + Text [ danish ] = "Datoformat" ; + Text [ italian ] = "Formato data" ; + Text [ spanish ] = "Formato de fecha" ; + Text [ french ] = "Format de date" ; + Text [ dutch ] = "Datumsformaat" ; + Text[ chinese_simplified ] = "ÈÕÆÚ¸ñʽ"; + Text[ russian ] = "Ôîðìàò äàííûõ"; + Text[ polish ] = "Format daty"; + Text[ japanese ] = "“ú•t‚Ì‘Ž®"; + Text[ chinese_traditional ] = "¤é´Á®æ¦¡"; + Text[ greek ] = "ÌïñöÞ çìåñïìçíßáò"; + Text[ korean ] = "³¯Â¥ ¼½Ä"; + Text[ arabic ] = "ÊäÓíÞ ÇáÈíÇäÇÊ"; + Text[ turkish ] = "Tarih formatý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TIMEMIN +{ + Text = "Min. Zeit" ; + Text [ English ] = "Time min." ; + Text [ portuguese ] = "min. de horas" ; + Text [ english_us ] = "Time min." ; + Text [ portuguese_brazilian ] = "Min. Zeit" ; + Text [ swedish ] = "Min. tid" ; + Text [ danish ] = "Min. klokkeslæt" ; + Text [ italian ] = "Tempo min." ; + Text [ spanish ] = "Tiempo mín." ; + Text [ french ] = "Heure min." ; + Text [ dutch ] = "Min. tijd" ; + Text[ chinese_simplified ] = "×î¶Ìʱ¼ä"; + Text[ russian ] = "Ìèí. âðåìÿ"; + Text[ polish ] = "Min. czas"; + Text[ japanese ] = "Œ᎞ŠÔ"; + Text[ chinese_traditional ] = "³Ìµu®É¶¡"; + Text[ greek ] = "Åëá÷. ÷ñüíïò"; + Text[ korean ] = "ÃÖ¼Ò ½Ã°£"; + Text[ arabic ] = "ÃÏäì æÞÊ"; + Text[ turkish ] = "Zaman (asgari)"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TIMEMAX +{ + Text = "Max. Zeit" ; + Text [ English ] = "Time max." ; + Text [ portuguese ] = "máx. de horas" ; + Text [ english_us ] = "Time max." ; + Text [ portuguese_brazilian ] = "Max. Zeit" ; + Text [ swedish ] = "Max. tid" ; + Text [ danish ] = "Maks. klokkeslæt" ; + Text [ italian ] = "Tempo max." ; + Text [ spanish ] = "Tiempo máx." ; + Text [ french ] = "Heure max." ; + Text [ dutch ] = "Max.tijd" ; + Text[ chinese_simplified ] = "×ʱ¼ä"; + Text[ russian ] = "Ìàêñ. âðåìÿ"; + Text[ polish ] = "Maks. czas"; + Text[ japanese ] = "Å‚ŽžŠÔ"; + Text[ chinese_traditional ] = "³Ìªø®É¶¡"; + Text[ greek ] = "Ìåã. ÷ñüíïò"; + Text[ korean ] = "ÃÖ´ë ½Ã°£"; + Text[ arabic ] = "ÃÞÕì æÞÊ"; + Text[ turkish ] = "Saat (azami)"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TIMEFORMAT +{ + Text = "Zeitformat" ; + Text [ English ] = "Timeformat" ; + Text [ portuguese ] = "Formato das horas" ; + Text [ english_us ] = "Time Format" ; + Text [ portuguese_brazilian ] = "Zeitformat" ; + Text [ swedish ] = "Tidsformat" ; + Text [ danish ] = "Klokkeslætsformat" ; + Text [ italian ] = "Formato orario" ; + Text [ spanish ] = "Formato de hora" ; + Text [ french ] = "Format d'heure" ; + Text [ dutch ] = "Tijdformaat" ; + Text[ chinese_simplified ] = "ʱ¼ä¸ñʽ"; + Text[ russian ] = "Ôîðìàò âðåìåíè"; + Text[ polish ] = "Format czasu"; + Text[ japanese ] = "ŽžŠÔ‚Ì‘Ž®"; + Text[ chinese_traditional ] = "®É¶¡®æ¦¡"; + Text[ greek ] = "ÌïñöÞ þñáò"; + Text[ korean ] = "½Ã°£ ¼½Ä"; + Text[ arabic ] = "ÊäÓíÞ æÞÊ"; + Text[ turkish ] = "Zaman formatý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_CURRSYM_POSITION +{ + Text = "Symbol voranstellen" ; + Text [ English ] = "prepend currency symbol" ; + Text[ english_us ] = "Prefix symbol"; + Text[ portuguese ] = "Colocar símbolo antes do nome"; + Text[ russian ] = "Óñòàíîâèòü ñíà÷àëà ñèìâîë"; + Text[ greek ] = "ÔïðïèÝôçóç óõìâüëïõ ìðñïóôÜ"; + Text[ dutch ] = "Valutateken vooraan"; + Text[ french ] = "Placer le symbole avant le nombre"; + Text[ spanish ] = "Situar símbolo delante"; + Text[ italian ] = "Premetti simbolo"; + Text[ danish ] = "Placer symbolet foran"; + Text[ swedish ] = "Placera symbol framför"; + Text[ polish ] = "Ustaw z przodu symbol"; + Text[ portuguese_brazilian ] = "prepend currency symbol"; + Text[ japanese ] = "¼ÝÎÞÙ‚ð‘O‚É’u‚"; + Text[ korean ] = "±âÈ£¸¦ ¾Õ¿¡ ºÙÀÓ"; + Text[ chinese_simplified ] = "Ç°ÖÃͼ±ê"; + Text[ chinese_traditional ] = "«e¸m¹Ï¥Ü"; + Text[ arabic ] = "æÖÚ ÇáÑãÒ Ýí ÇáãÞÏãÉ"; + Text[ turkish ] = "Simge öne ekle"; + Text[ language_user1 ] = " "; +}; +String RID_STR_VALUE +{ + Text = "Wert" ; + Text [ ENGLISH ] = "Value" ; + Text [ portuguese ] = "Valor" ; + Text [ english_us ] = "Value" ; + Text [ portuguese_brazilian ] = "Wert" ; + Text [ swedish ] = "Värde" ; + Text [ danish ] = "Værdi" ; + Text [ italian ] = "Valore" ; + Text [ spanish ] = "Valor" ; + Text [ french ] = "Valeur" ; + Text [ dutch ] = "Waarde" ; + Text[ chinese_simplified ] = "ÊýÖµ"; + Text[ russian ] = "Çíà÷åíèå"; + Text[ polish ] = "Wartoœæ"; + Text[ japanese ] = "’l"; + Text[ chinese_traditional ] = "¼ÆÈ"; + Text[ greek ] = "ÔéìÞ"; + Text[ korean ] = "°ª"; + Text[ arabic ] = "ÇáÞíãÉ"; + Text[ turkish ] = "Deðer"; + Text[ language_user1 ] = " "; +}; +String RID_STR_FORMATKEY +{ + Text = "Formatierung" ; + Text [ ENGLISH ] = "Format" ; + Text [ portuguese ] = "Formato" ; + Text [ english_us ] = "Formatting" ; + Text [ portuguese_brazilian ] = "FormatKey" ; + Text [ swedish ] = "Formatering" ; + Text [ danish ] = "Formatering" ; + Text [ italian ] = "Formattazione" ; + Text [ spanish ] = "Formato" ; + Text [ french ] = "Formatage" ; + Text [ dutch ] = "Opmaak" ; + Text[ chinese_simplified ] = "¸ñʽ¼ü"; + Text[ russian ] = "Ôîðìàòèðîâàíèå"; + Text[ polish ] = "Formatowanie"; + Text[ japanese ] = "‘Ž®Ý’è"; + Text[ chinese_traditional ] = "®æ¦¡¤Æ"; + Text[ greek ] = "Ìïñöïðïßçóç"; + Text[ korean ] = "¼½Ä Å°"; + Text[ arabic ] = "ÇáÊäÓíÞ"; + Text[ turkish ] = "Formatlama"; + Text[ language_user1 ] = " "; +}; +String RID_STR_CLASSID +{ + Text = "Klassenindex" ; + Text [ ENGLISH ] = "ClassId" ; + Text [ portuguese ] = "Índice de classe" ; + Text [ english_us ] = "Class ID" ; + Text [ portuguese_brazilian ] = "Klassenindex" ; + Text [ swedish ] = "Klassindex" ; + Text [ danish ] = "Klasseindeks" ; + Text [ italian ] = "Indice di classe" ; + Text [ spanish ] = "Índice de clase" ; + Text [ french ] = "Index de classe" ; + Text [ dutch ] = "Klassenindex" ; + Text[ chinese_simplified ] = "ÀàË÷Òý"; + Text[ russian ] = "Èíäåêñ êëàññà"; + Text[ polish ] = "Indeks klas"; + Text[ japanese ] = "¸×½²ÝÃÞ¯¸½"; + Text[ chinese_traditional ] = "µ{¦¡Ãþ¯Á¤Þ"; + Text[ greek ] = "ÅõñåôÞñéï êëÜóçò"; + Text[ korean ] = "Ŭ·¡½º ID"; + Text[ arabic ] = "ÝåÑÓ ÇáØÈÞÇÊ"; + Text[ turkish ] = "Sýnýf dizini"; + Text[ language_user1 ] = " "; +}; +String RID_STR_HEIGHT +{ + Text = "Höhe" ; + Text [ ENGLISH ] = "Height" ; + Text [ portuguese ] = "Altura" ; + Text [ english_us ] = "Height" ; + Text [ portuguese_brazilian ] = "Höhe" ; + Text [ swedish ] = "Höjd" ; + Text [ danish ] = "Højde" ; + Text [ italian ] = "Altezza" ; + Text [ spanish ] = "Altura" ; + Text [ french ] = "Hauteur" ; + Text [ dutch ] = "Hoogte" ; + Text[ chinese_simplified ] = "¸ß¶È"; + Text[ russian ] = "Âûñîòà"; + Text[ polish ] = "Wysokoœæ"; + Text[ japanese ] = "‚‚³"; + Text[ chinese_traditional ] = "°ª«×"; + Text[ greek ] = "¾øïò"; + Text[ korean ] = "³ôÀÌ"; + Text[ arabic ] = "ÇáÇÑÊÝÇÚ"; + Text[ turkish ] = "Yükseklik"; + Text[ language_user1 ] = " "; +}; +String RID_STR_WIDTH +{ + Text = "Breite" ; + Text [ ENGLISH ] = "Width" ; + Text [ portuguese ] = "Largura" ; + Text [ english_us ] = "Width" ; + Text [ portuguese_brazilian ] = "Breite" ; + Text [ swedish ] = "Bredd" ; + Text [ danish ] = "Bredde" ; + Text [ italian ] = "Larghezza" ; + Text [ spanish ] = "Ancho" ; + Text [ french ] = "Largeur" ; + Text [ dutch ] = "Breedte" ; + Text[ chinese_simplified ] = "¿í¶È"; + Text[ russian ] = "Øèðèíà"; + Text[ polish ] = "Szerokoœæ"; + Text[ japanese ] = "•"; + Text[ chinese_traditional ] = "¼e«×"; + Text[ greek ] = "ÐëÜôïò"; + Text[ korean ] = "³Êºñ"; + Text[ arabic ] = "ÇáÚÑÖ"; + Text[ turkish ] = "Geniþlik"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LISTINDEX +{ + Text = "ListIndex" ; + Text [ ENGLISH ] = "ListIndex" ; + Text [ portuguese ] = "Índice de listas" ; + Text [ english_us ] = "List Index" ; + Text [ portuguese_brazilian ] = "ListIndex" ; + Text [ swedish ] = "Listindex" ; + Text [ danish ] = "ListIndeks" ; + Text [ italian ] = "Indice elenco" ; + Text [ spanish ] = "Indice de listas" ; + Text [ french ] = "Index de liste" ; + Text [ dutch ] = "ListIndex" ; + Text[ chinese_simplified ] = "ÁбíË÷Òý"; + Text[ russian ] = "Èíäåêñ ñïèñêà"; + Text[ polish ] = "Indeks list"; + Text[ japanese ] = "ؽĂ̲ÝÃÞ¯¸½"; + Text[ chinese_traditional ] = "²M³æ¯Á¤Þ"; + Text[ greek ] = "ÅõñåôÞñéï ëßóôáò"; + Text[ korean ] = "¸ñ·Ï »öÀÎ"; + Text[ arabic ] = "ÝåÑÓ ÇáÞÇÆãÉ"; + Text[ turkish ] = "Liste dizini"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ROWHEIGHT +{ + Text = "Zeilenhöhe" ; + Text [ English ] = "Background color" ; + Text [ portuguese ] = "Altura de linhas" ; + Text [ english_us ] = "Row height" ; + Text [ portuguese_brazilian ] = "Zeilenhöhe" ; + Text [ swedish ] = "Radhöjd" ; + Text [ danish ] = "Rækkehøjde" ; + Text [ italian ] = "Altezza riga" ; + Text [ spanish ] = "Altura de fila" ; + Text [ french ] = "Hauteur de ligne" ; + Text [ dutch ] = "Rijhoogte" ; + Text[ chinese_simplified ] = "Ðиß"; + Text[ russian ] = "Âûñîòà ñòðîê"; + Text[ polish ] = "Wysokoœæ wierszy"; + Text[ japanese ] = "s‚Ì‚‚³"; + Text[ chinese_traditional ] = "¦æ°ª"; + Text[ greek ] = "¾øïò ãñáììÞò"; + Text[ korean ] = "Çà ³ôÀÌ"; + Text[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ"; + Text[ turkish ] = "Satýr yüksekliði"; + Text[ language_user1 ] = " "; +}; +String RID_STR_FILLCOLOR +{ + Text = "Füllfarbe" ; + Text [ English ] = "FillColor" ; + Text [ portuguese ] = "Cor de preenchimento" ; + Text [ english_us ] = "Fill Color" ; + Text [ portuguese_brazilian ] = "Füllfarbe" ; + Text [ swedish ] = "Fyllningsfärg" ; + Text [ danish ] = "Fyldfarve" ; + Text [ italian ] = "Colore di riempimento" ; + Text [ spanish ] = "Color de relleno" ; + Text [ french ] = "Couleur de remplissage" ; + Text [ dutch ] = "Opvulkleur" ; + Text[ chinese_simplified ] = "³äÌîÑÕÉ«"; + Text[ russian ] = "Öâåò çàëèâêè"; + Text[ polish ] = "Kolor wype³nienia"; + Text[ japanese ] = "“h‚è‚‚Ԃµ"; + Text[ chinese_traditional ] = "¥R¶ñÃC¦â"; + Text[ greek ] = "ÃÝìéóìá ìå ÷ñþìá"; + Text[ korean ] = "ä¿ì±â »ö»ó"; + Text[ arabic ] = "áæä ÊÚÈÆÉ"; + Text[ turkish ] = "Dolgu rengi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_LINECOLOR +{ + Text = "Linienfarbe" ; + Text [ English ] = "LineColor" ; + Text [ portuguese ] = "Cor da linha" ; + Text [ english_us ] = "Line Color" ; + Text [ portuguese_brazilian ] = "Linienfarbe" ; + Text [ swedish ] = "Linjefärg" ; + Text [ danish ] = "Stregfarve" ; + Text [ italian ] = "Colore linee" ; + Text [ spanish ] = "Color de línea" ; + Text [ french ] = "Couleur de ligne" ; + Text [ dutch ] = "Lijnkleur" ; + Text[ chinese_simplified ] = "ÏßÌõÑÕÉ«"; + Text[ russian ] = "Öâåò ëèíèè"; + Text[ polish ] = "Kolor linii"; + Text[ japanese ] = "ü‚ÌF"; + Text[ chinese_traditional ] = "½u±øÃC¦â"; + Text[ greek ] = "×ñþìá ãñáììÞò"; + Text[ korean ] = "¼±ÀÇ »ö"; + Text[ arabic ] = "áæä ÇáÎØ"; + Text[ turkish ] = "Çizgi rengi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_REFVALUE +{ + Text = "Referenzwert" ; + Text [ English ] = "RefValue" ; + Text [ portuguese ] = "Valor referencial" ; + Text [ english_us ] = "Reference value" ; + Text [ portuguese_brazilian ] = "Referenzwert" ; + Text [ swedish ] = "Referensvärde" ; + Text [ danish ] = "Referenceværdi" ; + Text [ italian ] = "Valore di riferimento" ; + Text [ spanish ] = "Valor referencial" ; + Text [ french ] = "Valeur référentielle" ; + Text [ dutch ] = "Referentiewaarde" ; + Text[ chinese_simplified ] = "ÒýÓÃÖµ"; + Text[ russian ] = "Çíà÷åíèå ññûëêè"; + Text[ polish ] = "Wartoœæ odwo³ania"; + Text[ japanese ] = "ŽQÆ’l"; + Text[ chinese_traditional ] = "°Ñ·ÓÈ"; + Text[ greek ] = "ÔéìÞ áíáöïñÜò"; + Text[ korean ] = "ÂüÁ¶ °ª"; + Text[ arabic ] = "ÞíãÉ ãÑÌÚíÉ"; + Text[ turkish ] = "Referans deðer"; + Text[ language_user1 ] = " "; +}; +String RID_STR_STRINGITEMLIST +{ + Text = "Listen-Einträge" ; + Text [ English ] = "StringItemList" ; + Text [ portuguese ] = "Registos de listas" ; + Text [ english_us ] = "List entries" ; + Text [ portuguese_brazilian ] = "Listen-Einträge" ; + Text [ swedish ] = "Listposter" ; + Text [ danish ] = "Liste-elementer" ; + Text [ italian ] = "Voci dell'elenco" ; + Text [ spanish ] = "Entradas de listas" ; + Text [ french ] = "Entrées de liste" ; + Text [ dutch ] = "Items in lijsten" ; + Text[ chinese_simplified ] = "ÁбíÌõÄ¿"; + Text[ russian ] = "Ýëåìåíòû ñïèñêà"; + Text[ polish ] = "Pozycje list"; + Text[ japanese ] = "ؽĂ̓ü—Í"; + Text[ chinese_traditional ] = "²M³æ¶µ¥Ø"; + Text[ greek ] = "ÅããñáöÝò ëéóôþí"; + Text[ korean ] = "¸ñ·Ï Ç׸ñ"; + Text[ arabic ] = "ÅÏÎÇáÇÊ ÇáÞÇÆãÉ"; + Text[ turkish ] = "Liste giriþleri"; + Text[ language_user1 ] = " "; +}; +String RID_STR_BUTTONTYPE +{ + Text = "Art der Schaltfläche" ; + Text [ English ] = "Button type" ; + Text [ portuguese ] = "Tipo de botão" ; + Text [ english_us ] = "Button type" ; + Text [ portuguese_brazilian ] = "Art des Buttons" ; + Text [ swedish ] = "Typ av kommandoknapp" ; + Text [ danish ] = "Knaptype" ; + Text [ italian ] = "Tipo di pulsante" ; + Text [ spanish ] = "Tipo de botón" ; + Text [ french ] = "Type de bouton" ; + Text [ dutch ] = "Soort knop" ; + Text[ chinese_simplified ] = "°´Å¥ÀàÐÍ"; + Text[ russian ] = "Òèï êíîïêè"; + Text[ polish ] = "Typ przycisku"; + Text[ japanese ] = "ÎÞÀÝ‚ÌŽí—Þ"; + Text[ chinese_traditional ] = "«ö¶sÃþ«¬"; + Text[ greek ] = "Ôýðïò ðåäßïõ åðéëïãÞò"; + Text[ korean ] = "¹öÆ° À¯Çü"; + Text[ arabic ] = "äæÚ ÇáãÝÊÇÍ"; + Text[ turkish ] = "Düðme türü"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SUBMIT_ACTION +{ + Text = "URL" ; + Text [ English ] = "URL" ; + Text [ portuguese ] = "URL" ; + Text [ english_us ] = "URL" ; + Text [ portuguese_brazilian ] = "Submit URL" ; + Text [ swedish ] = "URL" ; + Text [ danish ] = "URL" ; + Text [ italian ] = "URL" ; + Text [ spanish ] = "URL" ; + Text [ french ] = "URL" ; + Text [ dutch ] = "URL" ; + Text[ chinese_simplified ] = "URL"; + Text[ russian ] = "URL"; + Text[ polish ] = "URL"; + Text[ japanese ] = "URL"; + Text[ chinese_traditional ] = "URL"; + Text[ greek ] = "URL"; + Text[ korean ] = "URL"; + Text[ arabic ] = "URL"; + Text[ turkish ] = "URL"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SUBMIT_METHOD +{ + Text = "Art des Submits" ; + Text [ English ] = "Kind of submission" ; + Text [ portuguese ] = "Tipo de submissão" ; + Text [ english_us ] = "Type of submission" ; + Text [ portuguese_brazilian ] = "Art der Submission" ; + Text [ swedish ] = "Sändningstyp" ; + Text [ danish ] = "Fremsendelsestype" ; + Text [ italian ] = "Tipo di submission" ; + Text [ spanish ] = "Tipo de submit" ; + Text [ french ] = "Type d'envoi" ; + Text [ dutch ] = "Submissietype" ; + Text[ chinese_simplified ] = "Ìá½»µÄÀàÐÍ"; + Text[ russian ] = "Òèï ïåðåäà÷è"; + Text[ polish ] = "Rodzaj submitu"; + Text[ japanese ] = "’ño‚ÌŽí—Þ"; + Text[ chinese_traditional ] = "´£¥æªºÃþ«¬"; + Text[ greek ] = "Ôýðïò õðïâïëÞò"; + Text[ korean ] = "Àü¼Û À¯Çü"; + Text[ arabic ] = "äæÚ ÇáÅÑÓÇá"; + Text[ turkish ] = "Gönderme türü"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DEFAULT_CHECKED +{ + Text = "Standardstatus" ; + Text [ English ] = "Default checked" ; + Text [ portuguese ] = "Estado padrão" ; + Text [ english_us ] = "Default status" ; + Text [ portuguese_brazilian ] = "Default an" ; + Text [ swedish ] = "Standardstatus" ; + Text [ danish ] = "Standardstatus" ; + Text [ italian ] = "Default" ; + Text [ spanish ] = "Estado predeterminado" ; + Text [ french ] = "Statut par défaut" ; + Text [ dutch ] = "Standaardstatus" ; + Text[ chinese_simplified ] = "±ê׼״̬"; + Text[ russian ] = "Ñòàòóñ ïî óìîë÷àíèþ"; + Text[ polish ] = "Stan domyœlny"; + Text[ japanese ] = "•W€½Ã°À½"; + Text[ chinese_traditional ] = "¼Ð·Çª¬ºA"; + Text[ greek ] = "ÐñïåðéëåãìÝíç êáôÜóôáóç"; + Text[ korean ] = "±âº» »óÅÂ"; + Text[ arabic ] = "ÍÇáÉ ÇÝÊÑÇÖíÉ"; + Text[ turkish ] = "Standart durum"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SUBMIT_ENCODING +{ + Text = "Kodierung beim Submit" ; + Text [ English ] = "Encoding of submission" ; + Text [ portuguese ] = "Codificar submissão" ; + Text [ english_us ] = "Submission encoding" ; + Text [ portuguese_brazilian ] = "Kodierung der Submission" ; + Text [ swedish ] = "Kodning vid sändning" ; + Text [ danish ] = "Kodning ved fremsendelse" ; + Text [ italian ] = "Codifica all'invio" ; + Text [ spanish ] = "Codificar submit" ; + Text [ french ] = "Encodage de l'envoi" ; + Text [ dutch ] = "Codering bij de submissie" ; + Text[ chinese_simplified ] = "ÌύʱִÐбàÂë´¦Àí"; + Text[ russian ] = "Êîäèðîâàíèå ïðè ïåðåäà÷å"; + Text[ polish ] = "Kodowanie submitu"; + Text[ japanese ] = "’ño‚Ì۴ݺ°ÄÞ‚·‚é"; + Text[ chinese_traditional ] = "´£¥æ®É°õ¦æ½s½X³B²z"; + Text[ greek ] = "ÕðïâïëÞ êùäéêïðïßçóçò"; + Text[ korean ] = "Àü¼Û½Ã ÄÚµåÈ"; + Text[ arabic ] = "ÊÑãíÒ ÇáÅÑÓÇá"; + Text[ turkish ] = "Gönderme sýrasýnda kodlama"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DEFAULTVALUE +{ + Text = "Standardwert" ; + Text [ English ] = "Default value" ; + Text [ portuguese ] = "Valor padrão" ; + Text [ english_us ] = "Default value" ; + Text [ portuguese_brazilian ] = "Defaultwert" ; + Text [ swedish ] = "Standardvärde" ; + Text [ danish ] = "Standardværdi" ; + Text [ italian ] = "Valore standard" ; + Text [ spanish ] = "Valor predeterminado" ; + Text [ french ] = "Valeur par défaut" ; + Text [ dutch ] = "Standaardwaarde" ; + Text[ chinese_simplified ] = "ĬÈÏÖµ"; + Text[ russian ] = "Çíà÷åíèå ïî óìîë÷àíèþ"; + Text[ polish ] = "Wartoœæ domyœlna"; + Text[ japanese ] = "•W€’l"; + Text[ chinese_traditional ] = "Àq»{È"; + Text[ greek ] = "ÐñïåðéëåãìÝíç ôéìÞ"; + Text[ korean ] = "±âº»°ª"; + Text[ arabic ] = "ÞíãÉ ÇÝÊÑÇÖíÉ"; + Text[ turkish ] = "Standart deðer"; + Text[ language_user1 ] = " "; +}; +String RID_STR_SUBMIT_TARGET +{ + Text = "Frame" ; + Text [ English ] = "Target frame" ; + Text [ portuguese ] = "Moldura de destino" ; + Text [ english_us ] = "Target frame" ; + Text [ portuguese_brazilian ] = "Zielrahmen" ; + Text [ swedish ] = "Ram" ; + Text [ danish ] = "Frame" ; + Text [ italian ] = "Frame" ; + Text [ spanish ] = "Frame" ; + Text [ french ] = "Frame" ; + Text [ dutch ] = "Kader" ; + Text[ chinese_simplified ] = "¿ò¶ÔÏó"; + Text[ russian ] = "Êàäð"; + Text[ polish ] = "Frame"; + Text[ japanese ] = "ÌÚ°Ñ"; + Text[ chinese_traditional ] = "°T®Ø"; + Text[ greek ] = "Ðëáßóéï"; + Text[ korean ] = "ÇÁ·¹ÀÓ"; + Text[ arabic ] = "ÅØÇÑ"; + Text[ turkish ] = "Frame"; + Text[ language_user1 ] = " "; +}; +String RID_STR_BORDER_TYPE +{ + Text = "Ohne Rahmen;3D-Look;Flach" ; + Text [ English ] = "Transparence;3D-Look;Flat" ; + Text [ portuguese ] = "Sem moldura;3D-Look;Plano" ; + Text [ english_us ] = "Without frame;3D look;Flat" ; + Text [ portuguese_brazilian ] = "Transparent;3D-Look;Flach" ; + Text [ swedish ] = "Utan ram;3D-look;Platt" ; + Text [ danish ] = "Uden ramme;3D-look;Flad" ; + Text [ italian ] = "Senza cornice;3D;Piano" ; + Text [ spanish ] = "Sin marco;3D-Look;Plano" ; + Text [ french ] = "Sans cadre;tridimensionnel;plat" ; + Text [ dutch ] = "Zonder kader;3D-look;vlak" ; + Text[ chinese_simplified ] = "ÎÞ¿ò£»3 άÏÔʾ£»Æ½Ãæ"; + Text[ russian ] = "Áåç ðàìêè;3-Ì-Âèä;Ïëîñêèé"; + Text[ polish ] = "PrzeŸroczysty; Ustawienie 3-W; P³aski"; + Text[ japanese ] = "˜g‚È‚µ;3DŒ`Ž®;•½‚½‚¢"; + Text[ chinese_traditional ] = "µL®Ø¡F3 ºûÅã¥Ü¡F¥±"; + Text[ greek ] = "×ùñßò ðëáßóéï;ÅìöÜíéóç 3Ä;Åðßðåäï"; + Text[ korean ] = "ÇÁ·¹ÀÓ ¾øÀÌ;3D º¸±â;Æò¸é"; + Text[ arabic ] = "ÈÏæä ßÇÏÑ;ãÙåÑ ËáÇËí ÇáÃÈÚÇÏ; ãõÓØøÍ"; + Text[ turkish ] = "Çerçevesiz;3B görünüm;Düz"; + Text[ language_user1 ] = " "; +}; +String RID_STR_COMMAND_TYPE +{ + Text = "Tabelle;Abfrage;SQL-Befehl"; + Text [ English ] = "Table;Query;SQL command"; + Text [ english_us ] = "Table;Query;SQL command"; + Text[ portuguese ] = "Tabela;Consulta;Comando SQL"; + Text[ russian ] = "Òàáëèöà;Çàïðîñ;Êîìàíäà SQL"; + Text[ greek ] = "Ðßíáêáò;Åñþôçìá;ÅíôïëÞ SQL"; + Text[ dutch ] = "Tabel;Query;SQL-opdracht"; + Text[ french ] = "Table;Requête;Instruction SQL"; + Text[ spanish ] = "Tabla;consulta;comando SQL"; + Text[ italian ] = "Tabella;Ricerca;Comando SQL"; + Text[ danish ] = "Tabel;Forespørgsel;SQL-kommando"; + Text[ swedish ] = "Tabell;Sökning;SQL-kommando"; + Text[ polish ] = "Tabela;Kwerenda;Polecenie SQL"; + Text[ portuguese_brazilian ] = ";Query;Table;SQL command"; + Text[ japanese ] = "ðÌÞÙ;¸´Ø°;SQLºÏÝÄÞ"; + Text[ korean ] = "Å×À̺í;ÁúÀÇ;SQL ¸í·É"; + Text[ chinese_simplified ] = "±í¸ñ£»²éѯ£»SQL Ö¸Áî"; + Text[ chinese_traditional ] = "¬d¸ß;ªí³æ;SQL «ü¥O"; + Text[ arabic ] = "ÌÏæá;ÇÓÊÝÓÇÑ;ÃãÑ SQL"; + Text[ turkish ] = "Tablo;Sorgu;SQL komutu"; +}; +String RID_STR_LISTSOURCE_TYPE +{ + Text = "Werteliste;Tabelle;Abfrage;Sql;Sql [Native];Tabellenfelder" ; + Text [ English ] = "Valuelist;Table;Query;Sql;Sql [Native];Tablefields" ; + Text [ portuguese ] = "Lista de valores;Tabela; Consulta; Sql;Sql [Native];Campos de tabela" ; + Text [ english_us ] = "Valuelist;Table;Query;Sql;Sql [Native];Tablefields" ; + Text [ portuguese_brazilian ] = "Werteliste;Tabelle;Abfrage;Sql;Sql [Native];Tabellenfelder" ; + Text [ swedish ] = "Värdelista;Tabell;Sökning;Sql;Sql [Native];Tabellfält" ; + Text [ danish ] = "Værdiliste;Tabel;Forespørgsel;Sql;Sql [native];Tabelfelter" ; + Text [ italian ] = "Lista valori;Tabella;Ricerca;Sql;Sql [native];Campi tabella" ; + Text [ spanish ] = "Lista de valores;Tabla;Consulta;Sql;Sql [Native];Campos de tablas" ; + Text [ french ] = "Liste de valeurs;Table;Requête;Sql;Sql [Natif];Champs de table" ; + Text [ dutch ] = "Waardenlijst;Tabel;Query;Sql;Sql [Native];Tabelvelden" ; + Text[ chinese_simplified ] = "ÊýÖµÁе¥;±í¸ñ;²éѯ;Sql;Sql [Native];¹¤×÷±í×Ö¶Î"; + Text[ russian ] = "Ñïèñîê çíà÷åíèé;Òàáëèöà;Çàïðîñ;Sql;Sql [Native];Ïîëÿ òàáëèöû"; + Text[ polish ] = "Lista wartoœci;Tabela;Kwerenda;Sql;Sql [Native];Pola tabeli"; + Text[ japanese ] = "’lؽÄ;ðÌÞÙ;¸´Ø°;Sql;Sql [Native];ðÌÞŲ̀°ÙÄÞ"; + Text[ greek ] = "Ëßóôá ôéìþí;Ðßíáêáò;Åñþôçìá;Sql;Sql [Native];Ðåäßá ðéíÜêùí"; + Text[ korean ] = "°ª ¸ñ·Ï;Å×À̺í;ÁúÀÇ;Sql;Sql [Native];Å×À̺í Çʵå"; + Text[ chinese_traditional ] = "¼ÆȲM³æ;ªí®æ;¬d¸ß;Sql;Sql [Native];ªí®æÄæ¦ì"; + Text[ arabic ] = "ÞÇÆãÉ Þíã;ÌÏæá;ÇÓÊÝÓÇÑ;Sql;Sql [Native]ÍÞæá ÌÏæá"; + Text[ turkish ] = "Deðer listesi;Tablo;Sorgu;Sql;Sql [Native];Tablo alanlarý"; +}; +String RID_STR_ALIGNMENT +{ + Text = "Links;Zentriert;Rechts" ; + Text [ English ] = "Left;Center;Right" ; + Text [ portuguese ] = "Esquerda;Centrado;Direita" ; + Text [ english_us ] = "Left;Center;Right" ; + Text [ portuguese_brazilian ] = "Links;Zentriert;Rechts" ; + Text [ swedish ] = "Vänster;Centrerat;Höger" ; + Text [ danish ] = "Venstre;Centreret;Højre" ; + Text [ italian ] = "Sinistra;Centrato;Destra" ; + Text [ spanish ] = "Izquierda;Centrado;Derecha" ; + Text [ french ] = "Gauche;Centré;Droite" ; + Text [ dutch ] = "Links;Gecentreerd;Rechts" ; + Text[ chinese_simplified ] = "Ïò×ó£»¾ÓÖУ»ÏòÓÒ"; + Text[ russian ] = "Ñëåâà;Ïî öåíòðó;Ñïðàâà"; + Text[ polish ] = "Do lewej;Wyœrodkowany;Do prawej"; + Text[ japanese ] = "¶‚É;’†‰›‚É;‰E‚É"; + Text[ chinese_traditional ] = "¦V¥ª¡F¸m¤¤¡F¦V¥k"; + Text[ greek ] = "ÁñéóôåñÜ,ÊÝíôñï,ÄåîéÜ"; + Text[ korean ] = "¿ÞÂÊ;°¡¿îµ¥;¿À¸¥ÂÊ"; + Text[ arabic ] = "ÇáíÓÇÑ;ÊæÓíØ;Çáíãíä"; + Text[ turkish ] = "Sol;Orta;Sað"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENUM_BUTTONTYPE +{ + Text = "Push;Submit;Reset;Url" ; + Text [ English ] = "Push;Submit;Reset;Url" ; + Text [ portuguese ] = "Push;Submit;Reset;Url" ; + Text [ english_us ] = "Push;Submit;Reset;Url" ; + Text [ portuguese_brazilian ] = "Push;Submit;Reset;Url" ; + Text [ swedish ] = "Push;Submit;Reset;Url" ; + Text [ danish ] = "Push;Submit;Reset;Url" ; + Text [ italian ] = "Push;Submit;Reset;Url" ; + Text [ spanish ] = "Push;Submit;Reset;Url" ; + Text [ french ] = "Push;Submit;Reset;Url" ; + Text [ dutch ] = "Push;Submit;Reset;Url" ; + Text[ chinese_simplified ] = "Push;Submit;Reset;Url"; + Text[ russian ] = "Push;Submit;Reset;Url"; + Text[ polish ] = "Push;Submit;Reset;Url"; + Text[ japanese ] = "Push;Submit;Reset;Url"; + Text[ chinese_traditional ] = "Push;Submit;Reset;Url"; + Text[ greek ] = "Push;Submit;Reset;Url"; + Text[ korean ] = "Push;Submit;Reset;Url"; + Text[ arabic ] = "Push;Submit;Reset;Url"; + Text[ turkish ] = "Push;Submit;Reset;Url"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENUM_SUBMIT_METHOD +{ + Text = "Get;Post" ; + Text [ English ] = "Get;Post" ; + Text [ portuguese ] = "Get;Post" ; + Text [ english_us ] = "Get;Post" ; + Text [ portuguese_brazilian ] = "Get;Post" ; + Text [ swedish ] = "Get;Post" ; + Text [ danish ] = "Get;Post" ; + Text [ italian ] = "Get;Post" ; + Text [ spanish ] = "Get;Post" ; + Text [ french ] = "Get;Post" ; + Text [ dutch ] = "Get;Post" ; + Text[ chinese_simplified ] = "ÊÕÈ¡;¼Ä·¢"; + Text[ russian ] = "Get;Post"; + Text[ polish ] = "Get;Post"; + Text[ japanese ] = "Get;Post"; + Text[ chinese_traditional ] = "¦¬¨ú;µo°e"; + Text[ greek ] = "Get;Post"; + Text[ korean ] = "Get;Post"; + Text[ arabic ] = "Get;Post"; + Text[ turkish ] = "Get;Post"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENUM_SUBMIT_ENCODING +{ + Text = "URL;Multipart;Text" ; + Text [ English ] = "URL;Multipart;Text" ; + Text [ portuguese ] = "URL;Multipart;Texto" ; + Text [ english_us ] = "URL;Multipart;Text" ; + Text [ portuguese_brazilian ] = "URL;Multipart" ; + Text [ swedish ] = "URL;Multipart;Text" ; + Text [ danish ] = "URL;Multipart;Tekst" ; + Text [ italian ] = "URL;Multipart;Testo" ; + Text [ spanish ] = "URL;Multipart;Texto" ; + Text [ french ] = "URL;Multipart;Texte" ; + Text [ dutch ] = "URL;Multipart;Tekst" ; + Text[ chinese_simplified ] = "URL;Multipart;Text" ; + Text[ russian ] = "URL;Multipart;Òåêñò"; + Text[ polish ] = "URL;Multipart;Tekst" ; + Text[ japanese ] = "URL;Multipart;Text" ; + Text[ chinese_traditional ] = "URL;Multipart;Text" ; + Text[ greek ] = "URL;Multipart;Êåßìåíï" ; + Text[ korean ] = "URL;Multipart;ÅؽºÆ®" ; + Text[ arabic ] = "URL;Multipart;Text" ; + Text[ turkish ] = "URL;Multipart;Metin"; + Text[ language_user1 ] = " "; +}; +String RID_STR_DATEFORMAT_LIST +{ + Text = "Standard (kurz);Standard (kurz JJ);Standard (kurz JJJJ);Standard (lang);TT.MM.JJ;MM.TT.JJ;JJ.MM.TT;TT.MM.JJJJ;MM.TT.JJJJ;JJJJ.MM.TT;JJ-MM-TT (DIN5008);JJJJ-MM-TT (DIN5008)" ; + Text [ English ] = "Standard (short);Standard (short YY);Standard (short YYYY);Standard (long);DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)" ; + Text [ portuguese ] = "Standard (curto);Standard (curto AA);Standard (curto AAAA);Standard (longo);DD.MM.AA;MM.DD.AA;AA.MM.DD;DD.MM.AAAA;MM.DD.AAAA;AAAA.MM.DD;AA-MM-DD (DIN5008);AAAA-MM-DD (DIN5008)" ; + Text [ english_us ] = "Standard (short);Standard (short YY);Standard (short YYYY);Standard (long);DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)" ; + Text [ portuguese_brazilian ] = "Standard (kurz);Standard (kurz JJ);Standard (kurz JJJJ);Standard (lang);TT.MM.JJ;MM.TT.JJ;JJ.MM.TT;TT.MM.JJJJ;MM.TT.JJJJ;JJJJ.MM.TT;JJ-MM-TT (DIN5008);JJJJ-MM-TT (DIN5008)" ; + Text [ swedish ] = "Standard (kort);Standard (kort ÅÅ);Standard (kort ÅÅÅÅ);Standard (lång);DD.MM.ÅÅ;MM.DD.ÅÅ;ÅÅ.MM.DD;DD.MM.ÅÅÅÅ;MM.DD.ÅÅÅÅ;ÅÅÅÅ.MM.DD;ÅÅ-MM-DD (DIN5008);ÅÅÅÅ-MM-DD (DIN5008)" ; + Text [ danish ] = "Standard (kort);Standard (kort ÅÅ);Standard (kort ÅÅÅÅ);Standard (lang);DD.MM.ÅÅ;MM.DD.ÅÅ;ÅÅ.MM.DD;DD.MM.ÅÅÅÅ;MM.DD.ÅÅÅÅ;ÅÅÅÅ.MM.DD;ÅÅ-MM-DD (DIN5008);ÅÅÅÅ-MM-DD (DIN5008)" ; + Text [ italian ] = "Standard (breve);Standard (breve AA);Standard (breve AAAA);Standard (lungo);GG.MM.AA;MM.GG.AA;AA.MM.GG;GG.MM.AAAA;MM.GG.AAAA;AAAA.MM.GG;AA-MM-GG (DIN5008);AAAA-MM-GG (DIN5008)" ; + Text [ spanish ] = "Estándar (breve);Estándar (breve JJ);Estándar (breve JJJJ);Estándar (largo);DD.MM.AA;MM.DD.AA;AA.MM.DD;DD.MM.AAAA;MM.DD.AAAA;AAAA.MM.DD;AA-MM-DD (DIN5008);JJJJ-MM-TT (DIN5008)" ; + Text [ french ] = "Standard (court);Standard (court AA);Standard (court AAAA);Standard (long);JJ.MM.AA;MM.JJ.AA;AA.MM.JJ;JJ.MM.AAAA;MM.JJ.AAAA;.AAAAMM.JJ;AA-MM-JJ (DIN5008);AAAA-MM-JJ (DIN5008)" ; + Text [ dutch ] = "Standaard (kort);Standaard (kort JJ);Standaard (kort JJJJ);Standaard (lang);TT.MM.JJ;MM.TT.JJ;JJ.MM.TT;TT.MM.JJJJ;MM.TT.JJJJ;JJJJ.MM.TT;JJ-MM-TT;JJJJ-MM-TT" ; + Text[ chinese_simplified ] = "±ê×¼(Ëõд);±ê×¼(Ëõд JJ);±ê×¼(Ëõд JJJJ);±ê×¼ (ÍêÕû);DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)"; + Text[ russian ] = "Ñòàíäàðò (êðàòêèé);Ñòàíäàðò (êðàòêèé ÃÃ); (êðàòêèé ÃÃÃÃ);Ñòàíäàðò (ïîëíûé);ÄÄ.MM.ÃÃ;MM.ÄÄ.ÃÃ;ÃÃ.MM.ÄÄ;ÄÄ.ÌÌ.ÃÃÃÃ;ÃÃÃÃ.ÌÌ.ÄÄ;ÃÃ-ÌÌ-ÄÄ (DIN5008);ÃÃÃÃ-MM-ÄÄ (DIN5008)"; + Text[ polish ] = "Standardowy (krótki);Standardowy (krótki JJ);Standardowy (krótki JJJJ);Standardowy (d³ugi);TT.MM.JJ;MM.TT.JJ;JJ.MM.TT;TT.MM.JJJJ;MM.TT.JJJJ;JJJJ.MM.TT;JJ-MM-TT (DIN5008);JJJJ-MM-TT (DIN5008)"; + Text[ japanese ] = "•W€(’Z‚¢);•W€(’Z‚¢ YY);•W€(’Z‚¢ YYYY);•W€(’·‚¢j;DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)"; + Text[ chinese_traditional ] = "¼Ð·Ç(ÁY¼g);¼Ð·Ç(ÁY¼g JJ);¼Ð·Ç(ÁY¼g JJJJ);¼Ð·Ç(§¹¾ã);DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)"; + Text[ greek ] = "ÐñïåðéëïãÞ (óýíôïìï);ÐñïåðéëïãÞ (óýíôïìï YY);ÐñïåðéëïãÞ (óýíôïìï YYYY);ÐñïåðéëïãÞ (ìáêñý);DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)"; + Text[ korean ] = "Ç¥ÁØ(ª°Ô);Ç¥ÁØ(ª°ÔYY);Ç¥ÁØ(ª°ÔYYYY);Ç¥ÁØ(±æ°Ô);DD.MM.YY;MM.DD.YY;YY.MM.DD;DD.MM.YYYY;MM.DD.YYYY;YYYY.MM.DD;YY-MM-DD (DIN5008);YYYY-MM-DD (DIN5008)"; + Text[ arabic ] = "ÞíÇÓí (ÞÕíÑ)ºÞíÇÓí (ÞÕíÑ YY)ºÞíÇÓí (ÞÕíÑ YYY)ºÞíÇÓí (Øæíá)ºDD.MM.YYºMM.DD.YYºYY.MM.DDºDD.MM.YYYYºMM.DD.YYYYºYYYY.MM.DDºYY-MM-DD (DIN5008)ºYYYY-MM-DD (DIN5008)"; + Text[ turkish ] = "Standart (kýsa);Standart (kýsa YY);Standart (kýsa YYYY);Standart (uzun);GG.AA.YY;AA.GG.YY;YY.AA.GG;GG.AA.YYYY;AA.GG.YYYY;YYYY.AA.GG;YY-AA-GG (DIN5008);YYYY-AA-GG (DIN5008)"; + Text[ language_user1 ] = " "; +}; +String RID_STR_TIMEFORMAT_LIST +{ + Text = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ English ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ portuguese ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ english_us ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ portuguese_brazilian ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ swedish ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ danish ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ italian ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ spanish ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ french ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text [ dutch ] = "13:45;13:45:00;01:45 PM;01:45:00 PM" ; + Text[ chinese_simplified ] = "13:45;13:45:00;01:45 ÏÂÎç;01:45:00 ÏÂÎç"; + Text[ russian ] = "13:45;13:45:00;01:45 PM;01:45:00 PM"; + Text[ polish ] = "13:45;13:45:00;01:45 PM;01:45:00 PM"; + Text[ japanese ] = "13:45;13:45:00;01:45 PM;01:45:00 PM"; + Text[ chinese_traditional ] = "13:45;13:45:00;01:45 ¤U¤È;01:45:00 ¤U¤È"; + Text[ greek ] = "13:45;13:45:00;01:45 PM;01:45:00 PM"; + Text[ korean ] = "13:45;13:45:00;01:45 PM;01:45:00 PM"; + Text[ arabic ] = "{\\rtf1\\ansi\\deff0\\deftab720{\\fonttbl{\\f0\\fnil MS Sans Serif;}{\\f1\\froman\\fcharset2{\\*\\fname Symbol;}MT Symbol;}{\\f2\\fbidi\\fswiss\\fcharset178 MS Sans Serif;}{\\f3\\fswiss MS Sans Serif;}{\\f4\\fbidi\\fswiss\\fcharset178 MS Sans Serif;}}{\\colortbl\\red0\\green0\\blue0;}\\deflang1025\\pard\\rtlpar\\qr\\plain\\ltrch\\lang1031\\f0\\fs16 13:45;13:45:00;01:45\'b7PM;01:45:00\'b7PM\\plain\\ltrch\\lang1031\\f2\\fs16 \\par }"; + Text[ turkish ] = "13:45;13:45:00;01:45 PM;01:45:00 PM"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENUM_CHECKED +{ + Text = "Nicht ausgewählt;Ausgewählt;Unbestimmt" ; + Text [ English ] = "No;Yes;Unassigned" ; + Text [ portuguese ] = "Não seleccionado;Seleccionado;Indefinido" ; + Text [ english_us ] = "Not Selected;Selected;Not Defined" ; + Text [ portuguese_brazilian ] = "Nein;Ja;Unbestimmt" ; + Text [ swedish ] = "Ej utvalt;Utvalt;Obestämd" ; + Text [ danish ] = "Ikke valgt;Valgt;Udefineret" ; + Text [ italian ] = "Non selezionato;Selezionato;Indefinito" ; + Text [ spanish ] = "No seleccionado;Seleccionado;Indeterminado" ; + Text [ french ] = "Non sélectionné;Sélectionné;Indéterminé" ; + Text [ dutch ] = "Niet geselecteerd;Wel geselecteerd;Onbepaald" ; + Text[ chinese_simplified ] = "ûÓÐÑ¡Ôñ;ÒÑÑ¡Ôñ;䶨"; + Text[ russian ] = "Íå âûáðàíî;Âûáðàíî;Íåîïðåäåëåíî"; + Text[ polish ] = "Nie wybrany; Wybrany;Nieokreœlony"; + Text[ japanese ] = "‘I‘ð‚³‚ê‚Ä‚¢‚È‚¢;‘I‘ð‚³‚ê‚½;•s’è"; + Text[ chinese_traditional ] = "¨S¦³¿ï¾Ü;¤w¿ï¾Ü;¥¼©w"; + Text[ greek ] = "Ìç åðéëåãìÝíá;ÅðéëåãìÝíá;Ìç ïñéóìÝíï"; + Text[ korean ] = "¼±ÅõÇÁö ¾ÊÀ½;¼±ÅõÊ;ÁöÁ¤µÇÁö ¾ÊÀ½"; + Text[ arabic ] = "ÛíÑ ãÍÏϺãÍÏϺÛíÑ ãÚÑÝ"; + Text[ turkish ] = "Seçilmedi;Seçildi;Belirsiz"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENUM_CYCLE +{ + Text = "Alle Datensätze;Aktueller Datensatz;Aktuelle Seite" ; + Text [ ENGLISH ] = "All records;Activ record;Activ page" ; + Text [ english_us ] = "All records;Active record;Current page" ; + Text[ portuguese ] = "Registos todos;Registo actual;Página actual"; + Text[ russian ] = "Âñå çàïèñè;Òåêóùèå çàïèñè;Òåêóùàÿ ñòðàíèöà"; + Text[ dutch ] = "Alle records;Actueel record;Actuele pagina"; + Text[ french ] = "Tous les enregistrements ; l'enregistrement actuel ; la page actuelle"; + Text[ spanish ] = "Todos los registros de datos;Registro actual;Página actual"; + Text[ italian ] = "Tutti i record di dati;record di dati attuale;pagina attuale"; + Text[ danish ] = "Alle dataposter;Aktuel datapost;Aktuel side"; + Text[ swedish ] = "Alla dataposter;Aktuell datapost;Aktuell sida"; + Text[ polish ] = "Wszystkie rekordy;aktualny rekord, aktualna strona"; + Text[ portuguese_brazilian ] = "Alle Datensätze;Aktueller Datensatz"; + Text[ japanese ] = "‚·‚ׂĂÌÚº°ÄÞ;Œ»Ý‚ÌÚº°ÄÞ;Œ»Ý‚ÌÍß°¼Þ"; + Text[ chinese_simplified ] = "ËùÓеÄÊý¾ÝÌõÄ¿;µ±Ç°µÄÊý¾ÝÌõÄ¿;µ±Ç°Ò³Ãæ"; + Text[ chinese_traditional ] = "©Ò¦³ªº¸ê®Æ¶µ¥Ø;·í«eªº¸ê®Æ¶µ¥Ø;·í«e¶±"; + Text[ greek ] = "¼ëåò ïé åããñáöÝò;ÔñÝ÷ïõóåò åããñáöÝò;ÔñÝ÷ïõóá óåëßäá"; + Text[ korean ] = "¸ðµç ·¹ÄÚµå;È°¼º ·¹ÄÚµå;ÇöÀç ÆäÀÌÁö"; + Text[ arabic ] = "ßá ÇáÓÌáÇÊ;ÇáÓÌá ÇáÍÇáí;ÇáÕÝÍÉ ÇáÍÇáíÉ"; + Text[ turkish ] = "Tüm veri kümeleri;Yürürlükteki veri kümesi;Yürürlükteki sayfa"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ENUM_NAVIGATION +{ + Text = "Nein;Ja;Übergeordnetes Formular" ; + Text [ ENGLISH ] = "No;Yes;Parent"; + Text [ english_us ] = "No;Yes;Parent Form"; + Text[ italian ] = "No;Si;Formulario superiore"; + Text[ portuguese_brazilian ] = "No;Yes;Parent"; + Text[ portuguese ] = "Não; Sim;Formulário superior"; + Text[ danish ] = "Nei;Ja;Overordnet formular"; + Text[ french ] = "Non;Oui;Formulaire parent"; + Text[ swedish ] = "Nej;Ja;Överordnat formulär"; + Text[ dutch ] = "Nee;ja;Bovenliggend formulier"; + Text[ spanish ] = "No;Sí;Formulario superior"; + Text[ chinese_simplified ] = "·ñ;ÊÇ;ĸ±íµ¥"; + Text[ russian ] = "Íåò;Äà;Âûøåñòîÿùèé ôîðìóëÿð"; + Text[ polish ] = "Nie;Tak;Nadrzêdny formularz"; + Text[ japanese ] = "‚¢‚¢‚¦;‚Í‚¢;ãˆÊ‚ÌŒ`Ž®"; + Text[ chinese_traditional ] = "§_;¬O;¥Àªí³æ"; + Text[ greek ] = "¼÷é;Íáé;Áíþôåñç öüñìá"; + Text[ korean ] = "¾Æ´Ï¿À;¿¹;»óÀ§ Æû"; + Text[ arabic ] = "áǺäÚãºÇáÇÓÊãÇÑÉ ÇáÃÕá"; + Text[ turkish ] = "Hayýr;Evet;Üst düzey form"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_APPROVEPARAMETER +{ + Text = "Parameter füllen" ; + Text [ English ] = "Fill parameters" ; + Text [ english_us ] = "Fill parameters" ; + Text[ portuguese ] = "Preencher parâmetros"; + Text[ russian ] = "Çàïîëíèòü ïàðàìåòðû"; + Text[ greek ] = "ÐáñÜìåôñïé ãåìßóìáôïò"; + Text[ dutch ] = "Parameter vullen"; + Text[ french ] = "Remplir les paramètres"; + Text[ spanish ] = "Rellenar parámetros"; + Text[ italian ] = "Compila parametri"; + Text[ danish ] = "Fyld parametre"; + Text[ swedish ] = "Fyll parametrar"; + Text[ polish ] = "Wype³nij parametry"; + Text[ portuguese_brazilian ] = "Fill parameters"; + Text[ japanese ] = "Êß×Ò°À‚Ì‘}“ü"; + Text[ korean ] = "ÆĶó¹ÌÅÍ Ã¤¿ì±â"; + Text[ chinese_simplified ] = "ÌîÈë²ÎÊý"; + Text[ chinese_traditional ] = "¶ñ¤J§UÅܶq"; + Text[ arabic ] = "ÊÚÈÆÉ ÇáãÚáãÇÊ"; + Text[ turkish ] = "Parametreleri doldur"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_ACTIONPERFORMED +{ + Text = "Beim Auslösen" ; + Text [ English ] = "on click" ; + Text [ portuguese ] = "Ao iniciar" ; + Text [ english_us ] = "When initiating" ; + Text [ portuguese_brazilian ] = "Aktion ausgelöst" ; + Text [ swedish ] = "Vid utförande" ; + Text [ danish ] = "Under udførelse" ; + Text [ italian ] = "Durante l'esecuzione" ; + Text [ spanish ] = "Al ejecutar" ; + Text [ french ] = "Lors du déclenchement" ; + Text [ dutch ] = "Bij het oproepen" ; + Text[ chinese_simplified ] = "ÔÚÖ´ÐвÙ×÷ʱ"; + Text[ russian ] = "Âî âðåìÿ âûïîëíåíèÿ"; + Text[ polish ] = "Podczas wykonywania"; + Text[ japanese ] = "ì“®‚ÌÛ"; + Text[ chinese_traditional ] = "¦b¾Þ§@®É"; + Text[ greek ] = "ÊáôÜ ôçí åêôÝëåóç"; + Text[ korean ] = "½ÇÇàÇÒ ¶§"; + Text[ arabic ] = "ÚäÏ ÇáÊäÝíÐ"; + Text[ turkish ] = "Baþlatma sýrasýnda"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_AFTERUPDATE +{ + Text = "Nach dem Aktualisieren" ; + Text [ English ] = "After update" ; + Text [ portuguese ] = "Depois de actualizar" ; + Text [ english_us ] = "After update" ; + Text [ portuguese_brazilian ] = "Nach dem Aktualisieren" ; + Text [ swedish ] = "Efter uppdatering" ; + Text [ danish ] = "Efter opdatering" ; + Text [ italian ] = "Ad aggiornamento avvenuto" ; + Text [ spanish ] = "Después de actualizar" ; + Text [ french ] = "Après l'actualisation" ; + Text [ dutch ] = "Na het actualiseren" ; + Text[ chinese_simplified ] = "¸üÐÂÖ®ºó"; + Text[ russian ] = "Ïîñëå îáíîâëåíèÿ"; + Text[ polish ] = "Po aktualizacji"; + Text[ japanese ] = "XV‚ÌŒã"; + Text[ chinese_traditional ] = "§ó·s¤§«á"; + Text[ greek ] = "ÌåôÜ ôçí åíçìÝñùóç"; + Text[ korean ] = "¾÷µ¥ÀÌÆ®ÇÑ ÈÄ"; + Text[ arabic ] = "ÈÚÏ ÇáÊÍÏíË"; + Text[ turkish ] = "Güncellemeden sonra"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_BEFOREUPDATE +{ + Text = "Vor dem Aktualisieren" ; + Text [ English ] = "Before update" ; + Text [ portuguese ] = "Antes de actualizar" ; + Text [ english_us ] = "Before update" ; + Text [ portuguese_brazilian ] = "Vor dem Aktualisieren" ; + Text [ swedish ] = "Innan uppdatering" ; + Text [ danish ] = "Inden opdatering" ; + Text [ italian ] = "Prima di aggiornare" ; + Text [ spanish ] = "Antes de actualizar" ; + Text [ french ] = "Avant l'actualisation" ; + Text [ dutch ] = "Voor het actualiseren" ; + Text[ chinese_simplified ] = "ÔÚ¸üÐÂ֮ǰ"; + Text[ russian ] = "Ïåðåä îáíîâëåíèåì"; + Text[ polish ] = "Przed aktualizacj¹"; + Text[ japanese ] = "XV‚Ì‘O"; + Text[ chinese_traditional ] = "¦b§ó·s¤§«e"; + Text[ greek ] = "Ðñéí ôçí åíçìÝñùóç"; + Text[ korean ] = "¾÷µ¥ÀÌÆ®Çϱâ Àü"; + Text[ arabic ] = "ÞÈá ÇáÊÍÏíË"; + Text[ turkish ] = "Güncellemeden önce"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_APPROVEROWCHANGE +{ + Text = "Vor der Datensatzänderung" ; + Text [ English ] = "Before row change" ; + Text [ english_us ] = "Before record change" ; + Text[ portuguese ] = "Antes de modificar registo de dados"; + Text[ russian ] = "Ïåðåä èçìåíåíèåì äàííûõ"; + Text[ greek ] = "Ðñéí ôçí áëëáãÞ ôçò åããñáöÞò"; + Text[ dutch ] = "Voor het veranderen van de record"; + Text[ french ] = "Avant la modification de l'enregistrement"; + Text[ spanish ] = "Antes de la modificación del registro de datos"; + Text[ italian ] = "Prima la modifica dei record di dati"; + Text[ danish ] = "Inden datapostændring"; + Text[ swedish ] = "Innan datapoständring"; + Text[ polish ] = "Przed zmian¹ rekordów"; + Text[ portuguese_brazilian ] = "Before row change"; + Text[ japanese ] = "Úº°ÄÞ•ÏX‚Ì‘O"; + Text[ korean ] = "µ¥ÀÌÅÍ ·¹ÄÚµå º¯°æ Àü¿¡"; + Text[ chinese_simplified ] = "¸ü¸ÄÊý¾ÝÌõĿ֮ǰ"; + Text[ chinese_traditional ] = "¸ê®Æ±ø¥ØÅܧ󤧫e"; + Text[ arabic ] = "ÞÈá ÊÛííÑ ÇáÓÌá"; + Text[ turkish ] = "Veri kümesi deðiþikliðinden önce"; +}; +String RID_STR_EVT_ROWCHANGE +{ + Text = "Nach der Datensatzänderung" ; + Text [ English ] = "After row change" ; + Text [ english_us ] = "After record change" ; + Text[ portuguese ] = "Depois de modificar registo de dados"; + Text[ russian ] = "Ïîñëå èçìåíåíèÿ äàííûõ"; + Text[ greek ] = "ÌåôÜ ôçí áëëáãÞ ôçò åããñáöÞò"; + Text[ dutch ] = "Na het veranderen van de record"; + Text[ french ] = "Après la modification de l'enregistrement"; + Text[ spanish ] = "Después de la modificación del registro de datos"; + Text[ italian ] = "Dopo la modifica dei record di dati"; + Text[ danish ] = "Efter datapostændring"; + Text[ swedish ] = "Efter datapoständring"; + Text[ polish ] = "Po zmianie rekordów"; + Text[ portuguese_brazilian ] = "After row change"; + Text[ japanese ] = "Úº°ÄÞ•ÏX‚ÌŒã"; + Text[ korean ] = "µ¥ÀÌÅÍ ·¹ÄÚµå º¯°æ ÈÄ¿¡"; + Text[ chinese_simplified ] = "¸ü¸ÄÊý¾ÝÌõÄ¿Ö®ºó"; + Text[ chinese_traditional ] = "¸ê®Æ±ø¥ØÅܧ󤧫á"; + Text[ arabic ] = "ÈÚÏ ÊÛííÑ ÇáÓÌá"; + Text[ turkish ] = "Veri kümesi deðiþikliðinden sonra"; +}; +String RID_STR_EVT_CONFIRMDELETE +{ + Text = "Löschen bestätigen" ; + Text [ English ] = "Confirm delete" ; + Text [ portuguese ] = "Confirmar eliminar" ; + Text [ english_us ] = "Confirm delete" ; + Text [ portuguese_brazilian ] = "Löschen bestätigen" ; + Text [ swedish ] = "Bekräfta radering" ; + Text [ danish ] = "Bekræft sletning" ; + Text [ italian ] = "Conferma 'Elimina'" ; + Text [ spanish ] = "Confirmar eliminación" ; + Text [ french ] = "Confirmation de suppression" ; + Text [ dutch ] = "Wissen bevestigen" ; + Text[ chinese_simplified ] = "È·¶¨É¾³ý"; + Text[ russian ] = "Ïîäòâåðäèòü óäàëåíèå"; + Text[ polish ] = "PotwierdŸ usuniêcie"; + Text[ japanese ] = "휂̊m”F"; + Text[ chinese_traditional ] = "½T©w§R°£"; + Text[ greek ] = "Åðéâåâáßùóç äéáãñáöÞò"; + Text[ korean ] = "»èÁ¦ È®ÀÎ"; + Text[ arabic ] = "ÊÃßíÏ ÇáÍÐÝ"; + Text[ turkish ] = "Silme iþlemini onayla"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_ERROROCCURED +{ + Text = "Fehler aufgetreten" ; + Text [ English ] = "Error occured" ; + Text [ portuguese ] = "Surgiu erro" ; + Text [ english_us ] = "Error occurred" ; + Text [ portuguese_brazilian ] = "Fehler aufgetreten" ; + Text [ swedish ] = "Fel har uppstått" ; + Text [ danish ] = "Der opstod en fejl" ; + Text [ italian ] = "Si è verificato un errore" ; + Text [ spanish ] = "Ha ocurrido un error" ; + Text [ french ] = "Erreur survenue" ; + Text [ dutch ] = "Fout opgetreden" ; + Text[ chinese_simplified ] = "·¢ÉúÒ»¸ö´íÎó"; + Text[ russian ] = "Ïðîèçîøëà îøèáêà"; + Text[ polish ] = "Wyst¹pi³ b³¹d"; + Text[ japanese ] = "´×°‚Ì”¶"; + Text[ chinese_traditional ] = "µo¥Í¤@Ó¿ù»~"; + Text[ greek ] = "ÐáñïõóéÜóôçêå óöÜëìá"; + Text[ korean ] = "¿À·ù ¹ß»ý"; + Text[ arabic ] = "ÍÏË ÎØÃ"; + Text[ turkish ] = "Hata oluþtu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_FOCUSGAINED +{ + Text = "Bei Fokuserhalt" ; + Text [ English ] = "Focus gained" ; + Text [ portuguese ] = "Ao receber foco" ; + Text [ english_us ] = "Focus gained" ; + Text [ portuguese_brazilian ] = "Bei Fokuserhalt" ; + Text [ swedish ] = "Vid fokusering" ; + Text [ danish ] = "Ved fokusopretholdelse" ; + Text [ italian ] = "Raggiungimento del punto focale" ; + Text [ spanish ] = "Recepción de foco" ; + Text [ french ] = "Réception de focus" ; + Text [ dutch ] = "Indien focus bereikt" ; + Text[ chinese_simplified ] = "ÔÚÃé׼ʱ"; + Text[ russian ] = "Ïðè ïîëó÷åíèè ôîêóñà"; + Text[ polish ] = "Przy otrzymaniu ogniska"; + Text[ japanese ] = "Ì«°¶½‚𓾂½Û"; + Text[ chinese_traditional ] = "¦bºË·Ç®É"; + Text[ greek ] = "Óå ðåñßðôùóç åóôßáóçò"; + Text[ korean ] = "ÃÊÁ¡À» ¸ÂÃèÀ» ¶§"; + Text[ arabic ] = "ÇáÍÕæá Úáì ÇáÊÑßíÒ"; + Text[ turkish ] = "Odaklandý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_FOCUSLOST +{ + Text = "Bei Fokusverlust" ; + Text [ English ] = "Focus lost" ; + Text [ portuguese ] = "Ao perder foco" ; + Text [ english_us ] = "Focus lost" ; + Text [ portuguese_brazilian ] = "Bei Fokusverlust" ; + Text [ swedish ] = "Vid fokusförlust" ; + Text [ danish ] = "Ved fokustab" ; + Text [ italian ] = "Perdita del punto focale" ; + Text [ spanish ] = "Pérdida de foco" ; + Text [ french ] = "Perte de focus" ; + Text [ dutch ] = "Bij focusverlies" ; + Text[ chinese_simplified ] = "ÔÚÆ«ÀëÄ¿±êʱ"; + Text[ russian ] = "Ïðè ïîòåðå ôîêóñà"; + Text[ polish ] = "Przy utracie ogniska"; + Text[ japanese ] = "Ì«°¶½‚ðŽ¸‚Á‚½Û"; + Text[ chinese_traditional ] = "¦b°¾Â÷¥Ø¼Ð®É"; + Text[ greek ] = "Óôçí ðåñßðôùóç áðþëåéáò åóôßáò"; + Text[ korean ] = "ÃÊÁ¡À» ÀÒ¾úÀ» ¶§"; + Text[ arabic ] = "ÝÞÏÇä ÇáÊÑßíÒ"; + Text[ turkish ] = "Odak kayboldu"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_ITEMSTATECHANGED +{ + Text = "Status geändert" ; + Text [ English ] = "Item state changed" ; + Text [ portuguese ] = "Estado modificado" ; + Text [ english_us ] = "Item status changed" ; + Text [ portuguese_brazilian ] = "Status geändert" ; + Text [ swedish ] = "Status ändrad" ; + Text [ danish ] = "Status ændret" ; + Text [ italian ] = "Stato modificato" ; + Text [ spanish ] = "Estado modificado" ; + Text [ french ] = "Statut modifié" ; + Text [ dutch ] = "Status gewijzigd" ; + Text[ chinese_simplified ] = "״̬ÒѾ¸ü¸Ä"; + Text[ russian ] = "Ñîñòîÿíèå èçìåíåíî"; + Text[ polish ] = "Zmieniony stan"; + Text[ japanese ] = "½Ã°À½‚Ì•ÏX"; + Text[ chinese_traditional ] = "ª¬ºA¤w¸gÅܧó"; + Text[ greek ] = "ÊáôÜóôáóç ôñïðïðïéÞèçêå"; + Text[ korean ] = "»óÅ º¯°æ"; + Text[ arabic ] = "Êã ÊÛííÑ ÇáÍÇáÉ"; + Text[ turkish ] = "Durum deðiþtirildi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_KEYTYPED +{ + Text = "Taste gedrückt" ; + Text [ English ] = "Key typed" ; + Text [ portuguese ] = "Tecla premida" ; + Text [ english_us ] = "Key typed" ; + Text [ portuguese_brazilian ] = "Nach Tastendruck" ; + Text [ swedish ] = "Tangent tryckt" ; + Text [ danish ] = "Knap trykket" ; + Text [ italian ] = "Tasto premuto" ; + Text [ spanish ] = "Tecla pulsada" ; + Text [ french ] = "Touche enfoncée" ; + Text [ dutch ] = "Met ingedrukte toets" ; + Text[ chinese_simplified ] = "°´×¡°´¼ü"; + Text[ russian ] = "Êëàâèøà íàæàòà"; + Text[ polish ] = "Wciœniêty przycisk"; + Text[ japanese ] = "·°‚ð‰Ÿ‚·"; + Text[ chinese_traditional ] = "«ö¦í«öÁä"; + Text[ greek ] = "ÐëÞêôñï ðáôçìÝíï"; + Text[ korean ] = "Å° ´©¸§"; + Text[ arabic ] = "ÇáÖÛØ Úáì ÒÑ"; + Text[ turkish ] = "Tuþ basýlý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_KEYUP +{ + Text = "Taste losgelassen" ; + Text [ English ] = "Key up" ; + Text [ portuguese ] = "Depois de premir tecla" ; + Text [ english_us ] = "Key released" ; + Text [ portuguese_brazilian ] = "Nach Tastendruck" ; + Text [ swedish ] = "Efter tangenttryck" ; + Text [ danish ] = "Knap sluppet" ; + Text [ italian ] = "Dopo aver premuto il tasto" ; + Text [ spanish ] = "Tecla soltada" ; + Text [ french ] = "Après avoir lâché la touche" ; + Text [ dutch ] = "Toets losgelaten" ; + Text[ chinese_simplified ] = "·Å¿ª°´¼ü"; + Text[ russian ] = "Îòïóùåííàÿ êëàâèøà"; + Text[ polish ] = "Zwolniony przycisk"; + Text[ japanese ] = "·°‚̉ðœ"; + Text[ chinese_traditional ] = "©ñ¶}«öÁä"; + Text[ greek ] = "ÐëÞêôñï áðåëåõèåñùìÝíï"; + Text[ korean ] = "Å° ³õÀ½"; + Text[ arabic ] = "æÞÝ ÇáÖÛØ Úáì ÒÑ"; + Text[ turkish ] = "Tuþ býralkýldýðýnda"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_LOADED +{ + Text = "Beim Laden" ; + Text [ English ] = "When loading" ; + Text [ portuguese ] = "Ao carregar" ; + Text [ english_us ] = "When loading" ; + Text [ portuguese_brazilian ] = "Beim Laden" ; + Text [ swedish ] = "Vid laddning" ; + Text [ danish ] = "Ved indlæsning" ; + Text [ italian ] = "Durante il caricamento" ; + Text [ spanish ] = "Al cargar" ; + Text [ french ] = "En cours de chargement" ; + Text [ dutch ] = "Bij het laden" ; + Text[ chinese_simplified ] = "ÔÚ×°ÔØʱ"; + Text[ russian ] = "Ïðè çàãðóçêå"; + Text[ polish ] = "Przy ³adowaniu"; + Text[ japanese ] = "“Ç‚Ýž‚Ý‚ÌÛ"; + Text[ chinese_traditional ] = "¦b¸Ë¸ü®É"; + Text[ greek ] = "ÊáôÜ ôç öüñôùóç"; + Text[ korean ] = "·ÎµåÇÒ ¶§"; + Text[ arabic ] = "ÚäÏ ÇáÊÍãíá"; + Text[ turkish ] = "Yükleme sýrasýnda"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_RELOADING +{ + Text = "Vor dem erneuten Laden"; + Text [ english ] = "Before reloading" ; + Text [ english_us ] = "Before reloading" ; +}; +String RID_STR_EVT_RELOADED +{ + Text = "Beim erneuten Laden" ; + Text [ English ] = "When reloading" ; + Text [ english_us ] = "When reloading" ; + Text[ portuguese ] = "Ao recarregar"; + Text[ russian ] = "Ïðè ïîâòîðíîé çàãðóçêå"; + Text[ greek ] = "ÊáôÜ ôçí åðáíÜëçøç ôçò öüñôùóçò"; + Text[ dutch ] = "Bij het opnieuw laden"; + Text[ french ] = "Lors du nouveau chargement"; + Text[ spanish ] = "Al recargar"; + Text[ italian ] = "Durante il ricaricamento"; + Text[ danish ] = "Under genladning"; + Text[ swedish ] = "Vid omladdning"; + Text[ polish ] = "Podczas ponownego ³adowania"; + Text[ portuguese_brazilian ] = "When reloading"; + Text[ japanese ] = "±ÝÛ°ÄÞ‚ÌÛ"; + Text[ korean ] = "»õ·Î ·ÎµåÇÒ ¶§"; + Text[ chinese_simplified ] = "ÔÚÖØÐÂ×°ÔØʱ"; + Text[ chinese_traditional ] = "¦b«·s¸Ë¸ü®É"; + Text[ arabic ] = "ÚäÏ ÅÚÇÏÉ ÇáÊÍãíá"; + Text[ turkish ] = "Yeniden yükleme sýrasýnda"; +}; +String RID_STR_EVT_MOUSEDRAGGED +{ + Text = "Mausbewegung bei Tastendruck" ; + Text [ English ] = "Mouse dragged" ; + Text [ portuguese ] = "Mover rato ao premir tecla" ; + Text [ english_us ] = "Mouse dragged while key pressed" ; + Text [ portuguese_brazilian ] = "Mausbewegung bei Tastendruck" ; + Text [ swedish ] = "Musrörelse vid tangenttryck" ; + Text [ danish ] = "Musbevægelse ved knaptryk" ; + Text [ italian ] = "Movimento del mouse premendo i tasti" ; + Text [ spanish ] = "Mover ratón por medio del teclado" ; + Text [ french ] = "Déplacement de la souris et touche enfoncée" ; + Text [ dutch ] = "Muisbeweging bij indrukken toets" ; + Text[ chinese_simplified ] = "ÔÚ°´»÷Êó±ê¼üµÄͬʱÍÏÀÒƶ¯Êó±ê"; + Text[ russian ] = "Ïåðåìåùåíèå ìûøè ïðè íàæàòèè êëàâèøè"; + Text[ polish ] = "Przemieszczanie myszy przy przyciœniêciu przycisku"; + Text[ japanese ] = "·°‚ð‰Ÿ‚µ‚È‚ª‚çϳ½‚ð‘€ì"; + Text[ chinese_traditional ] = "¦b«ö¦í·Æ¹««öÁ䬡°Ê®É"; + Text[ greek ] = "Ìåôáêßíçóç ðïíôéêéïý êáôÜ ôï ðÜôçìá ðëÞêôñïõ"; + Text[ korean ] = "Å°¸¦ ´©¸¦ ¶§ ¸¶¿ì½º À̵¿"; + Text[ arabic ] = "ÊÍÑíß ÇáãÇæÓ ÃËäÇÁ ÇáÖÛØ Úáì ÇáÒÑ"; + Text[ turkish ] = "Tuþa basarak fare hareketi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_MOUSEENTERED +{ + Text = "Maus innerhalb" ; + Text [ English ] = "Mouse entered" ; + Text [ portuguese ] = "Rato dentro" ; + Text [ english_us ] = "Mouse inside" ; + Text [ portuguese_brazilian ] = "Maus innerhalb" ; + Text [ swedish ] = "Mus inom" ; + Text [ danish ] = "Mus indenfor" ; + Text [ italian ] = "Mouse dentro" ; + Text [ spanish ] = "Ratón dentro" ; + Text [ french ] = "Souris à l'intérieur" ; + Text [ dutch ] = "Muis binnen" ; + Text[ chinese_simplified ] = "Êó±ê½øÈë"; + Text[ russian ] = "Ìûøü âíóòðè"; + Text[ polish ] = "Mysz wewn¹trz"; + Text[ japanese ] = "ϳ½‚𒆂Ö"; + Text[ chinese_traditional ] = "¹«¼Ð¶i¤J"; + Text[ greek ] = "Ðïíôßêé åíôüò"; + Text[ korean ] = "¸¶¿ì½º ³»ºÎ"; + Text[ arabic ] = "ÇáãÇæÓ ÈÇáÏÇÎá"; + Text[ turkish ] = "Fare içerde"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_MOUSEEXITED +{ + Text = "Maus ausserhalb" ; + Text [ English ] = "Mouse exited" ; + Text [ portuguese ] = "Rato fora" ; + Text [ english_us ] = "Mouse outside" ; + Text [ portuguese_brazilian ] = "Maus ausserhalb" ; + Text [ swedish ] = "Mus utanför" ; + Text [ danish ] = "Mus udenfor" ; + Text [ italian ] = "Mouse fuori" ; + Text [ spanish ] = "Ratón fuera" ; + Text [ french ] = "Souris à l'extérieur" ; + Text [ dutch ] = "Muis buiten" ; + Text[ chinese_simplified ] = "Êó±êÍ˳ö"; + Text[ russian ] = "Ìûøü ñíàðóæè"; + Text[ polish ] = "Mysz na zewn¹trz"; + Text[ japanese ] = "ϳ½‚ðŠO‚Ö"; + Text[ chinese_traditional ] = "¹«¼Ð°h¥X"; + Text[ greek ] = "Ðïíôßêé åêôüò"; + Text[ korean ] = "¸¶¿ì½º ¿ÜºÎ"; + Text[ arabic ] = "ÇáãÇæÓ ÈÇáÎÇÑÌ"; + Text[ turkish ] = "Fare dýþarda"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_MOUSEMOVED +{ + Text = "Mausbewegung" ; + Text [ English ] = "Mouse moved" ; + Text [ portuguese ] = "Mover rato" ; + Text [ english_us ] = "Mouse moved" ; + Text [ portuguese_brazilian ] = "Mausbewegung" ; + Text [ swedish ] = "Musrörelse" ; + Text [ danish ] = "Musbevægelse" ; + Text [ italian ] = "Movimento del mouse" ; + Text [ spanish ] = "Movimiento de ratón" ; + Text [ french ] = "Déplacement de la souris" ; + Text [ dutch ] = "Muisbeweging" ; + Text[ chinese_simplified ] = "Êó±ê»î¶¯"; + Text[ russian ] = "Ïåðåìåùåíèå ìûøè"; + Text[ polish ] = "Przesuniêcie myszy"; + Text[ japanese ] = "ϳ½‚Ì‘€ì"; + Text[ chinese_traditional ] = "¹«¼Ð¬¡°Ê"; + Text[ greek ] = "Êßíçóç ðïíôéêéïý"; + Text[ korean ] = "¸¶¿ì½º À̵¿"; + Text[ arabic ] = "ÊÍÑíß ÇáãÇæÓ"; + Text[ turkish ] = "Fare hareketi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_MOUSEPRESSED +{ + Text = "Maustaste gedrückt" ; + Text [ English ] = "Mouse pressed" ; + Text [ portuguese ] = "Premir botão do rato " ; + Text [ english_us ] = "Mouse pressed" ; + Text [ portuguese_brazilian ] = "Maustaste gedrückt" ; + Text [ swedish ] = "Musknapp nedtryckt" ; + Text [ danish ] = "Museknap trykket" ; + Text [ italian ] = "Tasto del mouse premuto" ; + Text [ spanish ] = "Pulsar botón del ratón" ; + Text [ french ] = "Bouton de souris enfoncé" ; + Text [ dutch ] = "Muistoets ingedrukt" ; + Text[ chinese_simplified ] = "°´×¡Êó±ê¼ü"; + Text[ russian ] = "Êëàâèøà ìûøè íàæàòà"; + Text[ polish ] = "Naciœniêty przycisk myszy"; + Text[ japanese ] = "ϳ½ ÎÞÀÝ‚ð‰Ÿ‚·"; + Text[ chinese_traditional ] = "«ö¦í·Æ¹«Áä"; + Text[ greek ] = "Ðïíôßêé ðéåóìÝíï"; + Text[ korean ] = "¸¶¿ì½º ´©¸§"; + Text[ arabic ] = "ÇáÖÛØ Úáì ÒÑ ÇáãÇæÓ"; + Text[ turkish ] = "Fare tuþu basýlý"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_MOUSERELEASED +{ + Text = "Maustaste losgelassen" ; + Text [ English ] = "Mouse released" ; + Text [ portuguese ] = "Soltar botão do rato" ; + Text [ english_us ] = "Mouse released" ; + Text [ portuguese_brazilian ] = "Maustaste losgelassen" ; + Text [ swedish ] = "Musknapp uppsläppt" ; + Text [ danish ] = "Museknap sluppet" ; + Text [ italian ] = "Tasto del mouse rilasciato" ; + Text [ spanish ] = "Soltar botón del ratón" ; + Text [ french ] = "Bouton de souris relâché" ; + Text [ dutch ] = "Muistoetst losgelaten" ; + Text[ chinese_simplified ] = "·Å¿ªÊó±ê¼ü"; + Text[ russian ] = "Êëàâèøà ìûøè îòïóùåíà"; + Text[ polish ] = "Zwolnij przycisk myszy"; + Text[ japanese ] = "ϳ½ ÎÞÀ݂𗣂·"; + Text[ chinese_traditional ] = "©ñ¶}·Æ¹«Áä"; + Text[ greek ] = "Ðïíôßêé áðåëåõèåñùìÝíï"; + Text[ korean ] = "¸¶¿ì½º ³õÀ½"; + Text[ arabic ] = "æÞÝ ÇáÖÛØ Úáì ÒÑ ÇáãÇæÓ"; + Text[ turkish ] = "Fare tuþu býrakýlmýþ"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_POSITIONING +{ + Text = "Vor dem Datensatzwechsel" ; + Text [ English ] = "Prior positioning" ; + Text [ english_us ] = "Before record change" ; + Text[ portuguese ] = "Posição anterior"; + Text[ russian ] = "Äî çàìåíû çàïèñè"; + Text[ greek ] = "Ðñéí ôçí áëëáãÞ åããñáöÞò"; + Text[ dutch ] = "Voor wisselen van record"; + Text[ french ] = "Avant le passage au suivant"; + Text[ spanish ] = "Antes del cambio de registro de datos"; + Text[ italian ] = "Prima del cambio record di dati"; + Text[ danish ] = "Inden datapostskift"; + Text[ swedish ] = "Före datapostväxling"; + Text[ polish ] = "Przed zmian¹ rekordów"; + Text[ portuguese_brazilian ] = "Prior positioning"; + Text[ japanese ] = "Úº°ÄÞ‚Ì’uŠ·‘O‚̈ʒu"; + Text[ korean ] = "·¹ÄÚµå º¯°æ Àü¿¡"; + Text[ chinese_simplified ] = "ÔÚת»»Êý¾ÝÌõĿ֮ǰ"; + Text[ chinese_traditional ] = "¦bÅÜ´«¸ê®Æ±ø¥Ø¤§«e"; + Text[ arabic ] = "ÞÈá ÊÛííÑ ÇáÓÌá"; + Text[ turkish ] = "Veri kümesi deðiþikliðinden önce"; +}; +String RID_STR_EVT_POSITIONED +{ + Text = "Nach dem Datensatzwechsel" ; + Text [ English ] = "After positioning" ; + Text [ english_us ] = "After record change" ; + Text [ portuguese_brazilian ] = "Position verändert" ; + Text [ swedish ] = "Efter datapostväxling" ; + Text [ danish ] = "Efter datapostskift" ; + Text [ italian ] = "Dopo il cambio record di dati" ; + Text [ spanish ] = "Tras el cambio de registro de datos" ; + Text [ french ] = "Après passage au suivant" ; + Text [ dutch ] = "Na wisselen van record" ; + Text[ chinese_simplified ] = "ת»»Êý¾ÝÌõÄ¿ÒÔºó"; + Text[ russian ] = "Ïîñëå çàìåíû çàïèñè"; + Text[ polish ] = "Po zmianie rekordów"; + Text[ japanese ] = "Úº°ÄÞ‚Ì’uŠ·Œã‚̈ʒu"; + Text[ chinese_traditional ] = "¦bÅÜ´«¸ê®Æ±ø¥Ø¤§«á"; + Text[ greek ] = "ÌåôÜ ôçí áëëáãÞ åããñáöÞò"; + Text[ korean ] = "·¹ÄÚµå º¯°æ ÈÄ¿¡"; + Text[ arabic ] = "ÈÚÏ ÊÛííÑ ÇáÓÌá"; + Text[ portuguese ] = "Posição seguinte"; + Text[ turkish ] = "Veri kümesi deðiþikliðinden sonra"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_RESETTED +{ + Text = "Nach dem Zurücksetzen" ; + Text [ English ] = "After reset" ; + Text [ portuguese ] = "Depois de restaurar" ; + Text [ english_us ] = "After resetting" ; + Text [ portuguese_brazilian ] = "Zurückgesetzt" ; + Text [ swedish ] = "Efter återställning" ; + Text [ danish ] = "Efter nulstilling" ; + Text [ italian ] = "Dopo aver ripristinato" ; + Text [ spanish ] = "Después de restaurar" ; + Text [ french ] = "Après la restauration" ; + Text [ dutch ] = "Na het terugzetten" ; + Text[ chinese_simplified ] = "ÖØÐÂÉ趨֮ºó"; + Text[ russian ] = "Ïîñëå âîññòàíîâëåíèÿ"; + Text[ polish ] = "Po cofniêciu"; + Text[ japanese ] = "ؾ¯Ä‚µ‚½Œã"; + Text[ chinese_traditional ] = "«³]¤§«á"; + Text[ greek ] = "ÌåôÜ ôçí åðáíáöïñÜ"; + Text[ korean ] = "¿ø·¡´ë·Î ÇÑ ÈÄ¿¡"; + Text[ arabic ] = "ÈÚÏ ÅÚÇÏÉ ÇáÊÚííä"; + Text[ turkish ] = "Geri almadan sonra"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_APPROVERESETTED +{ + Text = "Vor dem Zurücksetzen" ; + Text [ English ] = "Approve resetted" ; + Text [ portuguese ] = "Antes de restaurar" ; + Text [ english_us ] = "Prior to Reset" ; + Text [ portuguese_brazilian ] = "Zurückgesetzt" ; + Text [ swedish ] = "Innan återställning" ; + Text [ danish ] = "Inden nulstilning" ; + Text [ italian ] = "Prima di ripristinare" ; + Text [ spanish ] = "Antes de restablecer" ; + Text [ french ] = "Avant la restauration" ; + Text [ dutch ] = "Voor het terugzetten" ; + Text[ chinese_simplified ] = "ÔÚÖØÉè֮ǰ"; + Text[ russian ] = "Ïåðåä âîññòàíîâëåíèåì"; + Text[ polish ] = "Przed zresetowaniem"; + Text[ japanese ] = "ؾ¯Ä‚Ì‘O"; + Text[ chinese_traditional ] = "¦b«³]¤§«e"; + Text[ greek ] = "Ðñéí ôçí åðáíáöïñÜ"; + Text[ korean ] = "º¹¿øÇϱâ Àü¿¡"; + Text[ arabic ] = "ÞÈá ÇáÇÓÊÚÇÏÉ"; + Text[ turkish ] = "Geri almadan önce"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_APPROVEACTIONPERFORMED +{ + Text = "Vor dem Auslösen" ; + Text [ English ] = "Before click" ; + Text [ portuguese ] = "Antes de executar" ; + Text [ english_us ] = "Before commencing" ; + Text [ portuguese_brazilian ] = "Aktion ausgelöst" ; + Text [ swedish ] = "Innan utförande" ; + Text [ danish ] = "Inden udførelse" ; + Text [ italian ] = "Prima dell'esecuzione" ; + Text [ spanish ] = "antes de ejecutar" ; + Text [ french ] = "Avant le déclenchement" ; + Text [ dutch ] = "Voor het oproepen" ; + Text[ chinese_simplified ] = "ÔÚ²Ù×÷֮ǰ"; + Text[ russian ] = "Ïåðåä âûïîëíåíèåì"; + Text[ polish ] = "Przed wykonaniem"; + Text[ japanese ] = "ì“®‘O"; + Text[ chinese_traditional ] = "¦b¾Þ§@¤§«e"; + Text[ greek ] = "Ðñéí ôçí åêôÝëåóç"; + Text[ korean ] = "ÀÛµ¿ Àü¿¡"; + Text[ arabic ] = "ÞÈá ÈÏÁ ÇáÅÌÑÇÁ"; + Text[ turkish ] = "Baþlatmadan önce"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_SUBMITTED +{ + Text = "Vor dem Submit" ; + Text [ English ] = "Before submit" ; + Text [ english_us ] = "Before submitting" ; + Text[ portuguese ] = "Antes de submeter"; + Text[ russian ] = "Ïåðåä ïîäòâåðæäåíèåì"; + Text[ greek ] = "Ðñéí ôçí õðïâïëÞ"; + Text[ dutch ] = "Voor submit"; + Text[ french ] = "Avant l'envoi"; + Text[ spanish ] = "Antes del envío"; + Text[ italian ] = "Prima dell'invio"; + Text[ danish ] = "Inden submitting"; + Text[ swedish ] = "Innan sändning"; + Text[ polish ] = "Przed submitem"; + Text[ portuguese_brazilian ] = "Submit"; + Text[ japanese ] = "»ÌÞЯĂ·‚é‘O"; + Text[ korean ] = "Àü¼ÛÇϱâ Àü¿¡"; + Text[ chinese_simplified ] = "Ìύ֮ǰ"; + Text[ chinese_traditional ] = "´£¥æ¤§«e"; + Text[ arabic ] = "ÞÈá ÇáÅÑÓÇá"; + Text[ turkish ] = "Göndermeden önce"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_TEXTCHANGED +{ + Text = "Text modifiziert" ; + Text [ English ] = "Text changed" ; + Text [ portuguese ] = "Texto modificado" ; + Text [ english_us ] = "Text modified" ; + Text [ portuguese_brazilian ] = "Text modifiziert" ; + Text [ swedish ] = "Text modifierad" ; + Text [ danish ] = "Tekst ændret" ; + Text [ italian ] = "Testo modificato" ; + Text [ spanish ] = "Texto modificado" ; + Text [ french ] = "Texte modifié" ; + Text [ dutch ] = "Tekst gemodificeerd" ; + Text[ chinese_simplified ] = "ÎÄ×ÖÒѾÐÞ¸Ä"; + Text[ russian ] = "Òåêñò èçìåíåí"; + Text[ polish ] = "Zmodyfikowany tekst"; + Text[ japanese ] = "÷½Ä‚Ì•ÏX"; + Text[ chinese_traditional ] = "¤å¦r¤w¸gקï"; + Text[ greek ] = "Ôñïðïðïßçóç êåéìÝíïõ"; + Text[ korean ] = "ÅؽºÆ® º¯°æ"; + Text[ arabic ] = "Êã ÊÚÏíá ÇáäÕ"; + Text[ turkish ] = "Metin deðiþtirildi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_UNLOADING +{ + Text = "Vor dem Entladen"; + Text [ english ] = "Before unloading" ; + Text [ english_us ] = "Before unloading" ; +}; +String RID_STR_EVT_UNLOADED +{ + Text = "Beim Entladen" ; + Text [ English ] = "When unloading" ; + Text [ portuguese ] = "Ao descarregar" ; + Text [ english_us ] = "When unloading" ; + Text [ portuguese_brazilian ] = "Beim Schließen" ; + Text [ swedish ] = "Vid avladdning" ; + Text [ danish ] = "Under afladning" ; + Text [ italian ] = "Durante lo scaricamento" ; + Text [ spanish ] = "Al descargar" ; + Text [ french ] = "Lors du déchargement" ; + Text [ dutch ] = "Bij het sluiten" ; + Text[ chinese_simplified ] = "ÔÚÍËжʱ"; + Text[ russian ] = "Ïðè ðàçãðóçêå"; + Text[ polish ] = "Przy roz³adowywaniu"; + Text[ japanese ] = "±ÝÛ°ÄÞ‚ÌÛ"; + Text[ chinese_traditional ] = "¦bÃö³¬®É"; + Text[ greek ] = "ÊáôÜ ôçí åêöüñôùóç"; + Text[ korean ] = "¾ð·ÎµåÇÒ ¶§"; + Text[ arabic ] = "ÚäÏ ÅáÛÇÁ ÇáÊÍãíá"; + Text[ turkish ] = "Kapatma sýrasýnda"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVT_CHANGED +{ + Text = "Modifiziert" ; + Text [ ENGLISH ] = "changed" ; + Text [ portuguese ] = "Modificado" ; + Text [ english_us ] = "changed" ; + Text [ portuguese_brazilian ] = "Modifiziert" ; + Text [ swedish ] = "Modifierad" ; + Text [ danish ] = "Modificeret" ; + Text [ italian ] = "Modificato" ; + Text [ spanish ] = "Modificado" ; + Text [ french ] = "Modifié(es)" ; + Text [ dutch ] = "Gemodificeerd" ; + Text[ chinese_simplified ] = "ÒѾÐÞ¸Ä"; + Text[ russian ] = "Èçìåíåíî"; + Text[ polish ] = "Zmodyfikowany"; + Text[ japanese ] = "•ÏX"; + Text[ chinese_traditional ] = "¤w¸gקï"; + Text[ greek ] = "ÔñïðïðïéçìÝíï"; + Text[ korean ] = "º¯°æµÊ"; + Text[ arabic ] = "ãÚÏá"; + Text[ turkish ] = "Deðiþtirildi"; + Text[ language_user1 ] = " "; +}; +String RID_STR_EVENTS +{ + Text = "Ereignisse" ; + Text [ English ] = "Events" ; + Text [ portuguese ] = "Eventos" ; + Text [ english_us ] = "Events" ; + Text [ portuguese_brazilian ] = "Ereignisse" ; + Text [ swedish ] = "Händelser" ; + Text [ danish ] = "Begivenheder" ; + Text [ italian ] = "Eventi" ; + Text [ spanish ] = "Acontecimientos" ; + Text [ french ] = "Événements" ; + Text [ dutch ] = "Gebeurtenissen" ; + Text[ chinese_simplified ] = "ʼþ"; + Text[ russian ] = "Ñîáûòèÿ"; + Text[ polish ] = "Wydarzenia"; + Text[ japanese ] = "ŽÀsŒ_‹@"; + Text[ chinese_traditional ] = "°Ê§@"; + Text[ greek ] = "Ãåãïíüôá"; + Text[ korean ] = "À̺¥Æ®"; + Text[ arabic ] = "ÇáÃÍÏÇË"; + Text[ turkish ] = "Olaylar"; + Text[ language_user1 ] = " "; +}; +String RID_STR_ESCAPE_PROCESSING +{ + Text = "SQL-Befehl analysieren"; + Text [ English ] = "Analyze SQL command"; + Text [ english_us ] = "Analyze SQL command"; + Text[ portuguese ] = "Analisar comando SQL"; + Text[ russian ] = "Àíàëèç êîìàíäû SQL"; + Text[ greek ] = "ÁíÜëõóç åíôïëÞò SQL"; + Text[ dutch ] = "SQL-opdracht analyseren"; + Text[ french ] = "Analyser l'instruction SQL"; + Text[ spanish ] = "Analizar comando SQL"; + Text[ italian ] = "Analizza comando SQL"; + Text[ danish ] = "Analyser SQL-kommando"; + Text[ swedish ] = "Analysera SQL-kommando"; + Text[ polish ] = "Analizuj polecenia SQL"; + Text[ portuguese_brazilian ] = "direct SQL command"; + Text[ japanese ] = "SQLºÏÝÄÞ‚Ì•ªÍ"; + Text[ korean ] = "SQL ¸í·É ºÐ¼®"; + Text[ chinese_simplified ] = "·ÖÎö SQL Ö¸Áî"; + Text[ chinese_traditional ] = "¤ÀªR SQL «ü¥O"; + Text[ arabic ] = "ÊÍáíá ÃãÑ SQL"; + Text[ turkish ] = "SQL komutunu çözümle"; +}; + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 14:53:11 fs + ************************************************************************/ diff --git a/extensions/source/propctrlr/formresid.hrc b/extensions/source/propctrlr/formresid.hrc new file mode 100644 index 000000000..635d30051 --- /dev/null +++ b/extensions/source/propctrlr/formresid.hrc @@ -0,0 +1,275 @@ +/************************************************************************* + * + * $RCSfile: formresid.hrc,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:35:45 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMCTRLR_PROPRESID_HRC_ +#define _EXTENSIONS_FORMCTRLR_PROPRESID_HRC_ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "propresid.hrc" +#endif + +// ----------------------------------------------------------------------- +// - Strings +// ----------------------------------------------------------------------- + +#define RID_STR_FORMS ( RID_FORMBROWSER_START + 1 ) +#define RID_STR_PROPTITLE_DBGRID ( RID_FORMBROWSER_START + 2 ) +#define RID_STR_PROPTITLE_PATTERNFIELD ( RID_FORMBROWSER_START + 3 ) +#define RID_STR_PROPTITLE_CURRENCYFIELD ( RID_FORMBROWSER_START + 4 ) +#define RID_STR_PROPTITLE_NUMERICFIELD ( RID_FORMBROWSER_START + 5 ) +#define RID_STR_PROPTITLE_TIMEFIELD ( RID_FORMBROWSER_START + 6 ) +#define RID_STR_PROPTITLE_DATEFIELD ( RID_FORMBROWSER_START + 7 ) +#define RID_STR_PROPTITLE_FILECONTROL ( RID_FORMBROWSER_START + 8 ) +#define RID_STR_PROPTITLE_IMAGECONTROL ( RID_FORMBROWSER_START + 9 ) +#define RID_STR_PROPTITLE_IMAGEBUTTON ( RID_FORMBROWSER_START + 10 ) +#define RID_STR_PROPTITLE_COMBOBOX ( RID_FORMBROWSER_START + 11 ) +#define RID_STR_PROPTITLE_LISTBOX ( RID_FORMBROWSER_START + 12 ) +#define RID_STR_PROPTITLE_FORMATTED ( RID_FORMBROWSER_START + 13 ) +#define RID_STR_PROPTITLE_EDIT ( RID_FORMBROWSER_START + 14 ) +#define RID_STR_PROPTITLE_GROUPBOX ( RID_FORMBROWSER_START + 15 ) +#define RID_STR_PROPTITLE_FIXEDTEXT ( RID_FORMBROWSER_START + 16 ) +#define RID_STR_PROPTITLE_CHECKBOX ( RID_FORMBROWSER_START + 17 ) +#define RID_STR_PROPTITLE_RADIOBUTTON ( RID_FORMBROWSER_START + 18 ) +#define RID_STR_PROPTITLE_PUSHBUTTON ( RID_FORMBROWSER_START + 19 ) +#define RID_STR_PROPTITLE_HIDDENCONTROL ( RID_FORMBROWSER_START + 30 ) +#define RID_STR_PROPTITLE_UNKNOWNCONTROL ( RID_FORMBROWSER_START + 31 ) + +#define RID_STR_NAME ( RID_FORMBROWSER_START + 32 ) +#define RID_STR_LABEL ( RID_FORMBROWSER_START + 33 ) +#define RID_STR_LABELCONTROL ( RID_FORMBROWSER_START + 34 ) +#define RID_STR_MAXTEXTLEN ( RID_FORMBROWSER_START + 35 ) +#define RID_STR_EDITMASK ( RID_FORMBROWSER_START + 36 ) +#define RID_STR_LITERALMASK ( RID_FORMBROWSER_START + 37 ) +#define RID_STR_STRICTFORMAT ( RID_FORMBROWSER_START + 38 ) +#define RID_STR_ENABLED ( RID_FORMBROWSER_START + 39 ) +#define RID_STR_READONLY ( RID_FORMBROWSER_START + 40 ) +#define RID_STR_PRINTABLE ( RID_FORMBROWSER_START + 41 ) +#define RID_STR_CONTROLSOURCE ( RID_FORMBROWSER_START + 42 ) +#define RID_STR_TABSTOP ( RID_FORMBROWSER_START + 43 ) +#define RID_STR_TABINDEX ( RID_FORMBROWSER_START + 44 ) +#define RID_STR_DATASOURCE ( RID_FORMBROWSER_START + 45 ) +#define RID_STR_CURSORSOURCE ( RID_FORMBROWSER_START + 46 ) +#define RID_STR_CURSORSOURCETYPE ( RID_FORMBROWSER_START + 47 ) +#define RID_STR_FILTER_CRITERIA ( RID_FORMBROWSER_START + 48 ) +#define RID_STR_SORT_CRITERIA ( RID_FORMBROWSER_START + 49 ) +#define RID_STR_ALLOW_ADDITIONS ( RID_FORMBROWSER_START + 50 ) +#define RID_STR_ALLOW_EDITS ( RID_FORMBROWSER_START + 51 ) +#define RID_STR_ALLOW_DELETIONS ( RID_FORMBROWSER_START + 52 ) +#define RID_STR_DATAENTRY ( RID_FORMBROWSER_START + 53 ) +#define RID_STR_NAVIGATION ( RID_FORMBROWSER_START + 54 ) +#define RID_STR_CYCLE ( RID_FORMBROWSER_START + 55 ) +#define RID_STR_VALUE ( RID_FORMBROWSER_START + 56 ) +#define RID_STR_VALUESTEP ( RID_FORMBROWSER_START + 59 ) +#define RID_STR_DECIMAL_ACCURACY ( RID_FORMBROWSER_START + 61 ) +#define RID_STR_SHOWTHOUSANDSEP ( RID_FORMBROWSER_START + 62 ) +#define RID_STR_REFVALUE ( RID_FORMBROWSER_START + 63 ) +#define RID_STR_CURRENCYSYMBOL ( RID_FORMBROWSER_START + 64 ) +#define RID_STR_CURRSYM_POSITION ( RID_FORMBROWSER_START + 65 ) +#define RID_STR_DATEMIN ( RID_FORMBROWSER_START + 66 ) +#define RID_STR_DATEMAX ( RID_FORMBROWSER_START + 67 ) +#define RID_STR_DATEFORMAT ( RID_FORMBROWSER_START + 68 ) +#define RID_STR_DATE_SHOW_CENTURY ( RID_FORMBROWSER_START + 69 ) +#define RID_STR_TIMEMIN ( RID_FORMBROWSER_START + 71 ) +#define RID_STR_TIMEMAX ( RID_FORMBROWSER_START + 72 ) +#define RID_STR_TIMEFORMAT ( RID_FORMBROWSER_START + 73 ) +#define RID_STR_VALUEMIN ( RID_FORMBROWSER_START + 75 ) +#define RID_STR_VALUEMAX ( RID_FORMBROWSER_START + 76 ) +#define RID_STR_FORMATKEY ( RID_FORMBROWSER_START + 78 ) +#define RID_STR_CLASSID ( RID_FORMBROWSER_START + 80 ) +#define RID_STR_HEIGHT ( RID_FORMBROWSER_START + 81 ) +#define RID_STR_WIDTH ( RID_FORMBROWSER_START + 82 ) +#define RID_STR_BOUNDCOLUMN ( RID_FORMBROWSER_START + 83 ) +#define RID_STR_LISTSOURCETYPE ( RID_FORMBROWSER_START + 84 ) +#define RID_STR_LISTSOURCE ( RID_FORMBROWSER_START + 85 ) +#define RID_STR_LISTINDEX ( RID_FORMBROWSER_START + 86 ) +#define RID_STR_STRINGITEMLIST ( RID_FORMBROWSER_START + 87 ) +#define RID_STR_DEFAULTVALUE ( RID_FORMBROWSER_START + 88 ) +#define RID_STR_FONT ( RID_FORMBROWSER_START + 89 ) +#define RID_STR_ALIGN ( RID_FORMBROWSER_START + 90 ) +#define RID_STR_ROWHEIGHT ( RID_FORMBROWSER_START + 91 ) +#define RID_STR_BACKGROUNDCOLOR ( RID_FORMBROWSER_START + 92 ) +#define RID_STR_FILLCOLOR ( RID_FORMBROWSER_START + 93 ) +#define RID_STR_LINECOLOR ( RID_FORMBROWSER_START + 95 ) +#define RID_STR_BORDER ( RID_FORMBROWSER_START + 96 ) +#define RID_STR_DROPDOWN ( RID_FORMBROWSER_START + 97 ) +#define RID_STR_AUTOCOMPLETE ( RID_FORMBROWSER_START + 98 ) +#define RID_STR_LINECOUNT ( RID_FORMBROWSER_START + 99 ) +#define RID_STR_MULTILINE ( RID_FORMBROWSER_START + 101 ) +#define RID_STR_MULTISELECTION ( RID_FORMBROWSER_START + 102 ) +#define RID_STR_HARDLINEBREAKS ( RID_FORMBROWSER_START + 103 ) +#define RID_STR_HSCROLL ( RID_FORMBROWSER_START + 104 ) +#define RID_STR_VSCROLL ( RID_FORMBROWSER_START + 105 ) +#define RID_STR_SPIN ( RID_FORMBROWSER_START + 106 ) +#define RID_STR_BUTTONTYPE ( RID_FORMBROWSER_START + 107 ) +#define RID_STR_TARGET_URL ( RID_FORMBROWSER_START + 108 ) +#define RID_STR_TARGET_FRAME ( RID_FORMBROWSER_START + 109 ) +#define RID_STR_SUBMIT_ACTION ( RID_FORMBROWSER_START + 110 ) +#define RID_STR_SUBMIT_TARGET ( RID_FORMBROWSER_START + 111 ) +#define RID_STR_SUBMIT_METHOD ( RID_FORMBROWSER_START + 112 ) +#define RID_STR_SUBMIT_ENCODING ( RID_FORMBROWSER_START + 113 ) +#define RID_STR_DEFAULT_CHECKED ( RID_FORMBROWSER_START + 114 ) +#define RID_STR_DEFAULT_BUTTON ( RID_FORMBROWSER_START + 115 ) +#define RID_STR_IMAGE_URL ( RID_FORMBROWSER_START + 116 ) +#define RID_STR_DEFAULT_SELECT_SEQ ( RID_FORMBROWSER_START + 117 ) +#define RID_STR_ECHO_CHAR ( RID_FORMBROWSER_START + 118 ) +#define RID_STR_EMPTY_IS_NULL ( RID_FORMBROWSER_START + 119 ) +#define RID_STR_TRISTATE ( RID_FORMBROWSER_START + 120 ) +#define RID_STR_MASTERFIELDS ( RID_FORMBROWSER_START + 121 ) +#define RID_STR_SLAVEFIELDS ( RID_FORMBROWSER_START + 122 ) +#define RID_STR_NAVIGATIONBAR ( RID_FORMBROWSER_START + 123 ) +#define RID_STR_RECORDMARKER ( RID_FORMBROWSER_START + 124 ) +#define RID_STR_FILTERPROPOSAL ( RID_FORMBROWSER_START + 125 ) +#define RID_STR_TAG ( RID_FORMBROWSER_START + 126 ) +#define RID_STR_HELPTEXT ( RID_FORMBROWSER_START + 127 ) +#define RID_STR_HELPURL ( RID_FORMBROWSER_START + 128 ) +#define RID_STR_BORDER_TYPE ( RID_FORMBROWSER_START + 129 ) +#define RID_STR_COMMAND_TYPE ( RID_FORMBROWSER_START + 130 ) +#define RID_STR_CURSOR_TYPE ( RID_FORMBROWSER_START + 131 ) +#define RID_STR_LISTSOURCE_TYPE ( RID_FORMBROWSER_START + 132 ) +#define RID_STR_ALIGNMENT ( RID_FORMBROWSER_START + 133 ) +#define RID_STR_ENUM_BUTTONTYPE ( RID_FORMBROWSER_START + 134 ) +#define RID_STR_ENUM_SUBMIT_METHOD ( RID_FORMBROWSER_START + 135 ) +#define RID_STR_ENUM_SUBMIT_ENCODING ( RID_FORMBROWSER_START + 136 ) +#define RID_STR_DATEFORMAT_LIST ( RID_FORMBROWSER_START + 137 ) +#define RID_STR_TIMEFORMAT_LIST ( RID_FORMBROWSER_START + 138 ) +#define RID_STR_ENUM_CHECKED ( RID_FORMBROWSER_START + 139 ) +#define RID_STR_ENUM_CYCLE ( RID_FORMBROWSER_START + 140 ) +#define RID_STR_ENUM_NAVIGATION ( RID_FORMBROWSER_START + 141 ) +#define RID_STR_EVT_APPROVEACTIONPERFORMED ( RID_FORMBROWSER_START + 142 ) +#define RID_STR_EVT_ACTIONPERFORMED ( RID_FORMBROWSER_START + 143 ) +#define RID_STR_EVT_CHANGED ( RID_FORMBROWSER_START + 144 ) +#define RID_STR_EVT_TEXTCHANGED ( RID_FORMBROWSER_START + 145 ) +#define RID_STR_EVT_ITEMSTATECHANGED ( RID_FORMBROWSER_START + 146 ) +#define RID_STR_EVT_FOCUSGAINED ( RID_FORMBROWSER_START + 147 ) +#define RID_STR_EVT_FOCUSLOST ( RID_FORMBROWSER_START + 148 ) +#define RID_STR_EVT_KEYTYPED ( RID_FORMBROWSER_START + 149 ) +#define RID_STR_EVT_KEYUP ( RID_FORMBROWSER_START + 150 ) +#define RID_STR_EVT_MOUSEENTERED ( RID_FORMBROWSER_START + 151 ) +#define RID_STR_EVT_MOUSEDRAGGED ( RID_FORMBROWSER_START + 152 ) +#define RID_STR_EVT_MOUSEMOVED ( RID_FORMBROWSER_START + 153 ) +#define RID_STR_EVT_MOUSEPRESSED ( RID_FORMBROWSER_START + 154 ) +#define RID_STR_EVT_MOUSERELEASED ( RID_FORMBROWSER_START + 155 ) +#define RID_STR_EVT_MOUSEEXITED ( RID_FORMBROWSER_START + 156 ) +#define RID_STR_EVT_APPROVERESETTED ( RID_FORMBROWSER_START + 157 ) +#define RID_STR_EVT_RESETTED ( RID_FORMBROWSER_START + 158 ) +#define RID_STR_EVT_SUBMITTED ( RID_FORMBROWSER_START + 159 ) +#define RID_STR_EVT_BEFOREUPDATE ( RID_FORMBROWSER_START + 160 ) +#define RID_STR_EVT_AFTERUPDATE ( RID_FORMBROWSER_START + 161 ) +#define RID_STR_EVT_LOADED ( RID_FORMBROWSER_START + 162 ) +#define RID_STR_EVT_RELOADING ( RID_FORMBROWSER_START + 163 ) +#define RID_STR_EVT_RELOADED ( RID_FORMBROWSER_START + 164 ) +#define RID_STR_EVT_UNLOADING ( RID_FORMBROWSER_START + 165 ) +#define RID_STR_EVT_UNLOADED ( RID_FORMBROWSER_START + 166 ) +#define RID_STR_EVT_CONFIRMDELETE ( RID_FORMBROWSER_START + 167 ) +#define RID_STR_EVT_APPROVEROWCHANGE ( RID_FORMBROWSER_START + 168 ) +#define RID_STR_EVT_ROWCHANGE ( RID_FORMBROWSER_START + 169 ) +#define RID_STR_EVT_POSITIONING ( RID_FORMBROWSER_START + 170 ) +#define RID_STR_EVT_POSITIONED ( RID_FORMBROWSER_START + 171 ) +#define RID_STR_EVT_APPROVEPARAMETER ( RID_FORMBROWSER_START + 172 ) +#define RID_STR_EVT_ERROROCCURED ( RID_FORMBROWSER_START + 173 ) +#define RID_STR_EVENTS ( RID_FORMBROWSER_START + 174 ) +#define RID_STR_ESCAPE_PROCESSING ( RID_FORMBROWSER_START + 175 ) + +// ----------------------------------------------------------------------- +// - Dialogs +// ----------------------------------------------------------------------- + +#define RID_DLG_SELECTLABELCONTROL ( RID_PROPCONTROLLER_START + 0 ) + + +// ----------------------------------------------------------------------- +// - Dialogs +// ----------------------------------------------------------------------- + +#define RID_SVXDLG_FMFONT 18013 + + +// ----------------------------------------------------------------------- +// - ImageLists +// ----------------------------------------------------------------------- + +#define RID_IL_FORMEXPLORER ( RID_PROPCONTROLLER_START + 0 ) + + +// ----------------------------------------------------------------------- +// - ImageList - local ids +// ----------------------------------------------------------------------- +// HACK HACK HACK +// as long as we have no real property browser, but this outsourcing only, +// we do not duplicate images. Instead we do some hard coding for the image ids +#define RID_SVXIMG_FIXEDTEXT 10597 +#define RID_SVXIMG_GROUPBOX 10598 +#define RID_SVXIMG_FORMS 18013 +#define RID_SVXIMG_FORM 10593 +#define RID_SVXIMG_COLLAPSEDNODE 18002 +#define RID_SVXIMG_EXPANDEDNODE 18003 + + + +#endif // _EXTENSIONS_FORMCTRLR_PROPRESID_HRC_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 16:03:30 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formstrings.cxx b/extensions/source/propctrlr/formstrings.cxx new file mode 100644 index 000000000..56b8b044b --- /dev/null +++ b/extensions/source/propctrlr/formstrings.cxx @@ -0,0 +1,74 @@ +/************************************************************************* + * + * $RCSfile: formstrings.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:28:59 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ +#define PCR_IMPLEMENT_STRINGS +#include "formstrings.hxx" +#undef PCR_IMPLEMENT_STRINGS +#endif + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 14:19:51 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/formstrings.hxx b/extensions/source/propctrlr/formstrings.hxx new file mode 100644 index 000000000..1972ca77e --- /dev/null +++ b/extensions/source/propctrlr/formstrings.hxx @@ -0,0 +1,260 @@ +/************************************************************************* + * + * $RCSfile: formstrings.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:29:10 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ +#define _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ + +#ifndef _EXTENSIONS_FORMSCTRLR_STRINGDEFINE_HXX_ +#include "stringdefine.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + // properties + PCR_CONSTASCII_STRING( PROPERTY_CLASSID, "ClassId" ); + PCR_CONSTASCII_STRING( PROPERTY_CONTROLLABEL, "LabelControl"); + PCR_CONSTASCII_STRING( PROPERTY_LABEL, "Label"); + PCR_CONSTASCII_STRING( PROPERTY_TABINDEX, "TabIndex"); + PCR_CONSTASCII_STRING( PROPERTY_TAG, "Tag"); + PCR_CONSTASCII_STRING( PROPERTY_NAME, "Name"); + PCR_CONSTASCII_STRING( PROPERTY_ROWCOUNT, "RowCount"); + PCR_CONSTASCII_STRING( PROPERTY_ROWCOUNTFINAL, "IsRowCountFinal"); + PCR_CONSTASCII_STRING( PROPERTY_FETCHSIZE, "FetchSize"); + PCR_CONSTASCII_STRING( PROPERTY_VALUE, "Value"); + PCR_CONSTASCII_STRING( PROPERTY_TEXT, "Text"); + PCR_CONSTASCII_STRING( PROPERTY_CANINSERT, "CanInsert"); + PCR_CONSTASCII_STRING( PROPERTY_CANUPDATE, "CanUpdate"); + PCR_CONSTASCII_STRING( PROPERTY_CANDELETE, "CanDelete"); + PCR_CONSTASCII_STRING( PROPERTY_NAVIGATION, "NavigationBarMode"); + PCR_CONSTASCII_STRING( PROPERTY_HASNAVIGATION, "HasNavigationBar"); + PCR_CONSTASCII_STRING( PROPERTY_CYCLE, "Cycle"); + PCR_CONSTASCII_STRING( PROPERTY_CONTROLSOURCE, "DataField"); + PCR_CONSTASCII_STRING( PROPERTY_ENABLED, "Enabled"); + PCR_CONSTASCII_STRING( PROPERTY_READONLY, "ReadOnly"); + PCR_CONSTASCII_STRING( PROPERTY_ISREADONLY, "IsReadOnly"); + PCR_CONSTASCII_STRING( PROPERTY_FILTER_CRITERIA, "Filter"); + PCR_CONSTASCII_STRING( PROPERTY_ISREQUIRED, "IsRequired"); + PCR_CONSTASCII_STRING( PROPERTY_AUTOINCREMENT, "IsAutoIncrement"); + PCR_CONSTASCII_STRING( PROPERTY_CACHESIZE, "CacheSize"); + PCR_CONSTASCII_STRING( PROPERTY_DATAENTRY, "DataEntry"); + PCR_CONSTASCII_STRING( PROPERTY_LASTDIRTY, "LastUpdated"); + PCR_CONSTASCII_STRING( PROPERTY_STATEMENT, "Statement"); + PCR_CONSTASCII_STRING( PROPERTY_WIDTH, "Width"); + PCR_CONSTASCII_STRING( PROPERTY_SEARCHABLE, "IsSearchable"); + PCR_CONSTASCII_STRING( PROPERTY_MULTILINE, "MultiLine"); + PCR_CONSTASCII_STRING( PROPERTY_TARGET_URL, "TargetURL"); + PCR_CONSTASCII_STRING( PROPERTY_TARGET_FRAME, "TargetFrame"); + PCR_CONSTASCII_STRING( PROPERTY_MAXTEXTLEN, "MaxTextLen"); + PCR_CONSTASCII_STRING( PROPERTY_EDITMASK, "EditMask"); + PCR_CONSTASCII_STRING( PROPERTY_SPIN, "Spin"); + PCR_CONSTASCII_STRING( PROPERTY_DATE, "Date"); + PCR_CONSTASCII_STRING( PROPERTY_TIME, "Time"); + PCR_CONSTASCII_STRING( PROPERTY_STATE, "State"); + PCR_CONSTASCII_STRING( PROPERTY_TRISTATE, "TriState"); + PCR_CONSTASCII_STRING( PROPERTY_HIDDEN_VALUE, "HiddenValue"); + PCR_CONSTASCII_STRING( PROPERTY_BUTTONTYPE, "ButtonType"); + PCR_CONSTASCII_STRING( PROPERTY_STRINGITEMLIST, "StringItemList"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULT_TEXT, "DefaultText"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULTCHECKED, "DefaultState"); + PCR_CONSTASCII_STRING( PROPERTY_FORMATKEY, "FormatKey"); + PCR_CONSTASCII_STRING( PROPERTY_FORMATSSUPPLIER, "FormatsSupplier"); + PCR_CONSTASCII_STRING( PROPERTY_SUBMIT_ACTION, "SubmitAction"); + PCR_CONSTASCII_STRING( PROPERTY_SUBMIT_TARGET, "SubmitTarget"); + PCR_CONSTASCII_STRING( PROPERTY_SUBMIT_METHOD, "SubmitMethod"); + PCR_CONSTASCII_STRING( PROPERTY_SUBMIT_ENCODING, "SubmitEncoding"); + PCR_CONSTASCII_STRING( PROPERTY_IMAGE_URL, "ImageURL"); + PCR_CONSTASCII_STRING( PROPERTY_EMPTY_IS_NULL, "ConvertEmptyToNull"); + PCR_CONSTASCII_STRING( PROPERTY_LISTSOURCETYPE, "ListSourceType"); + PCR_CONSTASCII_STRING( PROPERTY_LISTSOURCE, "ListSource"); + PCR_CONSTASCII_STRING( PROPERTY_SELECT_SEQ, "SelectedItems"); + PCR_CONSTASCII_STRING( PROPERTY_VALUE_SEQ, "ValueItemList"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULT_SELECT_SEQ, "DefaultSelection"); + PCR_CONSTASCII_STRING( PROPERTY_MULTISELECTION, "MultiSelection"); + PCR_CONSTASCII_STRING( PROPERTY_ALIGN, "Align"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULT_DATE, "DefaultDate"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULT_TIME, "DefaultTime"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULT_VALUE, "DefaultValue"); + PCR_CONSTASCII_STRING( PROPERTY_DECIMAL_ACCURACY, "DecimalAccuracy"); + PCR_CONSTASCII_STRING( PROPERTY_CURSORSOURCE, "DataSelection"); + PCR_CONSTASCII_STRING( PROPERTY_CURSORSOURCETYPE, "DataSelectionType"); + PCR_CONSTASCII_STRING( PROPERTY_FIELDTYPE, "Type"); + PCR_CONSTASCII_STRING( PROPERTY_DECIMALS, "Decimals"); + PCR_CONSTASCII_STRING( PROPERTY_REFVALUE, "RefValue"); + PCR_CONSTASCII_STRING( PROPERTY_VALUEMIN, "ValueMin"); + PCR_CONSTASCII_STRING( PROPERTY_VALUEMAX, "ValueMax"); + PCR_CONSTASCII_STRING( PROPERTY_STRICTFORMAT, "StrictFormat"); + PCR_CONSTASCII_STRING( PROPERTY_ALLOWADDITIONS, "AllowInserts"); + PCR_CONSTASCII_STRING( PROPERTY_ALLOWEDITS, "AllowUpdates"); + PCR_CONSTASCII_STRING( PROPERTY_ALLOWDELETIONS, "AllowDeletes"); + PCR_CONSTASCII_STRING( PROPERTY_MASTERFIELDS, "MasterFields"); + PCR_CONSTASCII_STRING( PROPERTY_ISPASSTHROUGH, "IsPassThrough"); + PCR_CONSTASCII_STRING( PROPERTY_QUERY, "Query"); + PCR_CONSTASCII_STRING( PROPERTY_LITERALMASK, "LiteralMask"); + PCR_CONSTASCII_STRING( PROPERTY_VALUESTEP, "ValueStep"); + PCR_CONSTASCII_STRING( PROPERTY_SHOWTHOUSANDSEP, "ShowThousandsSeparator"); + PCR_CONSTASCII_STRING( PROPERTY_CURRENCYSYMBOL, "CurrencySymbol"); + PCR_CONSTASCII_STRING( PROPERTY_DATEFORMAT, "DateFormat"); + PCR_CONSTASCII_STRING( PROPERTY_DATEMIN, "DateMin"); + PCR_CONSTASCII_STRING( PROPERTY_DATEMAX, "DateMax"); + PCR_CONSTASCII_STRING( PROPERTY_DATE_SHOW_CENTURY, "DateShowCentury"); + PCR_CONSTASCII_STRING( PROPERTY_TIMEFORMAT, "TimeFormat"); + PCR_CONSTASCII_STRING( PROPERTY_TIMEMIN, "TimeMin"); + PCR_CONSTASCII_STRING( PROPERTY_TIMEMAX, "TimeMax"); + PCR_CONSTASCII_STRING( PROPERTY_LINECOUNT, "LineCount"); + PCR_CONSTASCII_STRING( PROPERTY_BOUNDCOLUMN, "BoundColumn"); + PCR_CONSTASCII_STRING( PROPERTY_FONT, "FontDescriptor"); + PCR_CONSTASCII_STRING( PROPERTY_BACKGROUNDCOLOR, "BackgroundColor"); + PCR_CONSTASCII_STRING( PROPERTY_FILLCOLOR, "FillColor"); + PCR_CONSTASCII_STRING( PROPERTY_TEXTCOLOR, "TextColor"); + PCR_CONSTASCII_STRING( PROPERTY_LINECOLOR, "LineColor"); + PCR_CONSTASCII_STRING( PROPERTY_BORDER, "Border"); + PCR_CONSTASCII_STRING( PROPERTY_DROPDOWN, "Dropdown"); + PCR_CONSTASCII_STRING( PROPERTY_MULTI, "Multi"); + PCR_CONSTASCII_STRING( PROPERTY_HSCROLL, "HScroll"); + PCR_CONSTASCII_STRING( PROPERTY_VSCROLL, "VScroll"); + PCR_CONSTASCII_STRING( PROPERTY_TABSTOP, "Tabstop"); + PCR_CONSTASCII_STRING( PROPERTY_AUTOCOMPLETE, "Autocomplete"); + PCR_CONSTASCII_STRING( PROPERTY_HARDLINEBREAKS, "HardLineBreaks"); + PCR_CONSTASCII_STRING( PROPERTY_PRINTABLE, "Printable"); + PCR_CONSTASCII_STRING( PROPERTY_ECHO_CHAR, "EchoChar"); + PCR_CONSTASCII_STRING( PROPERTY_ROWHEIGHT, "RowHeight"); + PCR_CONSTASCII_STRING( PROPERTY_HELPTEXT, "HelpText"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_NAME, "FontName"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_STYLENAME, "FontStyleName"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_FAMILY, "FontFamily"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_CHARSET, "FontCharset"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_HEIGHT, "FontHeight"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_WEIGHT, "FontWeight"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_SLANT, "FontSlant"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_UNDERLINE, "FontUnderline"); + PCR_CONSTASCII_STRING( PROPERTY_FONT_STRIKEOUT, "FontStrikeout"); + PCR_CONSTASCII_STRING( PROPERTY_HELPURL, "HelpURL"); + PCR_CONSTASCII_STRING( PROPERTY_RECORDMARKER, "HasRecordMarker"); + PCR_CONSTASCII_STRING( PROPERTY_BOUNDFIELD, "BoundField"); + PCR_CONSTASCII_STRING( PROPERTY_TREATASNUMERIC, "TreatAsNumber"); + PCR_CONSTASCII_STRING( PROPERTY_EFFECTIVE_VALUE, "EffectiveValue"); + PCR_CONSTASCII_STRING( PROPERTY_EFFECTIVE_DEFAULT, "EffectiveDefault"); + PCR_CONSTASCII_STRING( PROPERTY_EFFECTIVE_MIN, "EffectiveMin"); + PCR_CONSTASCII_STRING( PROPERTY_EFFECTIVE_MAX, "EffectiveMax"); + PCR_CONSTASCII_STRING( PROPERTY_HIDDEN, "Hidden"); + PCR_CONSTASCII_STRING( PROPERTY_FILTERPROPOSAL, "UseFilterValueProposal"); + PCR_CONSTASCII_STRING( PROPERTY_FIELDSOURCE, "FieldSource"); + PCR_CONSTASCII_STRING( PROPERTY_TABLENAME, "TableName"); + PCR_CONSTASCII_STRING( PROPERTY_FILTERSUPPLIER, "FilterSupplier"); + PCR_CONSTASCII_STRING( PROPERTY_CURRENTFILTER, "CurrentFilter"); + PCR_CONSTASCII_STRING( PROPERTY_SELECTED_FIELDS, "SelectedFields"); + PCR_CONSTASCII_STRING( PROPERTY_SELECTED_TABLES, "SelectedTables"); + PCR_CONSTASCII_STRING( PROPERTY_THREADSAFE, "ThreadSafe"); + PCR_CONSTASCII_STRING( PROPERTY_ISFILTERAPPLIED, "IsFilterApplied"); + PCR_CONSTASCII_STRING( PROPERTY_CURRSYM_POSITION, "PrependCurrencySymbol"); + PCR_CONSTASCII_STRING( PROPERTY_SOURCE, "Source"); + PCR_CONSTASCII_STRING( PROPERTY_CURSORCOLOR, "CursorColor"); + PCR_CONSTASCII_STRING( PROPERTY_ALWAYSSHOWCURSOR, "AlwaysShowCursor"); + PCR_CONSTASCII_STRING( PROPERTY_DISPLAYSYNCHRON, "DisplayIsSynchron"); + PCR_CONSTASCII_STRING( PROPERTY_ISMODIFIED, "IsModified"); + PCR_CONSTASCII_STRING( PROPERTY_ISNEW, "IsNew"); + PCR_CONSTASCII_STRING( PROPERTY_PRIVILEGES, "Privileges"); + PCR_CONSTASCII_STRING( PROPERTY_COMMAND, "Command"); + PCR_CONSTASCII_STRING( PROPERTY_COMMANDTYPE, "CommandType"); + PCR_CONSTASCII_STRING( PROPERTY_RESULTSET_CONCURRENCY, "ResultSetConcurrency"); + PCR_CONSTASCII_STRING( PROPERTY_INSERTONLY, "IgnoreResult"); + PCR_CONSTASCII_STRING( PROPERTY_RESULTSET_TYPE, "ResultSetType"); + PCR_CONSTASCII_STRING( PROPERTY_ESCAPE_PROCESSING, "EscapeProcessing"); + PCR_CONSTASCII_STRING( PROPERTY_APPLYFILTER, "ApplyFilter"); + PCR_CONSTASCII_STRING( PROPERTY_ISNULLABLE, "IsNullable"); + PCR_CONSTASCII_STRING( PROPERTY_ACTIVECOMMAND, "ActiveCommand"); + PCR_CONSTASCII_STRING( PROPERTY_ISCURRENCY, "IsCurrency"); + PCR_CONSTASCII_STRING( PROPERTY_NUMBER_FORMATS_SUPPLIER,"NumberFormatsSupplier"); + PCR_CONSTASCII_STRING( PROPERTY_URL, "URL"); + PCR_CONSTASCII_STRING( PROPERTY_TITLE, "Title"); + PCR_CONSTASCII_STRING( PROPERTY_ACTIVE_CONNECTION, "ActiveConnection"); + PCR_CONSTASCII_STRING( PROPERTY_SCALE, "Scale"); + PCR_CONSTASCII_STRING( PROPERTY_SORT, "Order"); + PCR_CONSTASCII_STRING( PROPERTY_DATASOURCE, "DataSourceName"); + PCR_CONSTASCII_STRING( PROPERTY_DETAILFIELDS, "DetailFields"); + PCR_CONSTASCII_STRING( PROPERTY_REALNAME, "RealName"); + PCR_CONSTASCII_STRING( PROPERTY_CONTROLSOURCEPROPERTY, "DataFieldProperty"); + PCR_CONSTASCII_STRING( PROPERTY_DEFAULTBUTTON, "DefaultButton"); + PCR_CONSTASCII_STRING( PROPERTY_LISTINDEX, "ListIndex"); + PCR_CONSTASCII_STRING( PROPERTY_HEIGHT, "Height"); + + // services + PCR_CONSTASCII_STRING( SERVICE_COMPONENT_GROUPBOX, "com.sun.star.form.component.GroupBox"); + PCR_CONSTASCII_STRING( SERVICE_COMPONENT_FIXEDTEXT, "com.sun.star.form.component.FixedText"); + PCR_CONSTASCII_STRING( SERVICE_COMPONENT_FORMATTEDFIELD,"com.sun.star.form.component.FormattedField"); + PCR_CONSTASCII_STRING( SERVICE_DATABASE_CONTEXT, "com.sun.star.sdb.DatabaseContext"); + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 14:17:16 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/linedescriptor.hxx b/extensions/source/propctrlr/linedescriptor.hxx new file mode 100644 index 000000000..55b7f73f3 --- /dev/null +++ b/extensions/source/propctrlr/linedescriptor.hxx @@ -0,0 +1,154 @@ +/************************************************************************* + * + * $RCSfile: linedescriptor.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:29:21 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_LINEDESCRIPTOR_HXX_ +#define _EXTENSIONS_PROPCTRLR_LINEDESCRIPTOR_HXX_ + +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROL_HXX_ +#include "brwcontrol.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + class IBrowserControl; + //======================================================================== + //= OLineDescriptor + //======================================================================== + struct OLineDescriptor + { + String sName; + String sTitle; + String sValue; + ::std::vector< String> aListValues; + void* pDataPtr; + IBrowserControl* pControl; + BrowserControlType eControlType; + sal_uInt32 nHelpId; + sal_uInt32 nUniqueButtonId; + sal_uInt16 nDigits; // for numeric fields + sal_Int32 nMinValue; // for numeric fields only + sal_Int32 nMaxValue; // for numeric fields only + + sal_Bool bUnknownValue :1; + sal_Bool bHasDefaultValue:1; + sal_Bool bHasBrowseButton:1; + sal_Bool bIsHyperlink :1; + sal_Bool bIsLocked :1; + sal_Bool bHaveMinMax :1; + + OLineDescriptor() + :eControlType(BCT_UNDEFINED) + ,nHelpId(0) + ,bUnknownValue(sal_False) + ,bHasDefaultValue(sal_False) + ,bHasBrowseButton(sal_False) + ,bIsHyperlink(sal_False) + ,bIsLocked(sal_False) + ,pDataPtr(NULL) + ,pControl(NULL) + ,nDigits(0) + ,nUniqueButtonId(0) + ,nMinValue(0) + ,nMaxValue(-1) + ,bHaveMinMax(sal_False) + { + } + + // does not copy theValues + // TODO: (fs) why? + OLineDescriptor(const OLineDescriptor& rData) + :eControlType(rData.eControlType) + ,sValue(rData.sValue) + ,sTitle(rData.sTitle) + ,sName(rData.sName) + ,nHelpId(rData.nHelpId) + ,bUnknownValue(rData.bUnknownValue) + ,bHasDefaultValue(rData.bHasDefaultValue) + ,bHasBrowseButton(rData.bHasBrowseButton) + ,bIsHyperlink(rData.bIsHyperlink) + ,bIsLocked(rData.bIsLocked) + ,pDataPtr(rData.pDataPtr) + ,pControl(rData.pControl) + ,nDigits(rData.nDigits) + ,nUniqueButtonId(rData.nUniqueButtonId) + ,nMinValue(rData.nMinValue) + ,nMaxValue(rData.nMaxValue) + ,bHaveMinMax(rData.bHaveMinMax) + { + } + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif _EXTENSIONS_PROPCTRLR_LINEDESCRIPTOR_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 12:30:27 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/makefile.mk b/extensions/source/propctrlr/makefile.mk new file mode 100644 index 000000000..dc1a7c962 --- /dev/null +++ b/extensions/source/propctrlr/makefile.mk @@ -0,0 +1,247 @@ +#************************************************************************* +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.1 $ +# +# last change: $Author: fs $ $Date: 2001-01-12 11:29:30 $ +# +# The Contents of this file are made available subject to the terms of +# either of the following licenses +# +# - GNU Lesser General Public License Version 2.1 +# - Sun Industry Standards Source License Version 1.1 +# +# Sun Microsystems Inc., October, 2000 +# +# GNU Lesser General Public License Version 2.1 +# ============================================= +# Copyright 2000 by Sun Microsystems, Inc. +# 901 San Antonio Road, Palo Alto, CA 94303, USA +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1, as published by the Free Software Foundation. +# +# This library 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 for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# +# +# Sun Industry Standards Source License Version 1.1 +# ================================================= +# The contents of this file are subject to the Sun Industry Standards +# Source License Version 1.1 (the "License"); You may not use this file +# except in compliance with the License. You may obtain a copy of the +# License at http://www.openoffice.org/license.html. +# +# Software provided under this License is provided on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, +# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. +# See the License for the specific provisions governing your rights and +# obligations concerning the Software. +# +# The Initial Developer of the Original Code is: Sun Microsystems, Inc. +# +# Copyright: 2000 by Sun Microsystems, Inc. +# +# All Rights Reserved. +# +# Contributor(s): _______________________________________ +# +# +# +#************************************************************************* +PRJ=..$/.. + +PRJNAME=pcr +TARGET=pcr +ENABLE_EXCEPTIONS=TRUE +USE_DEFFILE=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE : $(PRJ)$/util$/makefile.pmk + +# --- Files -------------------------------------------------------- + +#Create UNO Header files +UNOUCROUT=$(OUT)$/inc$/$(PRJNAME) +INCPRE+=$(UNOUCROUT) + +UNOUCRDEP= $(SOLARBINDIR)$/applicat.rdb +UNOUCRRDB= $(SOLARBINDIR)$/applicat.rdb + +UNOTYPES=\ + com.sun.star.frame.XController \ + com.sun.star.frame.XFrame \ + com.sun.star.beans.XPropertyState \ + com.sun.star.beans.XPropertySet \ + com.sun.star.beans.XMultiPropertySet \ + com.sun.star.beans.XFastPropertySet \ + com.sun.star.beans.XIntrospectionAccess \ + com.sun.star.beans.XIntrospection \ + com.sun.star.beans.Property \ + com.sun.star.beans.PropertyConcept \ + com.sun.star.beans.PropertyAttribute \ + com.sun.star.form.ListSourceType \ + com.sun.star.form.XForm \ + com.sun.star.form.XFormController \ + com.sun.star.form.XGridColumnFactory \ + com.sun.star.form.FormComponentType \ + com.sun.star.script.XEventAttacherManager \ + com.sun.star.lang.XInitialization \ + com.sun.star.lang.Locale \ + com.sun.star.lang.XMultiServiceFactory \ + com.sun.star.container.XChild \ + com.sun.star.i18n.NumberFormatCode \ + com.sun.star.i18n.XLocaleData \ + com.sun.star.i18n.LocaleItem \ + com.sun.star.i18n.reservedWords \ + com.sun.star.util.XTextSearch \ + com.sun.star.util.XNumberFormatsSupplier \ + com.sun.star.util.XNumberFormatTypes \ + com.sun.star.lang.XUnoTunnel \ + com.sun.star.util.URL \ + com.sun.star.connection.XConnection \ + com.sun.star.lang.Locale \ + com.sun.star.sdbc.XResultSet \ + com.sun.star.sdbc.XRowSet \ + com.sun.star.sdbc.XPreparedStatement \ + com.sun.star.sdbc.XDataSource \ + com.sun.star.script.XTypeConverter \ + com.sun.star.sdbcx.XTablesSupplier \ + com.sun.star.sdbcx.XColumnsSupplier \ + com.sun.star.sdb.XQueriesSupplier \ + com.sun.star.awt.FontWeight \ + com.sun.star.awt.FontUnderline \ + com.sun.star.awt.FontStrikeout \ + com.sun.star.awt.FontSlant \ + com.sun.star.uno.XNamingService \ + com.sun.star.frame.XController \ + com.sun.star.awt.XVclWindowPeer \ + com.sun.star.awt.XLayoutConstrains \ + com.sun.star.awt.XView \ + com.sun.star.awt.XPointer \ + com.sun.star.awt.XGraphics \ + com.sun.star.awt.XVclContainerListener \ + com.sun.star.awt.XKeyListener \ + com.sun.star.awt.XMouseListener \ + com.sun.star.awt.XMouseMotionListener \ + com.sun.star.awt.XPaintListener \ + com.sun.star.awt.XTopWindowListener \ + com.sun.star.awt.XTextListener \ + com.sun.star.awt.XActionListener \ + com.sun.star.awt.XItemListener \ + com.sun.star.container.XContainerListener \ + com.sun.star.awt.XSpinListener \ + com.sun.star.awt.XAdjustmentListener \ + com.sun.star.awt.XMenuListener \ + + +CXXFILES= pcrservices.cxx \ + browserline.cxx \ + selectlabeldialog.cxx \ + formcontroller.cxx \ + formmetadata.cxx \ + formbrowsertools.cxx \ + standardcontrol.cxx \ + usercontrol.cxx \ + commoncontrol.cxx \ + browserpage.cxx \ + browserlistbox.cxx \ + propertyeditor.cxx \ + formstrings.cxx \ + pcrstrings.cxx \ + browserview.cxx \ + propcontroller.cxx \ + pcrcommon.cxx \ + modulepcr.cxx + +SLOFILES= $(SLO)$/pcrservices.obj \ + $(SLO)$/browserline.obj \ + $(SLO)$/selectlabeldialog.obj \ + $(SLO)$/formcontroller.obj \ + $(SLO)$/formmetadata.obj \ + $(SLO)$/formbrowsertools.obj \ + $(SLO)$/standardcontrol.obj \ + $(SLO)$/usercontrol.obj \ + $(SLO)$/commoncontrol.obj \ + $(SLO)$/browserpage.obj \ + $(SLO)$/browserlistbox.obj \ + $(SLO)$/propertyeditor.obj \ + $(SLO)$/formstrings.obj \ + $(SLO)$/pcrstrings.obj \ + $(SLO)$/browserview.obj \ + $(SLO)$/propcontroller.obj \ + $(SLO)$/pcrcommon.obj \ + $(SLO)$/modulepcr.obj + + +SRCFILES= propres.src \ + formres.src + +RESLIB1NAME=pcr +RESLIB1SRSFILES= $(SRS)/pcr.srs +#RESLIB1DEPN= pcr.src pcr.hrc + +IMGLST_SRS=$(SRS)$/pcr.srs + +SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX) +SHL1VERSIONMAP= $(TARGET).map + +SHL1STDLIBS= \ + $(CPPULIB) \ + $(CPPUHELPERLIB) \ + $(COMPHELPERLIB) \ + $(VOSLIB) \ + $(TOOLSLIB) \ + $(SO2LIB) \ + $(VCLLIB) \ + $(TKLIB) \ + $(SVTOOLLIB)\ + $(SVLLIB) \ + $(OSLLIB) \ + $(SALLIB) \ + $(UNOTOOLSLIB) \ + $(SOTLIB) \ + $(UCBHELPERLIB) \ + $(SVXLIB) \ + $(SFXLIB) \ + $(DBTOOLSLIB) + + +SHL1LIBS= $(SLB)$/$(TARGET).lib +SHL1IMPLIB= i$(TARGET) +SHL1DEPN= $(SHL1LIBS) +SHL1DEF= $(MISC)$/$(SHL1TARGET).def + +DEF1NAME= $(SHL1TARGET) +#DEF1DEPN= $(MISC)$/$(SHL1TARGET).flt +#DEFLIB1NAME= $(TARGET) +DEF1EXPORTFILE= exports.dxp + + + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + +#$(MISC)$/$(SHL1TARGET).flt: makefile.mk +# @echo ------------------------------ +# @echo Making: $@ +# @echo _Impl >$@ +# @echo _real >>$@ +# @echo _TI1 >>$@ +# @echo _TI2 >>$@ +# @echo WEP >>$@ +# @echo LIBMAIN >>$@ +# @echo LibMain >>$@ + diff --git a/extensions/source/propctrlr/modulepcr.cxx b/extensions/source/propctrlr/modulepcr.cxx new file mode 100644 index 000000000..f82089439 --- /dev/null +++ b/extensions/source/propctrlr/modulepcr.cxx @@ -0,0 +1,367 @@ +/************************************************************************* + * + * $RCSfile: modulepcr.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:29:40 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPCR_HXX_ +#include "modulepcr.hxx" +#endif + +#ifndef _TOOLS_RESMGR_HXX +#include <tools/resmgr.hxx> +#endif +#ifndef _SOLAR_HRC +#include <svtools/solar.hrc> +#endif +#ifndef _COMPHELPER_SEQUENCE_HXX_ +#include <comphelper/sequence.hxx> +#endif + +#define ENTER_MOD_METHOD() \ + ::osl::MutexGuard aGuard(s_aMutex); \ + ensureImpl() + +//......................................................................... +namespace pcr +{ +//......................................................................... + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::lang; + using namespace ::com::sun::star::registry; + using namespace ::comphelper; + using namespace ::cppu; + + //========================================================================= + //= OModuleImpl + //========================================================================= + /** implementation for <type>OModule</type>. not threadsafe, has to be guarded by it's owner + */ + class OModuleImpl + { + ResMgr* m_pRessources; + + public: + /// ctor + OModuleImpl(); + ~OModuleImpl(); + + /// get the manager for the ressources of the module + ResMgr* getResManager(); + }; + + //------------------------------------------------------------------------- + OModuleImpl::OModuleImpl() + :m_pRessources(NULL) + { + } + + //------------------------------------------------------------------------- + OModuleImpl::~OModuleImpl() + { + if (m_pRessources) + delete m_pRessources; + } + + //------------------------------------------------------------------------- + ResMgr* OModuleImpl::getResManager() + { + // note that this method is not threadsafe, which counts for the whole class ! + + if (!m_pRessources) + { + // create a manager with a fixed prefix + ByteString aMgrName = ByteString( "pcr" ); + aMgrName += ByteString::CreateFromInt32(SOLARUPD); // current build number + m_pRessources = ResMgr::CreateResMgr(aMgrName.GetBuffer()); + } + return m_pRessources; + } + + //========================================================================= + //= OModule + //========================================================================= + ::osl::Mutex OModule::s_aMutex; + sal_Int32 OModule::s_nClients = 0; + OModuleImpl* OModule::s_pImpl = NULL; + //------------------------------------------------------------------------- + ResMgr* OModule::getResManager() + { + ENTER_MOD_METHOD(); + return s_pImpl->getResManager(); + } + + //------------------------------------------------------------------------- + void OModule::registerClient() + { + ::osl::MutexGuard aGuard(s_aMutex); + ++s_nClients; + } + + //------------------------------------------------------------------------- + void OModule::revokeClient() + { + ::osl::MutexGuard aGuard(s_aMutex); + if (!--s_nClients && s_pImpl) + { + delete s_pImpl; + s_pImpl = NULL; + } + } + + //------------------------------------------------------------------------- + void OModule::ensureImpl() + { + if (s_pImpl) + return; + s_pImpl = new OModuleImpl(); + } + + //-------------------------------------------------------------------------- + //- registration helper + //-------------------------------------------------------------------------- + + Sequence< ::rtl::OUString >* OModule::s_pImplementationNames = NULL; + Sequence< Sequence< ::rtl::OUString > >* OModule::s_pSupportedServices = NULL; + Sequence< sal_Int64 >* OModule::s_pCreationFunctionPointers = NULL; + Sequence< sal_Int64 >* OModule::s_pFactoryFunctionPointers = NULL; + + //-------------------------------------------------------------------------- + void OModule::registerComponent( + const ::rtl::OUString& _rImplementationName, + const Sequence< ::rtl::OUString >& _rServiceNames, + ComponentInstantiation _pCreateFunction, + FactoryInstantiation _pFactoryFunction) + { + if (!s_pImplementationNames) + { + OSL_ENSHURE(!s_pSupportedServices && !s_pCreationFunctionPointers && !s_pFactoryFunctionPointers, + "OModule::registerComponent : inconsistent state (the pointers (1)) !"); + s_pImplementationNames = new Sequence< ::rtl::OUString >; + s_pSupportedServices = new Sequence< Sequence< ::rtl::OUString > >; + s_pCreationFunctionPointers = new Sequence< sal_Int64 >; + s_pFactoryFunctionPointers = new Sequence< sal_Int64 >; + } + OSL_ENSHURE(s_pImplementationNames && s_pSupportedServices && s_pCreationFunctionPointers && s_pFactoryFunctionPointers, + "OModule::registerComponent : inconsistent state (the pointers (2)) !"); + + OSL_ENSHURE( (s_pImplementationNames->getLength() == s_pSupportedServices->getLength()) + && (s_pImplementationNames->getLength() == s_pCreationFunctionPointers->getLength()) + && (s_pImplementationNames->getLength() == s_pFactoryFunctionPointers->getLength()), + "OModule::registerComponent : inconsistent state !"); + + sal_Int32 nOldLen = s_pImplementationNames->getLength(); + s_pImplementationNames->realloc(nOldLen + 1); + s_pSupportedServices->realloc(nOldLen + 1); + s_pCreationFunctionPointers->realloc(nOldLen + 1); + s_pFactoryFunctionPointers->realloc(nOldLen + 1); + + s_pImplementationNames->getArray()[nOldLen] = _rImplementationName; + s_pSupportedServices->getArray()[nOldLen] = _rServiceNames; + s_pCreationFunctionPointers->getArray()[nOldLen] = reinterpret_cast<sal_Int64>(_pCreateFunction); + s_pFactoryFunctionPointers->getArray()[nOldLen] = reinterpret_cast<sal_Int64>(_pFactoryFunction); + } + + //-------------------------------------------------------------------------- + void OModule::revokeComponent(const ::rtl::OUString& _rImplementationName) + { + if (!s_pImplementationNames) + { + OSL_ASSERT("OModule::revokeComponent : have no class infos ! Are you sure called this method at the right time ?"); + return; + } + OSL_ENSHURE(s_pImplementationNames && s_pSupportedServices && s_pCreationFunctionPointers && s_pFactoryFunctionPointers, + "OModule::revokeComponent : inconsistent state (the pointers) !"); + OSL_ENSHURE( (s_pImplementationNames->getLength() == s_pSupportedServices->getLength()) + && (s_pImplementationNames->getLength() == s_pCreationFunctionPointers->getLength()) + && (s_pImplementationNames->getLength() == s_pFactoryFunctionPointers->getLength()), + "OModule::revokeComponent : inconsistent state !"); + + sal_Int32 nLen = s_pImplementationNames->getLength(); + const ::rtl::OUString* pImplNames = s_pImplementationNames->getConstArray(); + for (sal_Int32 i=0; i<nLen; ++i, ++pImplNames) + { + if (pImplNames->equals(_rImplementationName)) + { + removeElementAt(*s_pImplementationNames, i); + removeElementAt(*s_pSupportedServices, i); + removeElementAt(*s_pCreationFunctionPointers, i); + removeElementAt(*s_pFactoryFunctionPointers, i); + break; + } + } + + if (s_pImplementationNames->getLength() == 0) + { + delete s_pImplementationNames; s_pImplementationNames = NULL; + delete s_pSupportedServices; s_pSupportedServices = NULL; + delete s_pCreationFunctionPointers; s_pCreationFunctionPointers = NULL; + delete s_pFactoryFunctionPointers; s_pFactoryFunctionPointers = NULL; + } + } + + //-------------------------------------------------------------------------- + sal_Bool OModule::writeComponentInfos( + const Reference< XMultiServiceFactory >& /*_rxServiceManager*/, + const Reference< XRegistryKey >& _rxRootKey) + { + OSL_ENSHURE(_rxRootKey.is(), "OModule::writeComponentInfos : invalid argument !"); + + if (!s_pImplementationNames) + { + OSL_ASSERT("OModule::writeComponentInfos : have no class infos ! Are you sure called this method at the right time ?"); + return sal_True; + } + OSL_ENSHURE(s_pImplementationNames && s_pSupportedServices && s_pCreationFunctionPointers && s_pFactoryFunctionPointers, + "OModule::writeComponentInfos : inconsistent state (the pointers) !"); + OSL_ENSHURE( (s_pImplementationNames->getLength() == s_pSupportedServices->getLength()) + && (s_pImplementationNames->getLength() == s_pCreationFunctionPointers->getLength()) + && (s_pImplementationNames->getLength() == s_pFactoryFunctionPointers->getLength()), + "OModule::writeComponentInfos : inconsistent state !"); + + sal_Int32 nLen = s_pImplementationNames->getLength(); + const ::rtl::OUString* pImplName = s_pImplementationNames->getConstArray(); + const Sequence< ::rtl::OUString >* pServices = s_pSupportedServices->getConstArray(); + + ::rtl::OUString sRootKey("/", 1, RTL_TEXTENCODING_ASCII_US); + for (sal_Int32 i=0; i<nLen; ++i, ++pImplName, ++pServices) + { + ::rtl::OUString aMainKeyName(sRootKey); + aMainKeyName += *pImplName; + aMainKeyName += ::rtl::OUString::createFromAscii("/UNO/SERVICES"); + + try + { + Reference< XRegistryKey > xNewKey( _rxRootKey->createKey(aMainKeyName) ); + + const ::rtl::OUString* pService = pServices->getConstArray(); + for (sal_Int32 j=0; j<pServices->getLength(); ++j, ++pService) + xNewKey->createKey(*pService); + } + catch(Exception&) + { + OSL_ASSERT("OModule::writeComponentInfos : something went wrong while creating the keys !"); + return sal_False; + } + } + + return sal_True; + } + + //-------------------------------------------------------------------------- + Reference< XInterface > OModule::getComponentFactory( + const ::rtl::OUString& _rImplementationName, + const Reference< XMultiServiceFactory >& _rxServiceManager) + { + OSL_ENSHURE(_rxServiceManager.is(), "OModule::getComponentFactory : invalid argument (service manager) !"); + OSL_ENSHURE(_rImplementationName.getLength(), "OModule::getComponentFactory : invalid argument (implementation name) !"); + + if (!s_pImplementationNames) + { + OSL_ASSERT("OModule::getComponentFactory : have no class infos ! Are you sure called this method at the right time ?"); + return NULL; + } + OSL_ENSHURE(s_pImplementationNames && s_pSupportedServices && s_pCreationFunctionPointers && s_pFactoryFunctionPointers, + "OModule::getComponentFactory : inconsistent state (the pointers) !"); + OSL_ENSHURE( (s_pImplementationNames->getLength() == s_pSupportedServices->getLength()) + && (s_pImplementationNames->getLength() == s_pCreationFunctionPointers->getLength()) + && (s_pImplementationNames->getLength() == s_pFactoryFunctionPointers->getLength()), + "OModule::getComponentFactory : inconsistent state !"); + + + Reference< XInterface > xReturn; + + + sal_Int32 nLen = s_pImplementationNames->getLength(); + const ::rtl::OUString* pImplName = s_pImplementationNames->getConstArray(); + const Sequence< ::rtl::OUString >* pServices = s_pSupportedServices->getConstArray(); + const sal_Int64* pComponentFunction = s_pCreationFunctionPointers->getConstArray(); + const sal_Int64* pFactoryFunction = s_pFactoryFunctionPointers->getConstArray(); + + for (sal_Int32 i=0; i<nLen; ++i, ++pImplName, ++pServices, ++pComponentFunction, ++pFactoryFunction) + { + if (pImplName->equals(_rImplementationName)) + { + const FactoryInstantiation FactoryInstantiationFunction = reinterpret_cast<const FactoryInstantiation>(*pFactoryFunction); + const ComponentInstantiation ComponentInstantiationFunction = reinterpret_cast<const ComponentInstantiation>(*pComponentFunction); + + xReturn = FactoryInstantiationFunction( _rxServiceManager, *pImplName, ComponentInstantiationFunction, *pServices); + if (xReturn.is()) + { + xReturn->acquire(); + return xReturn.get(); + } + } + } + + return NULL; + } + + +//......................................................................... +} // namespace pcr +//......................................................................... + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 12:54:13 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/modulepcr.hxx b/extensions/source/propctrlr/modulepcr.hxx new file mode 100644 index 000000000..e7c4d21b5 --- /dev/null +++ b/extensions/source/propctrlr/modulepcr.hxx @@ -0,0 +1,319 @@ +/************************************************************************* + * + * $RCSfile: modulepcr.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:29:50 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#define _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ + +#ifndef _OSL_MUTEX_HXX_ +#include <osl/mutex.hxx> +#endif +#ifndef _TOOLS_RESID_HXX +#include <tools/resid.hxx> +#endif +#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#endif +#ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_ +#include <com/sun/star/lang/XSingleServiceFactory.hpp> +#endif +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ +#include <com/sun/star/uno/Sequence.hxx> +#endif +#ifndef _COM_SUN_STAR_REGISTRY_XREGISTRYKEY_HPP_ +#include <com/sun/star/registry/XRegistryKey.hpp> +#endif +#ifndef _CPPUHELPER_FACTORY_HXX_ +#include <cppuhelper/factory.hxx> +#endif + +class ResMgr; + +//......................................................................... +namespace pcr +{ +//......................................................................... + +typedef ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > (SAL_CALL *FactoryInstantiation) + ( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rServiceManager, + const ::rtl::OUString & _rComponentName, + ::cppu::ComponentInstantiation _pCreateFunction, + const ::com::sun::star::uno::Sequence< ::rtl::OUString > & _rServiceNames + ); + + //========================================================================= + //= OModule + //========================================================================= + class OModuleImpl; + class OModule + { + friend class OModuleResourceClient; + + private: + OModule(); + // not implemented. OModule is a static class + + protected: + // resource administration + static ::osl::Mutex s_aMutex; /// access safety + static sal_Int32 s_nClients; /// number of registered clients + static OModuleImpl* s_pImpl; /// impl class. lives as long as at least one client for the module is registered + + // auto registration administration + static ::com::sun::star::uno::Sequence< ::rtl::OUString >* + s_pImplementationNames; + static ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > >* + s_pSupportedServices; + static ::com::sun::star::uno::Sequence< sal_Int64 >* + s_pCreationFunctionPointers; + static ::com::sun::star::uno::Sequence< sal_Int64 >* + s_pFactoryFunctionPointers; + + public: + /// get the vcl res manager of the module + static ResMgr* getResManager(); + + /** register a component implementing a service with the given data. + @param _rImplementationName + the implementation name of the component + @param _rServiceNames + the services the component supports + @param _pCreateFunction + a function for creating an instance of the component + @param _pFactoryFunction + a function for creating a factory for that component + @see revokeComponent + */ + static void registerComponent( + const ::rtl::OUString& _rImplementationName, + const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rServiceNames, + ::cppu::ComponentInstantiation _pCreateFunction, + FactoryInstantiation _pFactoryFunction); + + /** revoke the registration for the specified component + @param _rImplementationName + the implementation name of the component + */ + static void revokeComponent( + const ::rtl::OUString& _rImplementationName); + + /** write the registration information of all known components + <p>writes the registration information of all components which are currently registered into the + specified registry.<p/> + <p>Usually used from within component_writeInfo.<p/> + @param _rxServiceManager + the service manager + @param _rRootKey + the registry key under which the information will be stored + @return + sal_True if the registration of all implementations was successfull, sal_False otherwise + */ + static sal_Bool writeComponentInfos( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceManager, + const ::com::sun::star::uno::Reference< ::com::sun::star::registry::XRegistryKey >& _rRootKey); + + /** creates a Factory for the component with the given implementation name. + <p>Usually used from within component_getFactory.<p/> + @param _rxServiceManager + a pointer to an XMultiServiceFactory interface as got in component_getFactory + @param _pImplementationName + the implementation name of the component + @return + the XInterface access to a factory for the component + */ + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getComponentFactory( + const ::rtl::OUString& _rImplementationName, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceManager + ); + + protected: + /// register a client for the module + static void registerClient(); + /// revoke a client for the module + static void revokeClient(); + + private: + /** ensure that the impl class exists + @precond m_aMutex is guarded when this method gets called + */ + static void ensureImpl(); + }; + + //========================================================================= + //= OModuleResourceClient + //========================================================================= + /** base class for objects which uses any global module-specific ressources + */ + class OModuleResourceClient + { + public: + OModuleResourceClient() { OModule::registerClient(); } + ~OModuleResourceClient() { OModule::revokeClient(); } + }; + + //========================================================================= + //= ModuleRes + //========================================================================= + /** specialized ResId, using the ressource manager provided by the global module + */ + class ModuleRes : public ::ResId + { + public: + ModuleRes(USHORT _nId) : ResId(_nId, OModule::getResManager()) { } + }; + + //========================================================================== + //= OMultiInstanceAutoRegistration + //========================================================================== + template <class TYPE> + class OMultiInstanceAutoRegistration + { + public: + /** automatically registeres a multi instance component + <p>Assumed that the template argument has the three methods + <ul> + <li><code>static ::rtl::OUString getImplementationName_Static()</code><li/> + <li><code>static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static()</code><li/> + <li><code>static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > + Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&)</code> + </li> + <ul/> + the instantiation of this object will automatically register the class via <method>OModule::registerComponent</method>. + <p/> + The factory creation function used is <code>::cppu::createSingleFactory</code>. + @see OOneInstanceAutoRegistration + */ + OMultiInstanceAutoRegistration(); + ~OMultiInstanceAutoRegistration(); + }; + + template <class TYPE> + OMultiInstanceAutoRegistration<TYPE>::OMultiInstanceAutoRegistration() + { + OModule::registerComponent( + TYPE::getImplementationName_Static(), + TYPE::getSupportedServiceNames_Static(), + TYPE::Create, + ::cppu::createSingleFactory + ); + } + + template <class TYPE> + OMultiInstanceAutoRegistration<TYPE>::~OMultiInstanceAutoRegistration() + { + OModule::revokeComponent(TYPE::getImplementationName_Static()); + } + + //========================================================================== + //= OOneInstanceAutoRegistration + //========================================================================== + template <class TYPE> + class OOneInstanceAutoRegistration + { + public: + /** automatically registeres a single instance component + <p>Assumed that the template argument has the three methods + <ul> + <li><code>static ::rtl::OUString getImplementationName_Static()</code><li/> + <li><code>static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static()</code><li/> + <li><code>static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > + Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&)</code> + </li> + <ul/> + the instantiation of this object will automatically register the class via <method>OModule::registerComponent</method>. + <p/> + The factory creation function used is <code>::cppu::createOneInstanceFactory</code>. + @see OOneInstanceAutoRegistration + */ + OOneInstanceAutoRegistration(); + ~OOneInstanceAutoRegistration(); + }; + + template <class TYPE> + OOneInstanceAutoRegistration<TYPE>::OOneInstanceAutoRegistration() + { + OModule::registerComponent( + TYPE::getImplementationName_Static(), + TYPE::getSupportedServiceNames_Static(), + TYPE::Create, + ::cppu::createOneInstanceFactory + ); + } + + template <class TYPE> + OOneInstanceAutoRegistration<TYPE>::~OOneInstanceAutoRegistration() + { + OModule::revokeComponent(TYPE::getImplementationName_Static()); + } + +//......................................................................... +} // namespace pcr +//......................................................................... + +#endif // _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 12:52:50 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/pcr.map b/extensions/source/propctrlr/pcr.map new file mode 100644 index 000000000..6794fcdf2 --- /dev/null +++ b/extensions/source/propctrlr/pcr.map @@ -0,0 +1,8 @@ +EXTPCR_1_0 { + global: + component_getImplementationEnvironment; + component_writeInfo; + component_getFactory; + local: + *; +}; diff --git a/extensions/source/propctrlr/pcrcommon.cxx b/extensions/source/propctrlr/pcrcommon.cxx new file mode 100644 index 000000000..63cb0c653 --- /dev/null +++ b/extensions/source/propctrlr/pcrcommon.cxx @@ -0,0 +1,99 @@ +/************************************************************************* + * + * $RCSfile: pcrcommon.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:30:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PCRCOMMON_HXX_ +#include "pcrcommon.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "propresid.hrc" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //------------------------------------------------------------------------ + String getStandardString() + { + static String sStandardString; + if (!sStandardString.Len()) + { + OModuleResourceClient aResourceAccess; + sStandardString = String(ModuleRes(RID_STR_STANDARD)); + } + return sStandardString; + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 10:44:29 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/pcrcommon.hxx b/extensions/source/propctrlr/pcrcommon.hxx new file mode 100644 index 000000000..15b953f98 --- /dev/null +++ b/extensions/source/propctrlr/pcrcommon.hxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * $RCSfile: pcrcommon.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:30:17 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PCRCOMMON_HXX_ +#define _EXTENSIONS_PROPCTRLR_PCRCOMMON_HXX_ + +#define EDITOR_LIST_APPEND (sal_uInt16)-1 + +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + String getStandardString(); + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_PCRCOMMON_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 09:58:50 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/pcrservices.cxx b/extensions/source/propctrlr/pcrservices.cxx new file mode 100644 index 000000000..524cbe49e --- /dev/null +++ b/extensions/source/propctrlr/pcrservices.cxx @@ -0,0 +1,146 @@ +/************************************************************************* + * + * $RCSfile: pcrservices.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:30:30 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif + +//--------------------------------------------------------------------------------------- + +using namespace ::rtl; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::registry; + +//--------------------------------------------------------------------------------------- + +extern "C" void SAL_CALL createRegistryInfo_OPropertyBrowserController(); + +//--------------------------------------------------------------------------------------- + +extern "C" void SAL_CALL pcr_createRegistryInfo() +{ + static sal_Bool s_bInit = sal_False; + if (!s_bInit) + { + createRegistryInfo_OPropertyBrowserController(); + s_bInit = sal_True; + } +} + +//--------------------------------------------------------------------------------------- + +extern "C" void SAL_CALL component_getImplementationEnvironment( + const sal_Char **ppEnvTypeName, + uno_Environment **ppEnv + ) +{ + pcr_createRegistryInfo(); + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; +} + +//--------------------------------------------------------------------------------------- +extern "C" sal_Bool SAL_CALL component_writeInfo( + void* pServiceManager, + void* pRegistryKey + ) +{ + if (pRegistryKey) + try + { + return ::pcr::OModule::writeComponentInfos( + static_cast<XMultiServiceFactory*>(pServiceManager), + static_cast<XRegistryKey*>(pRegistryKey)); + } + catch (InvalidRegistryException& ) + { + OSL_ASSERT("pcr::component_writeInfo: could not create a registry key (InvalidRegistryException) !"); + } + + return sal_False; +} + +//--------------------------------------------------------------------------------------- +extern "C" void* SAL_CALL component_getFactory( + const sal_Char* pImplementationName, + void* pServiceManager, + void* pRegistryKey) +{ + Reference< XInterface > xRet; + if (pServiceManager && pImplementationName) + { + xRet = ::pcr::OModule::getComponentFactory( + ::rtl::OUString::createFromAscii(pImplementationName), + static_cast< XMultiServiceFactory* >(pServiceManager)); + } + + if (xRet.is()) + xRet->acquire(); + return xRet.get(); +}; + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 11.01.01 09:14:45 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/pcrstrings.cxx b/extensions/source/propctrlr/pcrstrings.cxx new file mode 100644 index 000000000..3a9d39fd8 --- /dev/null +++ b/extensions/source/propctrlr/pcrstrings.cxx @@ -0,0 +1,74 @@ +/************************************************************************* + * + * $RCSfile: pcrstrings.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:30:39 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_PCRSTRINGS_HXX_ +#define PCR_IMPLEMENT_STRINGS +#include "pcrstrings.hxx" +#undef PCR_IMPLEMENT_STRINGS +#endif + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 14:19:51 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/pcrstrings.hxx b/extensions/source/propctrlr/pcrstrings.hxx new file mode 100644 index 000000000..e87168887 --- /dev/null +++ b/extensions/source/propctrlr/pcrstrings.hxx @@ -0,0 +1,94 @@ +/************************************************************************* + * + * $RCSfile: pcrstrings.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:30:51 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_PCRSTRINGS_HXX_ +#define _EXTENSIONS_FORMSCTRLR_PCRSTRINGS_HXX_ + +#ifndef _EXTENSIONS_FORMSCTRLR_STRINGDEFINE_HXX_ +#include "stringdefine.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + // properties + PCR_CONSTASCII_STRING( PROPERTY_DEFAULTCONTROL, "DefaultControl" ); + PCR_CONSTASCII_STRING( PROPERTY_INTROSPECTEDOBJECT, "IntrospectedObject" ); + PCR_CONSTASCII_STRING( PROPERTY_TITLEPROPOSAL, "TitleProposal" ); + + // services + PCR_CONSTASCII_STRING( SERVICE_FORMCONTROLLER, "com.sun.star.form.controller.FormController" ); + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_FORMSCTRLR_PCRSTRINGS_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 14:17:16 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propcontroller.cxx b/extensions/source/propctrlr/propcontroller.cxx new file mode 100644 index 000000000..8f6706eab --- /dev/null +++ b/extensions/source/propctrlr/propcontroller.cxx @@ -0,0 +1,881 @@ +/************************************************************************* + * + * $RCSfile: propcontroller.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:31:03 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPCONTROLLER_HXX_ +#include "propcontroller.hxx" +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_PCRSTRINGS_HXX_ +#include "pcrstrings.hxx" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _COMPHELPER_TYPES_HXX_ +#include <comphelper/types.hxx> +#endif +#ifndef _CPPUHELPER_EXTRACT_HXX_ +#include <cppuhelper/extract.hxx> +#endif +#ifndef _CPPUHELPER_TYPEPROVIDER_HXX_ +#include <cppuhelper/typeprovider.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ +#include "propertyeditor.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "propresid.hrc" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPHELPID_HRC_ +#include "prophelpid.hrc" +#endif +#ifndef _COM_SUN_STAR_BEANS_XINTROSPECTION_HPP_ +#include <com/sun/star/beans/XIntrospection.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_PROPERTYCONCEPT_HPP_ +#include <com/sun/star/beans/PropertyConcept.hpp> +#endif +#ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_ +#include <com/sun/star/container/XChild.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_ +#include <com/sun/star/form/XForm.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_ +#include <com/sun/star/form/XFormComponent.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_XGRIDCOLUMNFACTORY_HPP_ +#include <com/sun/star/form/XGridColumnFactory.hpp> +#endif +#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_ +#include <com/sun/star/form/XFormController.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_ +#include <com/sun/star/beans/PropertyAttribute.hpp> +#endif +#ifndef _COM_SUN_STAR_AWT_XWINDOW_HPP_ +#include <com/sun/star/awt/XWindow.hpp> +#endif +#ifndef _TOOLKIT_AWT_VCLXWINDOW_HXX_ +#include <toolkit/awt/vclxwindow.hxx> +#endif +#ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_ +#include <toolkit/unohlp.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif + +//------------------------------------------------------------------------ +// !!! outside the namespace !!! +extern "C" void SAL_CALL createRegistryInfo_OPropertyBrowserController() +{ + static ::pcr::OMultiInstanceAutoRegistration< ::pcr::OPropertyBrowserController > aAutoRegistration; +} + +//............................................................................ +namespace pcr +{ +//............................................................................ + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::awt; + using namespace ::com::sun::star::form; + using namespace ::com::sun::star::beans; + using namespace ::com::sun::star::script; + using namespace ::com::sun::star::lang; + using namespace ::com::sun::star::container; + using namespace ::com::sun::star::frame; + using namespace ::comphelper; + +#define THISREF() static_cast< XController* >(this) + + //======================================================================== + //= OPropertyBrowserController + //======================================================================== + DBG_NAME(OPropertyBrowserController); + //------------------------------------------------------------------------ + OPropertyBrowserController::OPropertyBrowserController(const Reference< XMultiServiceFactory >& _rxORB) + :OPropertyChangeListener(m_aMutex) + ,OPropertyBrowserController_PropertyBase1(m_aBHelper) + ,m_xORB(_rxORB) + ,m_aDisposeListeners(m_aMutex) + ,m_pPropertyInfo(NULL) + ,m_pChangeMultiplexer(NULL) + ,m_pView(NULL) + ,m_bHasListSource( sal_False ) + ,m_bHasCursorSource( sal_False ) + ,m_nGenericPageId(0) + ,m_nDataPageId(0) + ,m_nEventPageId(0) + ,m_sStandard(ModuleRes(RID_STR_STANDARD)) + ,m_bInitialized(sal_False) + { + DBG_CTOR(OPropertyBrowserController,NULL); + + if (m_xORB.is()) + { + m_xTypeConverter = Reference< XTypeConverter >( + m_xORB->createInstance(::rtl::OUString::createFromAscii("com.sun.star.script.Converter")), + UNO_QUERY + ); + DBG_ASSERT(m_xTypeConverter.is(), "OPropertyBrowserController::OPropertyBrowserController: could not instantiate the type converter service!"); + // TODO: perhaps an exception + } + + initializeSpecialStuff(); + + registerProperty(PROPERTY_INTROSPECTEDOBJECT, OWN_PROPERTY_ID_INTROSPECTEDOBJECT, + PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT, + &m_xIntrospecteeAsProperty, ::getCppuType(&m_xIntrospecteeAsProperty)); + } + + //------------------------------------------------------------------------ + OPropertyBrowserController::~OPropertyBrowserController() + { + // stop listening for property changes + stopIntrospection(); + DBG_DTOR(OPropertyBrowserController,NULL); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::attachFrame( const Reference< XFrame >& _rxFrame ) throw(RuntimeException) + { + if (_rxFrame.is() && haveView()) + throw RuntimeException(::rtl::OUString::createFromAscii("Unable to attach to a second frame."),*this); + + m_xFrame = _rxFrame; + if (!m_xFrame.is()) + return; + + // TODO: this construction perhaps should be done outside. Don't know the exact meaning of attachFrame. + // Maybe it is intended to only announce the frame to the controller, and the instance doing this + // announcement is responsible for calling setComponent, too. + Reference< XWindow > xContainerWindow = m_xFrame->getContainerWindow(); + VCLXWindow* pContainerWindow = VCLXWindow::GetImplementation(xContainerWindow); + Window* pParentWin = pContainerWindow ? pContainerWindow->GetWindow() : NULL; + if (!pParentWin) + throw RuntimeException(::rtl::OUString::createFromAscii("The frame is invalid. Unable to extract the container window."),*this); + + if (Construct(pParentWin)) + m_xFrame->setComponent(VCLUnoHelper::GetInterface(m_pView), this); + } + + //------------------------------------------------------------------------ + sal_Bool SAL_CALL OPropertyBrowserController::attachModel( const Reference< XModel >& xModel ) throw(RuntimeException) + { + DBG_ERROR("OPropertyBrowserController::attachModel: models not supported!"); + return sal_False; + } + + //------------------------------------------------------------------------ + sal_Bool SAL_CALL OPropertyBrowserController::suspend( sal_Bool bSuspend ) throw(RuntimeException) + { + // TODO + return sal_True; + } + + //------------------------------------------------------------------------ + Any SAL_CALL OPropertyBrowserController::getViewData( ) throw(RuntimeException) + { + // have no view data + return Any(); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::restoreViewData( const Any& Data ) throw(RuntimeException) + { + // have no view data + } + + //------------------------------------------------------------------------ + Reference< XModel > SAL_CALL OPropertyBrowserController::getModel( ) throw(RuntimeException) + { + // have no model + return Reference< XModel >(); + } + + //------------------------------------------------------------------------ + Reference< XFrame > SAL_CALL OPropertyBrowserController::getFrame( ) throw(RuntimeException) + { + return m_xFrame; + } + + //------------------------------------------------------------------------ + Any SAL_CALL OPropertyBrowserController::queryInterface( const Type& _rType ) throw(RuntimeException) + { + Any aReturn = OPropertyBrowserController_Base::queryInterface(_rType); + if (!aReturn.hasValue()) + aReturn = OPropertyBrowserController_PropertyBase1::queryInterface(_rType); + return aReturn; + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::acquire( ) throw() + { + OPropertyBrowserController_Base::acquire(); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::release( ) throw() + { + OPropertyBrowserController_Base::release(); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::dispose( ) throw(RuntimeException) + { + // say our dispose listeners goodbye + ::com::sun::star::lang::EventObject aEvt; + aEvt.Source = static_cast< ::cppu::OWeakObject* >(this); + m_aDisposeListeners.disposeAndClear(aEvt); + + if (haveView()) + m_pView->setActiveController(NULL); + // don't delete explicitly (this is done by the frame we reside in) + m_pView = NULL; + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::addEventListener( const Reference< XEventListener >& _rxListener ) throw(RuntimeException) + { + m_aDisposeListeners.addInterface(_rxListener); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::removeEventListener( const Reference< XEventListener >& _rxListener ) throw(RuntimeException) + { + m_aDisposeListeners.removeInterface(_rxListener); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::initialize( const Sequence< Any >& _rArguments ) throw(Exception, RuntimeException) + { + ::osl::MutexGuard aGuard(m_aMutex); + if (m_bInitialized) + throw Exception(::rtl::OUString::createFromAscii("The object has already been initialized."), static_cast< XInitialization* >(this)); + +// sal_Bool bConstructed = sal_False; +// PropertyValue aCurrentArg; +// const Any* pStart = _rArguments.getConstArray(); +// const Any* pEnd = pStart + _rArguments.getLength(); +// for (const Any* pLoop = pStart; pLoop != pEnd; ++pLoop) +// { +// if ((*pLoop) >>= aCurrentArg) +// { +// if (aCurrentArg.Name.equalsAsciiL("ParentWindow", sizeof("ParentWindow") - 1)) +// { +// Reference< XWindow > xContainerWindow; +// ::cppu::extractInterface(xContainerWindow, aCurrentArg.Value); +// VCLXWindow* pContainerWindow = VCLXWindow::GetImplementation(xContainerWindow); +// Window* pParentWin = pContainerWindow ? pContainerWindow->GetWindow() : NULL; +// if (!pParentWin) +// throw Exception(::rtl::OUString::createFromAscii("The frame is invalid. Unable to extract the container window."),*this); +// +// bConstructed = Construct(pParentWin); +// break; +// } +// } +// } +// +// if (!bConstructed) +// { +// DBG_ERROR("OPropertyBrowserController::initialize: need a parent window argument!"); +// throw Exception(::rtl::OUString::createFromAscii("Invalid arguments specified. No parent window found."), static_cast< XInitialization* >(this)); +// } +// + m_bInitialized = sal_True; + } + + //------------------------------------------------------------------------ + ::rtl::OUString SAL_CALL OPropertyBrowserController::getImplementationName( ) throw(RuntimeException) + { + return getImplementationName_Static(); + } + + //------------------------------------------------------------------------ + sal_Bool SAL_CALL OPropertyBrowserController::supportsService( const ::rtl::OUString& ServiceName ) throw(RuntimeException) + { + Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); + const ::rtl::OUString* pArray = aSupported.getConstArray(); + for (sal_Int32 i = 0; i < aSupported.getLength(); ++i, ++pArray) + if (pArray->equals(ServiceName)) + return sal_True; + return sal_False; + } + + //------------------------------------------------------------------------ + Sequence< ::rtl::OUString > SAL_CALL OPropertyBrowserController::getSupportedServiceNames( ) throw(RuntimeException) + { + return getSupportedServiceNames_Static(); + } + + //------------------------------------------------------------------------ + ::rtl::OUString OPropertyBrowserController::getImplementationName_Static( ) throw(RuntimeException) + { + return ::rtl::OUString::createFromAscii("com.sun.star.comp.extensions.pcr.OPropertyBrowserController"); + } + + //------------------------------------------------------------------------ + Sequence< ::rtl::OUString > OPropertyBrowserController::getSupportedServiceNames_Static( ) throw(RuntimeException) + { + Sequence< ::rtl::OUString > aSupported(1); + aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.form.PropertyBrowserController"); + return aSupported; + } + + //------------------------------------------------------------------------ + Reference< XInterface > SAL_CALL OPropertyBrowserController::Create(const Reference< XMultiServiceFactory >& _rxORB) + { + return static_cast<XComponent*>(new OPropertyBrowserController(_rxORB)); + } + + //------------------------------------------------------------------------ + Sequence< Type > SAL_CALL OPropertyBrowserController::getTypes( ) throw(RuntimeException) + { + static ::cppu::OTypeCollection aTypes( + ::getCppuType( static_cast< Reference< XPropertySet >* >(NULL) ), + ::getCppuType( static_cast< Reference< XMultiPropertySet >* >(NULL) ), + ::getCppuType( static_cast< Reference< XFastPropertySet >* >(NULL) ), + OPropertyBrowserController_Base::getTypes()); + return aTypes.getTypes(); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::disposing( const EventObject& _rSource ) throw(RuntimeException) + { + DBG_ASSERT( Reference< XWindow >(_rSource.Source, UNO_QUERY).get() == m_xView.get(), + "OPropertyBrowserController::disposing: where does this come from?"); + m_xView = NULL; + m_pView = NULL; + } + + //------------------------------------------------------------------------ + Sequence< sal_Int8 > SAL_CALL OPropertyBrowserController::getImplementationId( ) throw(RuntimeException) + { + static ::cppu::OImplementationId aId; + return aId.getImplementationId(); + } + + //------------------------------------------------------------------------ + Reference< XPropertySetInfo > SAL_CALL OPropertyBrowserController::getPropertySetInfo( ) throw(RuntimeException) + { + return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper()); + } + + //------------------------------------------------------------------------ + ::cppu::IPropertyArrayHelper& SAL_CALL OPropertyBrowserController::getInfoHelper() + { + return *getArrayHelper(); + } + + //------------------------------------------------------------------------ + ::cppu::IPropertyArrayHelper* OPropertyBrowserController::createArrayHelper( ) const + { + Sequence< Property > aProps; + describeProperties(aProps); + return new cppu::OPropertyArrayHelper(aProps); + } + + //------------------------------------------------------------------------ + void SAL_CALL OPropertyBrowserController::setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle, const Any& _rValue) throw (Exception) + { + OPropertyBrowserController_PropertyBase1::setFastPropertyValue_NoBroadcast(_nHandle, _rValue); + + if (1 == _nHandle) + { + // it was my introspectee + bindToObject(m_xIntrospecteeAsProperty); + } + } + + //------------------------------------------------------------------------ + sal_Bool OPropertyBrowserController::Construct(Window* _pParentWin) + { + DBG_ASSERT(!haveView(), "OPropertyBrowserController::Construct: already have a view!"); + DBG_ASSERT(_pParentWin, "OPropertyBrowserController::Construct: invalid parent window!"); + + m_pView = new OPropertyBrowserView(m_xORB, _pParentWin); + m_pView->setActiveController(this); + + // add as dispose listener for our view. The view is disposed by the frame we're plugged into, + // and this disposal _deletes_ the view, so it would be deadly if we use our m_pView member + // after that + m_xView = VCLUnoHelper::GetInterface(m_pView); + Reference< XComponent > xViewAsComp(m_xView, UNO_QUERY); + if (xViewAsComp.is()) + xViewAsComp->addEventListener(this); + + if (haveView()) + getPropertyBox()->SetLineListener(this); + return sal_True; + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::_propertyChanged(const PropertyChangeEvent& _rEvent) throw( RuntimeException) + { + if (!haveView()) + return; + Property aProp = getIntrospecteeProperty(_rEvent.PropertyName); + ::rtl::OUString sNewValue = AnyToString(_rEvent.NewValue, aProp, _rEvent.PropertyHandle); + getPropertyBox()->SetPropertyValue(_rEvent.PropertyName, sNewValue); + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::_disposing(const EventObject& _rSource) throw( RuntimeException) + { +#ifdef DBG_UTIL + Reference< XInterface > xIntrospectee; + ::cppu::extractInterface(xIntrospectee, m_aIntrospectee); + DBG_ASSERT( Reference< XInterface >(_rSource.Source, UNO_QUERY).get() == xIntrospectee.get(), + "OPropertyBrowserController::_disposing: where does this come from?"); +#endif + bindToObject(Reference< XPropertySet >()); + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::startPropertyListening() + { + DBG_ASSERT(!isListening(), "OPropertyBrowserController::startPropertyListening: already listening!"); + if (!isListening() && m_xPropValueAccess.is()) + { + m_pChangeMultiplexer = new OPropertyChangeMultiplexer(this, m_xPropValueAccess); + m_pChangeMultiplexer->acquire(); + m_pChangeMultiplexer->addProperty(::rtl::OUString()); + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::stopPropertyListening() + { + DBG_ASSERT(isListening(), "OPropertyBrowserController::stopPropertyListening: not listening currently!"); + if (isListening()) + { + m_pChangeMultiplexer->dispose(); + m_pChangeMultiplexer->release(); + m_pChangeMultiplexer = NULL; + } + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::stopIntrospection() + { + // stop listening for property changes + if (isListening()) + stopPropertyListening(); + + m_aIntrospectee.clear(); + m_aObjectProperties.realloc(0); + m_aObjectListenerTypes.realloc(0); + m_xEventManager = NULL; + m_xPropStateAccess = NULL; + m_xPropValueAccess = NULL; + m_xIntrospection = NULL; + m_xObjectParent = NULL; + + m_bHasListSource = m_bHasCursorSource = sal_False; + if (haveView()) + { + // remove the pages + if (m_nGenericPageId) + getPropertyBox()->RemovePage(m_nDataPageId); + if (m_nDataPageId) + getPropertyBox()->RemovePage(m_nDataPageId); + if (m_nEventPageId) + getPropertyBox()->RemovePage(m_nEventPageId); + m_nGenericPageId = m_nDataPageId = m_nEventPageId = 0; + } + } + + //------------------------------------------------------------------------ + ::rtl::OUString OPropertyBrowserController::GetPropertyValue(const ::rtl::OUString& _rPropName) + { + ::rtl::OUString aStrVal; + try + { + Property aProp = getIntrospecteeProperty(_rPropName); + if(m_xPropValueAccess.is()) + { + Any aVal( m_xPropValueAccess->getPropertyValue(_rPropName ) ); + aStrVal = AnyToString(aVal, aProp, m_pPropertyInfo->getPropertyId(_rPropName)); + } + } + + catch (Exception&) + { + DBG_ERROR("OPropertyBrowserController::GetPropertyValue : caught an exception !"); + } + + return aStrVal; + } + + //------------------------------------------------------------------------ + void OPropertyBrowserController::bindToObject(const Reference< XPropertySet >& _rxObject) + { + try + { + sal_uInt16 nActivePage = 0; + if (haveView()) + nActivePage = m_pView->getActivaPage(); + + // stop inspecting the old object + stopIntrospection(); + + if (haveView()) + { + // hide the property box so that it does not flicker + getPropertyBox()->Hide(); + // clear the property box + getPropertyBox()->ClearAll(); + } + + // TODO: notify the listeners that our object has been reset (to NULL, for the moment) + // external instances may want to adjust the title to this new situation + + // TODO: the following is very form specific + Reference< XForm > xForm(_rxObject, UNO_QUERY); + Reference< XFormComponent > xControl(_rxObject, UNO_QUERY); + + Reference< XEventAttacherManager > xEvManager; + if (haveView()) + m_pView->SetHelpId(HID_FM_DLG_PROP_CONTROL); + + Any aAdditionalEvents; + + if (xForm.is()) + { + // it's a form. Create a (temporary) form controller for the additional events + Reference< XFormController > xController(m_xORB->createInstance(SERVICE_FORMCONTROLLER), UNO_QUERY); + xController->setModel(Reference< ::com::sun::star::awt::XTabControllerModel > (xForm,UNO_QUERY)); + aAdditionalEvents <<= xController; + + // set the new object, do the inspections + setObject(makeAny(xForm), aAdditionalEvents); + if (haveView()) + m_pView->SetHelpId(HID_FM_DLG_PROP_FORM); + + // now we do not need the controller anymore, it is just a helper + ::comphelper::disposeComponent(xController); + } + else if (xControl.is()) + { + if (haveView()) + m_pView->SetHelpId(HID_FM_DLG_PROP_CONTROL); + setObject(makeAny(xControl), aAdditionalEvents); + } + else + { // perhaps it's a grid column + Reference< XGridColumnFactory > xGrid; + Reference< ::com::sun::star::container::XChild > xChild(_rxObject, UNO_QUERY); + + if (xChild.is()) + xGrid = Reference< XGridColumnFactory > (xChild->getParent(),UNO_QUERY); + + if (xGrid.is()) + { + if (haveView()) + m_pView->SetHelpId(HID_FM_DLG_PROP_GRIDCTR); + setObject(makeAny(_rxObject), aAdditionalEvents); + } + } + + // propagate the new object to our view + // TODO: check whether or not the view really needs to know this + if (haveView()) + m_pView->setObject(_rxObject); + + // update the user interface + if (haveObject()) + UpdateUI(); + + // show the property box, again + if (haveView()) + { + getPropertyBox()->Show(); + // activate the old page + if (0 == nActivePage) + nActivePage = 1; + m_pView->activatePage(nActivePage); + } + } + + catch(Exception&) + { + DBG_ERROR("OPropertyBrowserController::bindToObject: caught an exception !"); + } + } + + //------------------------------------------------------------------------ + sal_Bool OPropertyBrowserController::setObject(const ::com::sun::star::uno::Any& _rIntrospectee, const ::com::sun::star::uno::Any& _rControl) + { + try + { + ////////////////////////////////////////////////////////////////////// + // get the introspection service + Reference< XIntrospection > xIntrospection(m_xORB->createInstance(::rtl::OUString::createFromAscii("com.sun.star.beans.Introspection")), UNO_QUERY); + if( !xIntrospection.is()) + return sal_False; + + ////////////////////////////////////////////////////////////////////// + // inspect the object + m_xIntrospection = xIntrospection->inspect( _rIntrospectee ); + if( !m_xIntrospection.is() ) + return sal_False; + + ////////////////////////////////////////////////////////////////////// + // remember the object + m_aIntrospectee = _rIntrospectee; + + ////////////////////////////////////////////////////////////////////// + // the other interfaces to the object or some of it's relatives + ::cppu::extractInterface(m_xPropValueAccess, m_aIntrospectee); + m_xPropStateAccess = Reference< XPropertyState >::query(m_xPropValueAccess); + + Reference< XChild > xChild(m_xPropValueAccess, UNO_QUERY); + if(xChild.is()) + { + m_xObjectParent = Reference< XInterface >(xChild->getParent()); + m_xEventManager = Reference< XEventAttacherManager > (m_xObjectParent, UNO_QUERY); + } + + ////////////////////////////////////////////////////////////////////// + // tell our property box we're the controller + if (haveView()) + { + // add the page for the default properties + m_nGenericPageId = getPropertyBox()->AppendPage( + String(ModuleRes(RID_STR_PROPPAGE_DEFAULT)), + HID_FM_PROPDLG_TAB_GENERAL); + } + + ////////////////////////////////////////////////////////////////////// + // get the properties, and sort them by relative pos + Sequence< Property > aProperties(m_xIntrospection->getProperties(PropertyConcept::ALL)); + + // transfer all the props to a map + DECLARE_STL_STDKEY_MAP( sal_Int32, Property, OrderedPropertyMap ); + OrderedPropertyMap aSortProperties; + const Property* pSourceProps = aProperties.getConstArray(); + const Property* pSourcePropsEnd = pSourceProps + aProperties.getLength(); + for (; pSourceProps < pSourcePropsEnd; ++pSourceProps) + { + sal_Int32 nRelativePosition = m_pPropertyInfo->getPropertyPos(m_pPropertyInfo->getPropertyId(pSourceProps->Name)); + aSortProperties[nRelativePosition] = *pSourceProps; + } + + // and copy them into the sequence, now that they're sorted + m_aObjectProperties.realloc(aSortProperties.size()); + Property* pCopyDest = m_aObjectProperties.getArray(); + for ( ConstOrderedPropertyMapIterator aCopySource = aSortProperties.begin(); + aCopySource != aSortProperties.end(); + ++aCopySource, ++pCopyDest + ) + *pCopyDest = aCopySource->second; + + + ////////////////////////////////////////////////////////////////////// + // get the model and the control listeners + Sequence< Type > aModelListeners; + Sequence< Type > aControlListeners; + + aModelListeners = m_xIntrospection->getSupportedListeners(); + + // if we don't have a control, try to create one (temporarily) + Reference< XInterface > xTemporaryControl; + Any aControl(_rControl); + if (!aControl.hasValue()) + { + try + { + ::rtl::OUString sControlService; + if (m_xPropValueAccess.is()) + m_xPropValueAccess->getPropertyValue(PROPERTY_DEFAULTCONTROL) >>= sControlService; + + xTemporaryControl = m_xORB->createInstance(sControlService); + aControl <<= xTemporaryControl; + } + catch(Exception&) + { + } + } + + // inspect the control for listeners + if (aControl.hasValue()) + { + Reference< XIntrospection > xMVCIntrospection(m_xORB->createInstance(::rtl::OUString::createFromAscii("com.sun.star.beans.Introspection")), UNO_QUERY); + Reference< XIntrospectionAccess > xAccess; + if( xMVCIntrospection.is() ) + xAccess = xMVCIntrospection->inspect(aControl); + aControlListeners = xAccess->getSupportedListeners(); + } + // dispose the temporary control + if (xTemporaryControl.is()) + { + ::comphelper::disposeComponent(xTemporaryControl); + xTemporaryControl = NULL; + } + + // merge the two lists + // we use a set for this to avoid duplicates + DECLARE_STL_SET( Type, TypeLessByName, TypeBag ); + TypeBag aListenerCollection; + + // insert the model listeners + const Type* pListenerLoop = aModelListeners.getConstArray(); + const Type* pListenerLoopEnd = pListenerLoop + aModelListeners.getLength(); + for (; pListenerLoop != pListenerLoopEnd; ++pListenerLoop) + aListenerCollection.insert(*pListenerLoop); + + // insert the control listener + pListenerLoop = aControlListeners.getConstArray(); + pListenerLoopEnd = pListenerLoop + aControlListeners.getLength(); + for (; pListenerLoop != pListenerLoopEnd; ++pListenerLoop) + if (aListenerCollection.end() == aListenerCollection.find(*pListenerLoop)) + aListenerCollection.insert(*pListenerLoop); + + // now that they're disambiguated, copy these types into our member + m_aObjectListenerTypes.realloc(aListenerCollection.size()); + { + Type* aCopyDest = m_aObjectListenerTypes.getArray(); + for ( ConstTypeBagIterator aCopySource = aListenerCollection.begin(); + aCopySource != aListenerCollection.end(); + ++aCopySource, ++aCopyDest + ) + *aCopyDest = *aCopySource; + } + + // start the listening for property changes + startPropertyListening(); + } + catch(Exception&) + { + DBG_ERROR("OPropertyBrowserController::setObject : caught an exception !"); + return sal_False; + } + + // append the data page for the + // TODO: this is form-specific + if (haveView()) + m_nDataPageId = getPropertyBox()->AppendPage( + String(ModuleRes(RID_STR_PROPPAGE_DATA)), + HID_FM_PROPDLG_TAB_DATA + ); + + return sal_True; + } + + //------------------------------------------------------------------------ + sal_Int32 OPropertyBrowserController::GetStringPos(const String& _rEntry, const Sequence< ::rtl::OUString >& _rEntries) + { + const ::rtl::OUString* pStart = _rEntries.getConstArray(); + const ::rtl::OUString* pEnd = pStart + _rEntries.getLength(); + const ::rtl::OUString sCompare(_rEntry); + for (const ::rtl::OUString* pEntries = pStart; pEntries != pEnd; ++pEntries) + { + if (sCompare == *pEntries) + return pEntries - pStart; + } + return -1; + } + + //------------------------------------------------------------------------ + Property OPropertyBrowserController::getIntrospecteeProperty( const ::rtl::OUString& _rName ) + { + const Property* pStart = m_aObjectProperties.getConstArray(); + const Property* pEnd = pStart + m_aObjectProperties.getLength(); + for (const Property* pLoop = pStart; pLoop != pEnd; ++pLoop) + { + if (pLoop->Name == _rName) + return *pLoop; + } + + return Property(); + } + + //------------------------------------------------------------------------ + ::rtl::OUString OPropertyBrowserController::convertSimpleToString(const Any& _rValue) + { + ::rtl::OUString sReturn; + if (m_xTypeConverter.is()) + { + // TODO: using the type converter every time is somewhat expensive, isn't it? + try + { + Any aConvertedToString; + aConvertedToString = m_xTypeConverter->convertToSimpleType(_rValue, TypeClass_STRING); + aConvertedToString >>= sReturn; + } + catch(CannotConvertException&) { } + catch(IllegalArgumentException&) { } + } + return sReturn; + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 09:33:47 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propcontroller.hxx b/extensions/source/propctrlr/propcontroller.hxx new file mode 100644 index 000000000..bb3bc7097 --- /dev/null +++ b/extensions/source/propctrlr/propcontroller.hxx @@ -0,0 +1,359 @@ +/************************************************************************* + * + * $RCSfile: propcontroller.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:31:14 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPCONTROLLER_HXX_ +#define _EXTENSIONS_PROPCTRLR_PROPCONTROLLER_HXX_ + +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATE_HPP_ +#include <com/sun/star/beans/XPropertyState.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ +#include <com/sun/star/beans/XPropertySet.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_XINTROSPECTIONACCESS_HPP_ +#include <com/sun/star/beans/XIntrospectionAccess.hpp> +#endif +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_ +#include <com/sun/star/form/XForm.hpp> +#endif +#ifndef _COM_SUN_STAR_SCRIPT_XEVENTATTACHERMANAGER_HPP_ +#include <com/sun/star/script/XEventAttacherManager.hpp> +#endif +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ +#include <com/sun/star/uno/Sequence.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_STLOPS_HXX_ +#include "stlops.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPLINELISTENER_HXX_ +#include "proplinelistener.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERVIEW_HXX_ +#include "browserview.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPCR_HXX_ +#include "modulepcr.hxx" +#endif +#ifndef _COMPHELPER_PROPERTY_MULTIPLEX_HXX_ +#include <comphelper/propmultiplex.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYINFO_HXX_ +#include "propertyinfo.hxx" +#endif +#ifndef _COM_SUN_STAR_SCRIPT_XTYPECONVERTER_HPP_ +#include <com/sun/star/script/XTypeConverter.hpp> +#endif +#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_ +#include <com/sun/star/lang/XInitialization.hpp> +#endif +#ifndef _COM_SUN_STAR_FRAME_XCONTROLLER_HPP_ +#include <com/sun/star/frame/XController.hpp> +#endif +#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ +#include <com/sun/star/lang/XServiceInfo.hpp> +#endif +#ifndef _CPPUHELPER_INTERFACECONTAINER_HXX_ +#include <cppuhelper/interfacecontainer.hxx> +#endif +#ifndef _CPPUHELPER_IMPLBASE2_HXX_ +#include <cppuhelper/implbase4.hxx> +#endif +#ifndef _COMPHELPER_PROPERTYCONTAINER_HXX_ +#include <comphelper/propertycontainer.hxx> +#endif +#include <com/sun/star/lang/XEventListener.hpp> +#ifndef _COMPHELPER_PROPERTY_ARRAY_HELPER_HXX_ +#include <comphelper/proparrhlp.hxx> +#endif +#ifndef _COMPHELPER_BROADCASTHELPER_HXX_ +#include <comphelper/broadcasthelper.hxx> +#endif + + +class SvNumberFormatsSupplierObj; +class Font; +class Window; + +//............................................................................ +namespace pcr +{ +//............................................................................ + + class OPropertyListener; + class OPropertyEditor; + struct OLineDescriptor; + +#define OWN_PROPERTY_ID_INTROSPECTEDOBJECT 1 + + //======================================================================== + //= OPropertyBrowserController + //======================================================================== + typedef ::cppu::WeakImplHelper4 < ::com::sun::star::frame::XController + , ::com::sun::star::lang::XServiceInfo + , ::com::sun::star::lang::XInitialization + , ::com::sun::star::lang::XEventListener + > OPropertyBrowserController_Base; + typedef ::comphelper::OPropertyContainer OPropertyBrowserController_PropertyBase1; + + class OPropertyBrowserController; + typedef ::comphelper::OPropertyArrayUsageHelper< OPropertyBrowserController > + OPropertyBrowserController_PropertyBase2; + + class OPropertyBrowserController + :public ::comphelper::OMutexAndBroadcastHelper + ,public OPropertyBrowserController_Base + ,public IPropertyLineListener + ,public ::comphelper::OPropertyChangeListener + ,public OModuleResourceClient + ,public OPropertyBrowserController_PropertyBase1 + ,public OPropertyBrowserController_PropertyBase2 + { + protected: + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > + m_xORB; + ::com::sun::star::uno::Reference< ::com::sun::star::script::XTypeConverter > + m_xTypeConverter; + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > + m_xFrame; + ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > + m_xView; + + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > + m_xIntrospecteeAsProperty; + + ::cppu::OInterfaceContainerHelper m_aDisposeListeners; + + protected: + // meta data about the properties + const IPropertyInfoService* m_pPropertyInfo; + + ::comphelper::OPropertyChangeMultiplexer* m_pChangeMultiplexer; /// listener to forward property changes + OPropertyBrowserView* m_pView; + + ::rtl::OUString m_sStandard; + + protected: + // the inspected object + ::com::sun::star::uno::Any m_aIntrospectee; + // the properties of the current object + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > m_aObjectProperties; + // the listener types for the current object + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > m_aObjectListenerTypes; + // the event attacher manager for the current object + ::com::sun::star::uno::Reference< ::com::sun::star::script::XEventAttacherManager > m_xEventManager; + // quick access to the property states + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState > m_xPropStateAccess; + // quick access to the property states + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xPropValueAccess; + // introspection access to the object + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XIntrospectionAccess > m_xIntrospection; + // the parent object (if any) of the introspected object + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xObjectParent; + + sal_uInt16 m_nGenericPageId; + sal_uInt16 m_nDataPageId; + sal_uInt16 m_nEventPageId; + + private: + + sal_Bool m_bFontInserted : 1; + sal_Bool m_bHasListSource : 1; + sal_Bool m_bHasCursorSource : 1; + sal_Bool m_bInitialized : 1; + + protected: + // good callback candidates: + + // convert the display string into a property value + ::com::sun::star::uno::Any StringToAny(const ::rtl::OUString& _rString, const ::com::sun::star::beans::Property& _rProp, sal_Int32 _nPropId); + // convert a property value into a display string + ::rtl::OUString AnyToString(const ::com::sun::star::uno::Any& _rValue, const ::com::sun::star::beans::Property& _rProp, sal_Int32 _nPropId); + + // helper to find a string within a string list + sal_Int32 GetStringPos(const String& _rEntry, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rEntries); + + // helper + ::com::sun::star::beans::Property getIntrospecteeProperty(const ::rtl::OUString& _rName); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); + + // XController + virtual void SAL_CALL attachFrame( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL attachModel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel ) throw(::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL suspend( sal_Bool bSuspend ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getViewData( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL restoreViewData( const ::com::sun::star::uno::Any& Data ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SAL_CALL getModel( ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > SAL_CALL getFrame( ) throw(::com::sun::star::uno::RuntimeException); + + // XComponent + virtual void SAL_CALL dispose( ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException); + + // XInitialization + virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + + // XTypeProvider + virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); + + // XEventListener + virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException); + + // XPropertySet and friends + virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); + virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper(); + virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const; + virtual void SAL_CALL setFastPropertyValue_NoBroadcast( + sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception); + + public: + OPropertyBrowserController( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB); + virtual ~OPropertyBrowserController(); + + void UpdateUI(); + void InsertEvents(); + + // XInterface + virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL acquire( ) throw(); + virtual void SAL_CALL release( ) throw(); + + // XServiceInfo - static versions + static ::rtl::OUString getImplementationName_Static( ) throw(::com::sun::star::uno::RuntimeException); + static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static( ) throw(::com::sun::star::uno::RuntimeException); + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL + Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&); + + private: + // IPropertyLineListener + virtual void Modified( const String& _rName, const String& _rVal, void* _pData); + virtual void Clicked( const String& _rName, const String& _rVal, void* _pData); + virtual void Commit( const String& _rName, const String& _rVal, void* _pData); + virtual void Select( const String& _rName, void* _pData); + + // OPropertyChangeListener + virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& _rEvent) throw( ::com::sun::star::uno::RuntimeException); + virtual void _disposing(const ::com::sun::star::lang::EventObject& _rSource) throw( ::com::sun::star::uno::RuntimeException); + + /// start listening for property changes + void startPropertyListening(); + /// stop listening for property changes + void stopPropertyListening(); + sal_Bool isListening() const { return NULL != m_pChangeMultiplexer; } + + // stop the inspection + void stopIntrospection(); + + sal_Bool haveObject() const { return m_aIntrospectee.hasValue(); } + sal_Bool haveView() const { return NULL != m_pView; } + + OPropertyEditor* getPropertyBox() { return m_pView->getPropertyBox(); } + + // set a new object (a smaller version of bindToObject) + virtual sal_Bool setObject(const ::com::sun::star::uno::Any& _rIntrospectee, const ::com::sun::star::uno::Any& _rControl); + // _rControl is the control the model belongs to. Used for events + + // bind the browser to a new object (a more comprehensive version of setObject) + void bindToObject(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject); + + void SetCursorSource(sal_Bool _bInit = sal_False); + void SetListSource(sal_Bool _bInit = sal_False); + void SetStringSeq(const ::com::sun::star::beans::Property& rProperty, OLineDescriptor& _rUIData); + + sal_uInt32 GetPropertyPos(const ::rtl::OUString& _rPropName); + ::rtl::OUString GetPropertyValue(const ::rtl::OUString& _rPropName); + + // good candidates for (onClicked-)callbacks, again .... + void ChangeFontProperty(const ::rtl::OUString& rName); + void ChangeEventProperty(const ::rtl::OUString& rName); + void ChangeFormatProperty(const ::rtl::OUString& rName, const ::rtl::OUString& rCurVal); + + void SetTables(OLineDescriptor& _rProperty); + void SetQueries(OLineDescriptor& _rProperty); + void SetFields(OLineDescriptor& _rProperty); + + void initializeSpecialStuff(); + + ::rtl::OUString convertSimpleToString(const ::com::sun::star::uno::Any& _rValue); + + sal_Bool Construct(Window* _pParentWin); + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_PROPCONTROLLER_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 09:33:46 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propertyeditor.cxx b/extensions/source/propctrlr/propertyeditor.cxx new file mode 100644 index 000000000..c7c0976ae --- /dev/null +++ b/extensions/source/propctrlr/propertyeditor.cxx @@ -0,0 +1,420 @@ +/************************************************************************* + * + * $RCSfile: propertyeditor.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:31:24 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ +#include "propertyeditor.hxx" +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BROWSERPAGE_HXX_ +#include "browserpage.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //================================================================== + // class OPropertyEditor + //================================================================== + DBG_NAME(OPropertyEditor); + //------------------------------------------------------------------ + OPropertyEditor::OPropertyEditor( Window* pParent, WinBits nWinStyle) + :Control(pParent, nWinStyle) + ,m_aTabControl(this) + ,m_nNextId(1) + { + DBG_CTOR(OPropertyEditor,NULL); + + m_aTabControl.Show(); + m_aTabControl.SetDeactivatePageHdl(LINK(this, OPropertyEditor, OnPageDeactivate)); + m_aTabControl.SetBackground(GetBackground()); + } + + //------------------------------------------------------------------ + OPropertyEditor::OPropertyEditor( Window* pParent, const ResId& rResId ) + : Control(pParent,rResId) + ,m_aTabControl(this) + ,m_nNextId(1) + { + DBG_CTOR(OPropertyEditor,NULL); + + m_aTabControl.Show(); + m_aTabControl.SetDeactivatePageHdl(LINK(this, OPropertyEditor, OnPageDeactivate)); + + SetHelpId(GetHelpId()); + m_aTabControl.SetBackground(GetBackground()); + m_aTabControl.SetPaintTransparent(sal_True); + + Resize(); + } + + //------------------------------------------------------------------ + OPropertyEditor::~OPropertyEditor() + { + Hide(); + ClearAll(); + DBG_DTOR(OPropertyEditor,NULL); + } + + //------------------------------------------------------------------ + void OPropertyEditor::ClearAll() + { + m_nNextId=1; + sal_uInt16 nCount = m_aTabControl.GetPageCount(); + for(long i = nCount-1; i >= 0; --i) + { + sal_uInt16 nID = m_aTabControl.GetPageId((sal_uInt16)i); + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(nID)); + if (pPage) + { + pPage->EnableInput(sal_False); + m_aTabControl.RemovePage(nID); + delete pPage; + } + } + m_aTabControl.Clear(); + } + + //------------------------------------------------------------------ + void OPropertyEditor::Resize() + { + Point aPos(3,3); + Size aSize(GetOutputSizePixel()); + aSize.Width()-=6; + aSize.Height()-=6; + + m_aTabControl.SetPosSizePixel(aPos, aSize); + + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::AppendPage(const String & _rText,sal_uInt32 _nHelpId) + { + // obtain a new id + sal_uInt16 nId = m_nNextId++; + // insert the id + m_aTabControl.InsertPage(nId, _rText); + + // create a new page + OBrowserPage* pPage = new OBrowserPage(&m_aTabControl); + // some knittings + pPage->SetSizePixel(m_aTabControl.GetOutputSizePixel()); + pPage->getListBox()->setListener(m_pListener); + pPage->SetHelpId(_nHelpId); + + // immediately activate the page + m_aTabControl.SetTabPage(nId, pPage); + m_aTabControl.SetCurPageId(nId); + + return nId; + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetHelpId( sal_uInt32 nHelpId ) + { + Control::SetHelpId(0); + m_aTabControl.SetHelpId(nHelpId); + } + + //------------------------------------------------------------------ + void OPropertyEditor::RemovePage(sal_uInt16 nID) + { + + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(nID)); + + if (pPage) + pPage->EnableInput(sal_False); + m_aTabControl.RemovePage(nID); + if (pPage) + delete pPage; + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetPage(sal_uInt16 nId) + { + m_aTabControl.SetCurPageId(nId); + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::GetCurPage() + { + if(m_aTabControl.GetPageCount()>0) + return m_aTabControl.GetCurPageId(); + else + return 0; + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::CalcVisibleLines() + { + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + return pPage->getListBox()->CalcVisibleLines(); + else return 0; + } + + //------------------------------------------------------------------ + void OPropertyEditor::EnableUpdate() + { + // forward this to all our pages + sal_uInt16 nCount = m_aTabControl.GetPageCount(); + for (sal_uInt16 i=0;i<nCount;++i) + { + sal_uInt16 nID = m_aTabControl.GetPageId(i); + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(nID)); + if (pPage) + pPage->getListBox()->EnableUpdate(); + } + } + + //------------------------------------------------------------------ + void OPropertyEditor::DisableUpdate() + { + // forward this to all our pages + sal_uInt16 nCount = m_aTabControl.GetPageCount(); + for (sal_uInt16 i=0;i<nCount;++i) + { + sal_uInt16 nID = m_aTabControl.GetPageId(i); + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(nID)); + if (pPage) + pPage->getListBox()->DisableUpdate(); + } + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetLineListener(IPropertyLineListener* _pListener) + { + m_pListener = _pListener; + + // forward the new listener to our pages + sal_uInt16 nCount = m_aTabControl.GetPageCount(); + for (sal_uInt16 i=0;i<nCount;++i) + { + sal_uInt16 nID = m_aTabControl.GetPageId(i); + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(nID)); + if (pPage) + pPage->getListBox()->setListener(m_pListener); + } + + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::InsertEntry( const OLineDescriptor& rData, sal_uInt16 nPos) + { + // let the current page handle this + sal_uInt16 nEntry = LISTBOX_ENTRY_NOTFOUND; + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + nEntry=pPage->getListBox()->InsertEntry(rData,nPos); + + return nEntry; + } + + //------------------------------------------------------------------ + void OPropertyEditor::ChangeEntry( const OLineDescriptor& rData, sal_uInt16 nPos) + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + pPage->getListBox()->ChangeEntry(rData,nPos); + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::AppendEntry( const OLineDescriptor& rData) + { + // let the current page handle this + sal_uInt16 nEntry = LISTBOX_ENTRY_NOTFOUND; + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + nEntry = pPage->getListBox()->AppendEntry(rData); + + return nEntry; + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetPropertyValue( const ::rtl::OUString & rEntryName, const ::rtl::OUString & rValue ) + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + pPage->getListBox()->SetPropertyValue( rEntryName, rValue ); + } + + //------------------------------------------------------------------ + ::rtl::OUString OPropertyEditor::GetPropertyValue( const ::rtl::OUString& rEntryName ) const + { + // let the current page handle this + ::rtl::OUString aString; + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + aString=pPage->getListBox()->GetPropertyValue( rEntryName ); + return aString; + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::GetPropertyPos( const ::rtl::OUString& rEntryName ) const + { + // let the current page handle this + sal_uInt16 nVal=LISTBOX_ENTRY_NOTFOUND; + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + nVal=pPage->getListBox()->GetPropertyPos( rEntryName ); + return nVal; + } + + //------------------------------------------------------------------ + IBrowserControl* OPropertyEditor::GetPropertyControl(const ::rtl::OUString& rEntryName) + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + return pPage->getListBox()->GetPropertyControl(rEntryName); + return NULL; + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetPropertyData( const ::rtl::OUString& rEntryName, void* pData ) + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if (pPage) + pPage->getListBox()->SetPropertyData(rEntryName, pData); + + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetFirstVisibleEntry(sal_uInt16 nPos) + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + pPage->getListBox()->SetFirstVisibleEntry(nPos); + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::GetFirstVisibleEntry() + { + // let the current page handle this + sal_uInt16 nEntry=LISTBOX_ENTRY_NOTFOUND; + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + nEntry=pPage->getListBox()->GetFirstVisibleEntry(); + return nEntry; + } + + //------------------------------------------------------------------ + void OPropertyEditor::SetSelectedEntry(sal_uInt16 nPos) + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + pPage->getListBox()->SetSelectedEntry(nPos); + } + + //------------------------------------------------------------------ + sal_uInt16 OPropertyEditor::GetSelectedEntry() + { + sal_uInt16 nEntry=LISTBOX_ENTRY_NOTFOUND; + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + nEntry=pPage->getListBox()->GetSelectedEntry(); + return nEntry; + } + + //------------------------------------------------------------------ + void OPropertyEditor::ClearTable() + { + // let the current page handle this + OBrowserPage* pPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage(m_aTabControl.GetCurPageId())); + if(pPage) + pPage->getListBox()->Clear(); + } + + //------------------------------------------------------------------ + IMPL_LINK(OPropertyEditor, OnPageDeactivate, TabControl*, EMPTYARG) + { + // commit the data on the current (to-be-decativated) tab page + // (79404) + sal_Int32 nCurrentId = m_aTabControl.GetCurPageId(); + OBrowserPage* pCurrentPage = static_cast<OBrowserPage*>(m_aTabControl.GetTabPage((sal_uInt16)nCurrentId)); + OBrowserListBox* pListBox = pCurrentPage ? pCurrentPage->getListBox() : NULL; + IBrowserControl* pControl = pListBox ? pListBox->GetCurrentPropertyControl() : NULL; + if (pControl && pControl->IsModified()) + pControl->CommitModified(); + + return 1L; + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 15:38:46 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propertyeditor.hxx b/extensions/source/propctrlr/propertyeditor.hxx new file mode 100644 index 000000000..3702de498 --- /dev/null +++ b/extensions/source/propctrlr/propertyeditor.hxx @@ -0,0 +1,146 @@ +/************************************************************************* + * + * $RCSfile: propertyeditor.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:31:33 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ +#define _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ + +#ifndef _SV_TABCTRL_HXX +#include <vcl/tabctrl.hxx> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_PCRCOMMON_HXX_ +#include "pcrcommon.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + class IBrowserControl; + class IPropertyLineListener; + struct OLineDescriptor; + + //======================================================================== + //= OPropertyEditor + //======================================================================== + class OPropertyEditor : public Control + { + private: + TabControl m_aTabControl; + IPropertyLineListener* m_pListener; + sal_uInt16 m_nNextId; + + protected: + virtual void Resize(); + + public: + OPropertyEditor (Window* pParent, WinBits nWinStyle = WB_DIALOGCONTROL); + OPropertyEditor (Window* pParent, const ResId& rResId); + + ~OPropertyEditor(); + + virtual sal_uInt16 CalcVisibleLines(); + virtual void EnableUpdate(); + virtual void DisableUpdate(); + + virtual void SetLineListener(IPropertyLineListener *); + + virtual void SetHelpId( sal_uInt32 nHelpId ); + virtual sal_uInt16 AppendPage( const String& r,sal_uInt32 nHelpId=0); + virtual void SetPage( sal_uInt16 ); + virtual void RemovePage(sal_uInt16 nID); + virtual sal_uInt16 GetCurPage(); + virtual void ClearAll(); + virtual void ClearTable(); + + virtual void SetPropertyValue(const ::rtl::OUString & rEntryName, const ::rtl::OUString & rValue ); + virtual ::rtl::OUString GetPropertyValue(const ::rtl::OUString & rEntryName ) const; + virtual sal_uInt16 GetPropertyPos(const ::rtl::OUString& rEntryName ) const; + virtual void SetPropertyData(const ::rtl::OUString& rEntryName, void* pData); + virtual IBrowserControl* GetPropertyControl( const ::rtl::OUString& rEntryName ); + + virtual sal_uInt16 InsertEntry(const OLineDescriptor&, sal_uInt16 nPos = EDITOR_LIST_APPEND); + virtual void ChangeEntry(const OLineDescriptor&, sal_uInt16 nPos); + virtual sal_uInt16 AppendEntry(const OLineDescriptor&); + + virtual void SetFirstVisibleEntry(sal_uInt16 nPos); + virtual sal_uInt16 GetFirstVisibleEntry(); + + virtual void SetSelectedEntry(sal_uInt16 nPos); + virtual sal_uInt16 GetSelectedEntry(); + + protected: + DECL_LINK(OnPageDeactivate, TabControl*); + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_PROPERTYEDITOR_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 11:50:25 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propertyinfo.hxx b/extensions/source/propctrlr/propertyinfo.hxx new file mode 100644 index 000000000..6dd12a5a0 --- /dev/null +++ b/extensions/source/propctrlr/propertyinfo.hxx @@ -0,0 +1,110 @@ +/************************************************************************* + * + * $RCSfile: propertyinfo.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:31:43 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPERTYINFO_HXX_ +#define _EXTENSIONS_PROPCTRLR_PROPERTYINFO_HXX_ + +#ifndef _SAL_TYPES_H_ +#include <sal/types.h> +#endif +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ +#include <com/sun/star/uno/Sequence.hxx> +#endif +#ifndef _RTL_USTRING_HXX_ +#include <rtl/ustring.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + //= IPropertyInfoService + //======================================================================== + class IPropertyInfoService + { + public: + virtual sal_Int32 getPropertyId(const String& _rName) const = 0; + virtual String getPropertyTranslation(sal_Int32 _nId) const = 0; + virtual sal_Int32 getPropertyHelpId(sal_Int32 _nId) const = 0; + virtual sal_Int16 getPropertyPos(sal_Int32 _nId) const = 0; + virtual sal_Bool getPropertyMultiFlag(sal_Int32 _nId) const = 0; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getPropertyEnumRepresentations(sal_Int32 _nId) const = 0; + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_PROPERTYINFO_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 12:02:53 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/proplinelistener.hxx b/extensions/source/propctrlr/proplinelistener.hxx new file mode 100644 index 000000000..07cf53368 --- /dev/null +++ b/extensions/source/propctrlr/proplinelistener.hxx @@ -0,0 +1,96 @@ +/************************************************************************* + * + * $RCSfile: proplinelistener.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:32:11 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPLINELISTENER_HXX_ +#define _EXTENSIONS_PROPCTRLR_PROPLINELISTENER_HXX_ + +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif + +//........................................................................ +namespace pcr +{ +//........................................................................ + + //==================================================================== + class IPropertyLineListener + { + public: + virtual void Modified( const String& _rName, const String& _rVal, void* _pData) = 0; + virtual void Clicked( const String& _rName, const String& _rVal, void* _pData) = 0; + virtual void Commit( const String& _rName, const String& _rVal, void* _pData) = 0; + virtual void Select( const String& _rName, void* _pData) = 0; + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_PROPLINELISTENER_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 10:10:14 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propres.src b/extensions/source/propctrlr/propres.src new file mode 100644 index 000000000..e52d517e2 --- /dev/null +++ b/extensions/source/propctrlr/propres.src @@ -0,0 +1,169 @@ +/************************************************************************* + * + * $RCSfile: propres.src,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:32:26 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#include "propresid.hrc" +#endif + +String RID_STR_STANDARD +{ + Text = "Standard" ; + Text [ ENGLISH ] = "Standard" ; + Text [ portuguese ] = "Padrão" ; + Text [ english_us ] = "Standard" ; + Text [ portuguese_brazilian ] = "Standard" ; + Text [ swedish ] = "Standard" ; + Text [ danish ] = "Standard" ; + Text [ italian ] = "Standard" ; + Text [ spanish ] = "Predeterminado" ; + Text [ french ] = "Standard" ; + Text [ dutch ] = "Standaard" ; + Text[ chinese_simplified ] = "±ê×¼"; + Text[ russian ] = "Ñòàíäàðò"; + Text[ polish ] = "Standard"; + Text[ japanese ] = "•W€"; + Text[ chinese_traditional ] = "¼Ð·Ç"; + Text[ greek ] = "ÐñïåðéëïãÞ"; + Text[ korean ] = "Ç¥ÁØ"; + Text[ arabic ] = "ÞíÇÓí"; + Text[ turkish ] = "Standart"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPPAGE_DEFAULT +{ + Text = "Allgemein" ; + Text [ English ] = "Common" ; + Text [ portuguese ] = "Geral" ; + Text [ english_us ] = "General" ; + Text [ portuguese_brazilian ] = "Allgemein" ; + Text [ swedish ] = "Allmänt" ; + Text [ danish ] = "Generelt" ; + Text [ italian ] = "Generale" ; + Text [ spanish ] = "General" ; + Text [ french ] = "Général" ; + Text [ dutch ] = "Algemeen" ; + Text[ chinese_simplified ] = "³£¹æ"; + Text[ russian ] = "Îáùèå"; + Text[ polish ] = "Ogólne"; + Text[ japanese ] = "‘S”Ê"; + Text[ chinese_traditional ] = "¤@¯ë"; + Text[ greek ] = "ÃåíéêÜ"; + Text[ korean ] = "ÀϹÝ"; + Text[ arabic ] = "ÚÇã"; + Text[ turkish ] = "Genel"; + Text[ language_user1 ] = " "; +}; +String RID_STR_PROPPAGE_DATA +{ + Text = "Daten" ; + Text [ English ] = "Data" ; + Text [ portuguese ] = "Dados" ; + Text [ english_us ] = "Data" ; + Text [ portuguese_brazilian ] = "Daten" ; + Text [ swedish ] = "Data" ; + Text [ danish ] = "Data" ; + Text [ italian ] = "Dati" ; + Text [ spanish ] = "Datos" ; + Text [ french ] = "Données" ; + Text [ dutch ] = "Gegevens" ; + Text[ chinese_simplified ] = "Êý¾Ý"; + Text[ russian ] = "Äàííûå"; + Text[ polish ] = "Dane"; + Text[ japanese ] = "ÃÞ°À"; + Text[ chinese_traditional ] = "¸ê®Æ"; + Text[ greek ] = "ÄåäïìÝíá"; + Text[ korean ] = "µ¥ÀÌÅÍ"; + Text[ arabic ] = "ÈíÇäÇÊ"; + Text[ turkish ] = "Veriler"; + Text[ language_user1 ] = " "; +}; +String RID_STR_BOOL +{ + Text = "Nein;Ja" ; + Text [ English ] = "No;Yes" ; + Text [ portuguese ] = "Não;Sim" ; + Text [ english_us ] = "No;Yes" ; + Text [ portuguese_brazilian ] = "Nein;Ja" ; + Text [ swedish ] = "Nej;Ja" ; + Text [ danish ] = "Nej;Ja" ; + Text [ italian ] = "No;Sì" ; + Text [ spanish ] = "No;Sí" ; + Text [ french ] = "Non;Oui" ; + Text [ dutch ] = "Nee;Ja" ; + Text[ chinese_simplified ] = "·ñ;ÊÇ"; + Text[ russian ] = "Äà;Íåò"; + Text[ polish ] = "Nie;Tak"; + Text[ japanese ] = "‚¢‚¢‚¦;‚Í‚¢"; + Text[ chinese_traditional ] = "§_;¬O"; + Text[ greek ] = "¼÷é-Íáé"; + Text[ korean ] = "¾Æ´Ï¿À;¿¹"; + Text[ arabic ] = "áÇ;äÚã"; + Text[ turkish ] = "Hayýr;Evet"; + Text[ language_user1 ] = " "; +}; + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 13:04:05 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/propresid.hrc b/extensions/source/propctrlr/propresid.hrc new file mode 100644 index 000000000..2ccdea525 --- /dev/null +++ b/extensions/source/propctrlr/propresid.hrc @@ -0,0 +1,89 @@ +/************************************************************************* + * + * $RCSfile: propresid.hrc,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:32:36 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ +#define _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ + +// TODO: create a new resource range in <svtools/solar.hrc> + +#define RID_PROPCONTROLLER_START 1000 + // arbitrary at the moment +#define RID_FORMBROWSER_START RID_PROPCONTROLLER_START + 2000 + +// ----------------------------------------------------------------------- +// - Strings +// ----------------------------------------------------------------------- + +#define RID_STR_STANDARD ( RID_PROPCONTROLLER_START + 0 ) +#define RID_STR_PROPPAGE_DEFAULT ( RID_PROPCONTROLLER_START + 1 ) +#define RID_STR_PROPPAGE_DATA ( RID_PROPCONTROLLER_START + 2 ) +#define RID_STR_BOOL ( RID_PROPCONTROLLER_START + 3 ) + + +#endif // _EXTENSIONS_PROPCTRLR_PROPRESID_HRC_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 12:59:45 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/selectlabeldialog.cxx b/extensions/source/propctrlr/selectlabeldialog.cxx new file mode 100644 index 000000000..0eb7bd5ba --- /dev/null +++ b/extensions/source/propctrlr/selectlabeldialog.cxx @@ -0,0 +1,372 @@ +/************************************************************************* + * + * $RCSfile: selectlabeldialog.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:32:49 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_SELECTLABELDIALOG_HXX_ +#include "selectlabeldialog.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_FORMRESID_HRC_ +#include "formresid.hrc" +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_FORMBROWSERTOOLS_HXX_ +#include "formbrowsertools.hxx" +#endif +#ifndef _EXTENSIONS_FORMSCTRLR_FORMSTRINGS_HXX_ +#include "formstrings.hxx" +#endif +#ifndef _COM_SUN_STAR_FORM_FORMCOMPONENTTYPE_HPP_ +#include <com/sun/star/form/FormComponentType.hpp> +#endif +#ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_ +#include <com/sun/star/container/XChild.hpp> +#endif +#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_ +#include <com/sun/star/container/XIndexAccess.hpp> +#endif +#ifndef _COM_SUN_STAR_SDBC_XRESULTSET_HPP_ +#include <com/sun/star/sdbc/XResultSet.hpp> +#endif +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ +#include <com/sun/star/beans/XPropertySet.hpp> +#endif +#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ +#include <com/sun/star/lang/XServiceInfo.hpp> +#endif +#ifndef _COMPHELPER_PROPERTY_HXX_ +#include <comphelper/property.hxx> +#endif +#ifndef _COMPHELPER_TYPES_HXX_ +#include <comphelper/types.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + using namespace ::com::sun::star::uno; + using namespace ::com::sun::star::container; + using namespace ::com::sun::star::beans; + using namespace ::com::sun::star::form; + using namespace ::com::sun::star::sdbc; + using namespace ::com::sun::star::lang; + + //======================================================================== + // OSelectLabelDialog + //======================================================================== + DBG_NAME(OSelectLabelDialog); + //------------------------------------------------------------------------ + OSelectLabelDialog::OSelectLabelDialog( Window* pParent, Reference< XPropertySet > _xControlModel ) + :ModalDialog(pParent, ModuleRes(RID_DLG_SELECTLABELCONTROL)) + ,m_aMainDesc(this, ResId(1)) + ,m_aControlTree(this, ResId(1)) + ,m_aNoAssignment(this, ResId(1)) + ,m_aSeparator(this, ResId(1)) + ,m_aOk(this, ResId(1)) + ,m_aCancel(this, ResId(1)) + ,m_xControlModel(_xControlModel) + ,m_pInitialSelection(NULL) + ,m_aModelImages(ModuleRes(RID_IL_FORMEXPLORER)) + ,m_pLastSelected(NULL) + ,m_bHaveAssignableControl(sal_False) + { + DBG_CTOR(OSelectLabelDialog,NULL); + + // initialize the TreeListBox + m_aControlTree.SetSelectionMode( SINGLE_SELECTION ); + m_aControlTree.SetDragDropMode( 0 ); + m_aControlTree.EnableInplaceEditing( sal_False ); + m_aControlTree.SetWindowBits(WB_BORDER | WB_HASLINES | WB_HASLINESATROOT | WB_HASBUTTONS | WB_HASBUTTONSATROOT | WB_HSCROLL); + + m_aControlTree.SetNodeBitmaps( m_aModelImages.GetImage( RID_SVXIMG_COLLAPSEDNODE ), m_aModelImages.GetImage( RID_SVXIMG_EXPANDEDNODE ) ); + m_aControlTree.SetSelectHdl(LINK(this, OSelectLabelDialog, OnEntrySelected)); + m_aControlTree.SetDeselectHdl(LINK(this, OSelectLabelDialog, OnEntrySelected)); + + // fill the description + UniString sDescription = m_aMainDesc.GetText(); + sal_Int16 nClassID = FormComponentType::CONTROL; + if (::comphelper::hasProperty(PROPERTY_CLASSID, m_xControlModel)) + nClassID = ::comphelper::getINT16(m_xControlModel->getPropertyValue(PROPERTY_CLASSID)); + + sDescription.SearchAndReplace(String::CreateFromAscii("$control_class$"), GetUIHeadlineName(nClassID, makeAny(m_xControlModel))); + UniString sName = ::comphelper::getString(m_xControlModel->getPropertyValue(PROPERTY_NAME)).getStr(); + sDescription.SearchAndReplace(String::CreateFromAscii("$control_name$"), sName); + m_aMainDesc.SetText(sDescription); + + // search for the root of the form hierarchy + Reference< XChild > xCont(m_xControlModel, UNO_QUERY); + Reference< XInterface > xSearch( xCont.is() ? xCont->getParent() : Reference< XInterface > ()); + Reference< XResultSet > xParentAsResultSet(xSearch, UNO_QUERY); + while (xParentAsResultSet.is()) + { + xCont = Reference< XChild > (xSearch, UNO_QUERY); + xSearch = xCont.is() ? xCont->getParent() : Reference< XInterface > (); + xParentAsResultSet = Reference< XResultSet > (xSearch, UNO_QUERY); + } + + // and insert all entries below this root into the listbox + if (xSearch.is()) + { + // check wich service the allowed components must suppport + sal_Int16 nClassId = 0; + try { nClassId = ::comphelper::getINT16(m_xControlModel->getPropertyValue(PROPERTY_CLASSID)); } catch(...) { } + m_sRequiredService = (FormComponentType::RADIOBUTTON == nClassId) ? SERVICE_COMPONENT_GROUPBOX : SERVICE_COMPONENT_FIXEDTEXT; + m_aRequiredControlImage = m_aModelImages.GetImage((FormComponentType::RADIOBUTTON == nClassId) ? RID_SVXIMG_GROUPBOX : RID_SVXIMG_FIXEDTEXT); + + // calc the currently set label control (so InsertEntries can calc m_pInitialSelection) + Any aCurrentLabelControl( m_xControlModel->getPropertyValue(PROPERTY_CONTROLLABEL) ); + DBG_ASSERT((aCurrentLabelControl.getValueTypeClass() == TypeClass_INTERFACE) || !aCurrentLabelControl.hasValue(), + + "OSelectLabelDialog::OSelectLabelDialog : invalid ControlLabel property !"); + if (aCurrentLabelControl.hasValue()) + aCurrentLabelControl >>= m_xInitialLabelControl; + + // insert the root + Image aRootImage = m_aModelImages.GetImage(RID_SVXIMG_FORMS); + SvLBoxEntry* pRoot = m_aControlTree.InsertEntry(ModuleRes(RID_STR_FORMS), aRootImage, aRootImage); + + // build the tree + m_pInitialSelection = NULL; + m_bHaveAssignableControl = sal_False; + InsertEntries(xSearch, pRoot); + m_aControlTree.Expand(pRoot); + } + + if (m_pInitialSelection) + { + m_aControlTree.MakeVisible(m_pInitialSelection, sal_True); + m_aControlTree.Select(m_pInitialSelection, sal_True); + } + else + { + m_aControlTree.MakeVisible(m_aControlTree.First(), sal_True); + if (m_aControlTree.FirstSelected()) + m_aControlTree.Select(m_aControlTree.FirstSelected(), sal_False); + m_aNoAssignment.Check(sal_True); + } + + if (!m_bHaveAssignableControl) + { // no controls which can be assigned + m_aNoAssignment.Check(sal_True); + m_aNoAssignment.Enable(sal_False); + } + + m_aNoAssignment.SetClickHdl(LINK(this, OSelectLabelDialog, OnNoAssignmentClicked)); + m_aNoAssignment.GetClickHdl().Call(&m_aNoAssignment); + + FreeResource(); + } + + //------------------------------------------------------------------------ + OSelectLabelDialog::~OSelectLabelDialog() + { + // delete the entry datas of the listbox entries + SvLBoxEntry* pLoop = m_aControlTree.First(); + while (pLoop) + { + void* pData = pLoop->GetUserData(); + if (pData) + delete (Reference< XPropertySet > *)pData; + pLoop = m_aControlTree.Next(pLoop); + } + + DBG_DTOR(OSelectLabelDialog,NULL); + } + + //------------------------------------------------------------------------ + sal_Int32 OSelectLabelDialog::InsertEntries(const Reference< XInterface > & _xContainer, SvLBoxEntry* pContainerEntry) + { + Reference< XIndexAccess > xContainer(_xContainer, UNO_QUERY); + if (!xContainer.is()) + return 0; + + sal_Int32 nChildren = 0; + UniString sName,sDisplayName; + Reference< XPropertySet > xAsSet; + for (sal_Int32 i=0; i<xContainer->getCount(); ++i) + { + xContainer->getByIndex(i) >>= xAsSet; + if (!xAsSet.is()) + { + DBG_WARNING("OSelectLabelDialog::InsertEntries : strange : a form component which isn't a property set !"); + continue; + } + + if (!::comphelper::hasProperty(PROPERTY_NAME, xAsSet)) + // we need at least a name for displaying ... + continue; + sName = ::comphelper::getString(xAsSet->getPropertyValue(PROPERTY_NAME)).getStr(); + + // we need to check if the control model supports the required service + Reference< XServiceInfo > xInfo(xAsSet, UNO_QUERY); + if (!xInfo.is()) + continue; + + if (!xInfo->supportsService(m_sRequiredService)) + { // perhaps it is a container + Reference< XIndexAccess > xCont(xAsSet, UNO_QUERY); + if (xCont.is() && xCont->getCount()) + { // yes -> step down + Image aFormImage = m_aModelImages.GetImage( RID_SVXIMG_FORM ); + SvLBoxEntry* pCont = m_aControlTree.InsertEntry(sName, aFormImage, aFormImage, pContainerEntry); + sal_Int32 nContChildren = InsertEntries(xCont, pCont); + if (nContChildren) + { + m_aControlTree.Expand(pCont); + ++nChildren; + } + else + { // oops, no valid childs -> remove the entry + m_aControlTree.ModelIsRemoving(pCont); + m_aControlTree.GetModel()->Remove(pCont); + m_aControlTree.ModelHasRemoved(pCont); + } + } + continue; + } + + // get the label + if (!::comphelper::hasProperty(PROPERTY_LABEL, xAsSet)) + continue; + sDisplayName = ::comphelper::getString(xAsSet->getPropertyValue(PROPERTY_LABEL)).getStr(); + sDisplayName += String::CreateFromAscii(" ("); + sDisplayName += sName; + sDisplayName += ')'; + + // all requirements met -> insert + SvLBoxEntry* pCurrent = m_aControlTree.InsertEntry(sDisplayName, m_aRequiredControlImage, m_aRequiredControlImage, pContainerEntry); + pCurrent->SetUserData(new Reference< XPropertySet > (xAsSet)); + ++nChildren; + + if (m_xInitialLabelControl == xAsSet) + m_pInitialSelection = pCurrent; + + m_bHaveAssignableControl = sal_True; + } + + return nChildren; + } + + //------------------------------------------------------------------------ + IMPL_LINK(OSelectLabelDialog, OnEntrySelected, SvTreeListBox*, pLB) + { + DBG_ASSERT(pLB == &m_aControlTree, "OSelectLabelDialog::OnEntrySelected : where did this come from ?"); + SvLBoxEntry* pSelected = m_aControlTree.FirstSelected(); + void* pData = pSelected ? pSelected->GetUserData() : NULL; + + if (pData) + m_xSelectedControl = Reference< XPropertySet > (*(Reference< XPropertySet > *)pData); + + m_aNoAssignment.SetClickHdl(Link()); + m_aNoAssignment.Check(pData == NULL); + m_aNoAssignment.SetClickHdl(LINK(this, OSelectLabelDialog, OnNoAssignmentClicked)); + + return 0L; + } + + //------------------------------------------------------------------------ + IMPL_LINK(OSelectLabelDialog, OnNoAssignmentClicked, Button*, pButton) + { + DBG_ASSERT(pButton == &m_aNoAssignment, "OSelectLabelDialog::OnNoAssignmentClicked : where did this come from ?"); + + if (m_aNoAssignment.IsChecked()) + m_pLastSelected = m_aControlTree.FirstSelected(); + else + { + DBG_ASSERT(m_bHaveAssignableControl, "OSelectLabelDialog::OnNoAssignmentClicked"); + // search the first assignable entry + SvLBoxEntry* pSearch = m_aControlTree.First(); + while (pSearch) + { + if (pSearch->GetUserData()) + break; + pSearch = m_aControlTree.Next(pSearch); + } + // and select it + if (pSearch) + { + m_aControlTree.Select(pSearch); + m_pLastSelected = pSearch; + } + } + + if (m_pLastSelected) + { + m_aControlTree.SetSelectHdl(Link()); + m_aControlTree.SetDeselectHdl(Link()); + m_aControlTree.Select(m_pLastSelected, !m_aNoAssignment.IsChecked()); + m_aControlTree.SetSelectHdl(LINK(this, OSelectLabelDialog, OnEntrySelected)); + m_aControlTree.SetDeselectHdl(LINK(this, OSelectLabelDialog, OnEntrySelected)); + } + + return 0L; + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 14:06:16 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/selectlabeldialog.hxx b/extensions/source/propctrlr/selectlabeldialog.hxx new file mode 100644 index 000000000..867034fb0 --- /dev/null +++ b/extensions/source/propctrlr/selectlabeldialog.hxx @@ -0,0 +1,142 @@ +/************************************************************************* + * + * $RCSfile: selectlabeldialog.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:33:05 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_SELECTLABELDIALOG_HXX_ +#define _EXTENSIONS_PROPCTRLR_SELECTLABELDIALOG_HXX_ + +#ifndef _SV_FIXED_HXX +#include <vcl/fixed.hxx> +#endif +#ifndef _SVTREEBOX_HXX +#include <svtools/svtreebx.hxx> +#endif +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _SV_IMAGE_HXX +#include <vcl/image.hxx> +#endif +#ifndef _SV_DIALOG_HXX +#include <vcl/dialog.hxx> +#endif +#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ +#include <com/sun/star/beans/XPropertyset.hpp> +#endif +#ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ +#include "modulepcr.hxx" +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + // OSelectLabelDialog + //======================================================================== + class OSelectLabelDialog + :public ModalDialog + ,public OModuleResourceClient + { + FixedText m_aMainDesc; + SvTreeListBox m_aControlTree; + CheckBox m_aNoAssignment; + FixedLine m_aSeparator; + OKButton m_aOk; + CancelButton m_aCancel; + + ImageList m_aModelImages; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xControlModel; + ::rtl::OUString m_sRequiredService; + Image m_aRequiredControlImage; + SvLBoxEntry* m_pInitialSelection; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xInitialLabelControl; + + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xSelectedControl; + SvLBoxEntry* m_pLastSelected; + sal_Bool m_bHaveAssignableControl; + + public: + OSelectLabelDialog(Window* pParent, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _xControlModel); + ~OSelectLabelDialog(); + + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > GetSelected() const { return m_aNoAssignment.IsChecked() ? ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > () : m_xSelectedControl; } + + protected: + sal_Int32 InsertEntries(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xContainer, SvLBoxEntry* pContainerEntry); + + DECL_LINK(OnEntrySelected, SvTreeListBox*); + DECL_LINK(OnNoAssignmentClicked, Button*); + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_SELECTLABELDIALOG_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 14:06:24 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx new file mode 100644 index 000000000..ddc72097c --- /dev/null +++ b/extensions/source/propctrlr/standardcontrol.cxx @@ -0,0 +1,1237 @@ +/************************************************************************* + * + * $RCSfile: standardcontrol.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:33:20 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_STANDARDCONTROL_HXX_ +#include "standardcontrol.hxx" +#endif +#ifndef _EXTENSIONS_PROPCTRLR_BRWCONTROLLISTENER_HXX_ +#include "brwcontrollistener.hxx" +#endif + +#ifndef _TOOLS_SOLMATH_HXX +#include <tools/solmath.hxx> +#endif +#ifndef _SFX_OBJSH_HXX +#include <sfx2/objsh.hxx> +#endif + +//================================================================== +// ugly dependencies for the OColorControl +#ifndef _SVX_SVXIDS_HRC +#include <svx/svxids.hrc> +#endif +#define ITEMID_COLOR_TABLE SID_COLOR_TABLE +#ifndef _SVX_DRAWITEM_HXX +#include <svx/drawitem.hxx> +#endif +#ifndef _XTABLE_HXX +#include <xtable.hxx> +#endif +//================================================================== +// ugly dependencies for the OMultilineEditControl +#ifndef _SV_FLOATWIN_HXX +#include <vcl/floatwin.hxx> +#endif +#ifndef _SVEDIT_HXX +#include <svtools/svmedit.hxx> +#endif +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _SV_SVAPP_HXX +#include <vcl/svapp.hxx> +#endif +//================================================================== + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //================================================================== + //= OTimeControl + //================================================================== + //------------------------------------------------------------------ + OTimeControl::OTimeControl(Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,TimeField(pParent, nWinStyle) + { + SetStrictFormat(sal_True); + SetFormat(TIMEF_SEC); + + SetModifyHdl(LINK(this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK(this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK(this, OCommonBehaviourControl, LoseFocusHdl)); + + autoSizeWindow(); + + EnableEmptyFieldValue(sal_True); + } + + //------------------------------------------------------------------ + void OTimeControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + if (bIsUnknown || (rString == m_sStandardString)) + { + SetText(String()); + SetEmptyTime(); + } + else + { + if (rString.getLength()) + { + sal_uInt32 nTime = rString.toInt32(); + SetTime(Time(nTime)); + } + else + { + SetText(String()); + SetEmptyTime(); + } + } + } + + //------------------------------------------------------------------ + ::rtl::OUString OTimeControl::GetProperty() const + { + if (GetText().Len()>0) + { + sal_Int32 nTime = GetTime().GetTime(); + return ::rtl::OUString::valueOf(nTime); + } + else + return ::rtl::OUString(); + } + + //------------------------------------------------------------------ + long OTimeControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return TimeField::PreNotify(rNEvt); + } + + //================================================================== + //= ODateControl + //================================================================== + //------------------------------------------------------------------ + ODateControl::ODateControl(Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,DateField(pParent, nWinStyle) + { + SetStrictFormat(sal_True); + + SetModifyHdl(LINK(this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK(this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK(this, OCommonBehaviourControl, LoseFocusHdl)); + + SetMin(Date(1,1,1600)); + SetFirst(Date(1,1,1600)); + SetLast(Date(1,1,9999)); + SetMax(Date(1,1,9999)); + + autoSizeWindow(); + + SetExtFormat(XTDATEF_SYSTEM_SHORT_YYYY); + EnableEmptyFieldValue(sal_True); + } + + //------------------------------------------------------------------ + void ODateControl::SetProperty(const ::rtl::OUString& rString, sal_Bool bIsUnknown) + { + if (bIsUnknown || (rString==m_sStandardString)) + { + SetText(String()); + SetEmptyDate(); + } + else + { + if (rString.getLength()) + { + sal_uInt32 nDate = rString.toInt32(); + SetDate(Date(nDate)); + } + else + { + SetText(String()); + SetEmptyDate(); + } + } + } + + //------------------------------------------------------------------ + ::rtl::OUString ODateControl::GetProperty() const + { + if (GetText().Len()>0) + { + sal_Int32 nDate = GetDate().GetDate(); + return ::rtl::OUString::valueOf(nDate); + } + else return ::rtl::OUString(); + } + + //------------------------------------------------------------------ + long ODateControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return DateField::PreNotify(rNEvt); + } + + //================================================================== + //= OEditControl + //================================================================== + //------------------------------------------------------------------ + OEditControl::OEditControl(Window* _pParent, sal_Bool _bPW, WinBits _nWinStyle) + :OCommonBehaviourControl(this) + ,Edit(_pParent, _nWinStyle) + { + m_bIsPassword = _bPW; + + SetModifyHdl(LINK(this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK(this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK(this, OCommonBehaviourControl, LoseFocusHdl)); + + autoSizeWindow(); + + if (m_bIsPassword) + SetMaxTextLen(1); + } + + //------------------------------------------------------------------ + void OEditControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + String aStr; + + if (!bIsUnknown) + aStr = rString.getStr(); + + if (m_bIsPassword) + if (aStr.Len()) + { + sal_Unicode nCharacter = (sal_Unicode)aStr.ToInt32(); + if (nCharacter) + aStr = String(&nCharacter, 1); + else + aStr = String(); + } + + SetText(aStr); + } + + //------------------------------------------------------------------ + ::rtl::OUString OEditControl::GetProperty() const + { + String aStr = GetText(); + + if (m_bIsPassword) + { + if (aStr.Len()) + aStr = String::CreateFromInt32((sal_Int32)aStr.GetBuffer()[0]); + else + aStr = String('0'); + } + + return aStr; + } + + //------------------------------------------------------------------ + long OEditControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return Edit::PreNotify(rNEvt); + } + + //------------------------------------------------------------------ + void OEditControl::modified(Window* _pSource) + { + OCommonBehaviourControl::modified(_pSource); + + // for pasword controls, we fire a commit for every single change + if (m_bIsPassword) + commitModified(_pSource); + } + + //================================================================== + // class OCurrencyControl + //================================================================== + //------------------------------------------------------------------ + OCurrencyControl::OCurrencyControl( Window* _pParent, sal_uInt16 _nDigits, WinBits _nWinStyle) + :OCommonBehaviourControl(this) + ,LongCurrencyField(_pParent, _nWinStyle) + { + SetModifyHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + + International aInter=GetInternational(); + aInter.SetCurrSymbol(String()); + SetInternational(aInter); + + double nMax = GetMax(); + nMax = -nMax; + BigInt aBigInt(nMax); + SetMin(aBigInt); + + SetStrictFormat(sal_True); + SetDecimalDigits(_nDigits); + EnableEmptyFieldValue(sal_True); + + autoSizeWindow(); + } + + //------------------------------------------------------------------ + static double ImplCalcLongValue( double nValue, sal_uInt16 nDigits ) + { + double n = nValue; + for ( sal_uInt16 d = 0; d < nDigits; d++ ) + n *= 10; + return n; + } + + //------------------------------------------------------------------ + static double ImplCalcDoubleValue( double nValue, sal_uInt16 nDigits ) + { + double n = nValue; + for ( sal_uInt16 d = 0; d < nDigits; d++ ) + n /= 10; + return n; + } + + //------------------------------------------------------------------ + void OCurrencyControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + ::rtl::OUString aStr; + + if (bIsUnknown || (rString == m_sStandardString)) + { + SetText(String()); + SetEmptyFieldValue(); + } + else + { + if (rString.getLength()) + { + int nErr = 0; + double nValue = SolarMath::StringToDouble(rString, GetInternational(), nErr); + BigInt aBInt = ImplCalcLongValue(nValue, GetDecimalDigits()); + SetValue(aBInt); + } + else + SetEmptyFieldValue(); + } + } + + + //------------------------------------------------------------------ + ::rtl::OUString OCurrencyControl::GetProperty() const + { + if (GetText().Len()>0) + { + String aBuffer; + BigInt aBInt=GetValue(); + double nValue = ImplCalcDoubleValue(aBInt,GetDecimalDigits()); + SolarMath::DoubleToString(aBuffer,nValue,'F',GetDecimalDigits()); + + return aBuffer; + } + else + return ::rtl::OUString(); + + } + + //------------------------------------------------------------------ + long OCurrencyControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return LongCurrencyField::PreNotify(rNEvt); + } + + //================================================================== + //= ONumericControl + //================================================================== + //------------------------------------------------------------------ + ONumericControl::ONumericControl( Window* _pParent, sal_uInt16 _nDigits, WinBits _nWinStyle) + :OCommonBehaviourControl(this) + ,NumericField(_pParent, _nWinStyle) + { + SetModifyHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + + SetDecimalDigits(_nDigits); + EnableEmptyFieldValue(sal_True); + SetMin(-GetMax()); + SetStrictFormat(sal_True); + + autoSizeWindow(); + } + + //------------------------------------------------------------------ + void ONumericControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + if (bIsUnknown || (rString == m_sStandardString)) + { + SetText(String()); + SetEmptyFieldValue(); + } + else + { + if (rString.getLength()>0) + SetValue(rString.toInt32()); + else + SetEmptyFieldValue(); + } + } + + //------------------------------------------------------------------ + ::rtl::OUString ONumericControl::GetProperty() const + { + if (GetText().Len() != 0) + return ::rtl::OUString::valueOf((sal_Int32)GetValue()); + else + return ::rtl::OUString(); + + } + + //------------------------------------------------------------------ + long ONumericControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return NumericField::PreNotify(rNEvt); + } + + //================================================================== + //= OColorControl + //================================================================== + #define LB_DEFAULT_COUNT 9 + //------------------------------------------------------------------ + String MakeHexStr(sal_uInt32 nVal, sal_uInt32 nLength) + { + String aStr; + while (nVal>0) + { + sal_uInt16 nDigit=sal_uInt16(nVal & 0x000F); + char c=char(nVal & 0x000F); + nVal>>=4; + if (c<=9) c+='0'; + else c+='A'-10; + aStr.Insert(c,0); + } + while (aStr.Len() < nLength) aStr.Insert('0',0); + return aStr; + } + + //------------------------------------------------------------------ + OColorControl::OColorControl(Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,ColorListBox(pParent, nWinStyle) + { + SetSelectHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + + + // initialize the color listbox + SfxObjectShell* pDocSh = SfxObjectShell::Current(); + DBG_ASSERT( pDocSh, "OColorControl::OColorControl: no doc shell!"); + + if (pDocSh) + { + SvxColorTableItem aItem( *(const SvxColorTableItem*)( pDocSh->GetItem( SID_COLOR_TABLE ) ) ); + XColorTable* pColorTbl = aItem.GetColorTable(); + DBG_ASSERT(pColorTbl, "OColorControl::OColorControl: no color table!"); + + if (pColorTbl) + { + for (sal_uInt16 i = 0; i < pColorTbl->Count(); ++i) + { + XColorEntry* pEntry = pColorTbl->Get( i ); + InsertEntry( pEntry->GetColor(), pEntry->GetName() ); + } + } + } + + SetUpdateMode( sal_False); + + if (m_sStandardString.getLength()>0) + InsertEntry(m_sStandardString); + + SetUpdateMode( sal_True ); + SelectEntryPos(0); + } + + //------------------------------------------------------------------ + void OColorControl::SetCtrSize(const Size& _rSize) + { + OCommonBehaviourControl::SetCtrSize(_rSize); + + sal_uInt16 nCount = GetEntryCount(); + if (nCount>LB_DEFAULT_COUNT) + nCount=LB_DEFAULT_COUNT; + SetDropDownLineCount(nCount); + } + + //------------------------------------------------------------------ + void OColorControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + if (!bIsUnknown) + { + if ((rString.getLength() != 0) && (rString != m_sStandardString)) + { + sal_uInt32 nColor = rString.toInt32(); + Color aRgbCol((ColorData)nColor); + + if (!IsEntrySelected(aRgbCol)) + { + SelectEntry(aRgbCol); + if (!IsEntrySelected(aRgbCol)) + { // the given color is not part of the list -> insert a new entry with the hex code of the color + String aStr = String::CreateFromAscii("0x"); + aStr += MakeHexStr(nColor,8); + InsertEntry(aRgbCol, aStr); + SelectEntry(aRgbCol); + } + } + } + else + SelectEntryPos(0); + } + else + SetNoSelection(); + } + + //------------------------------------------------------------------ + ::rtl::OUString OColorControl::GetProperty()const + { + ::rtl::OUString aResult; + if (GetSelectEntryCount()>0) + { + aResult=GetSelectEntry(); + if (aResult != m_sStandardString) + { + Color aRgbCol = GetSelectEntryColor(); + sal_Int32 nColor = aRgbCol.GetColor(); + aResult = ::rtl::OUString::valueOf(nColor); + } + } + return aResult; + } + + //------------------------------------------------------------------ + sal_Bool OColorControl::HasList() + { + return sal_True; + } + + //------------------------------------------------------------------ + void OColorControl::ClearList() + { + Clear(); + } + + //------------------------------------------------------------------ + void OColorControl::InsertCtrEntry( const ::rtl::OUString& _rString, sal_uInt16 _nPos) + { + InsertEntry(_rString, _nPos); + } + + //------------------------------------------------------------------ + long OColorControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return ColorListBox::PreNotify(rNEvt); + } + + //------------------------------------------------------------------ + void OColorControl::modified(Window* _pSource) + { + OCommonBehaviourControl::modified(_pSource); + + if (!IsTravelSelect()) + // fire a commit + commitModified(_pSource); + } + + //================================================================== + //= OListboxControl + //================================================================== + //------------------------------------------------------------------ + OListboxControl::OListboxControl( Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,ListBox(pParent, nWinStyle) + { + SetDropDownLineCount(9); + + SetSelectHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + } + + //------------------------------------------------------------------ + void OListboxControl::SetCtrSize(const Size& rSize) + { + OCommonBehaviourControl::SetCtrSize(rSize); + + sal_uInt16 nCount = GetEntryCount(); + if (nCount>LB_DEFAULT_COUNT) + nCount=LB_DEFAULT_COUNT; + SetDropDownLineCount(nCount); + } + + //------------------------------------------------------------------ + ::rtl::OUString OListboxControl::GetProperty()const + { + if (GetSelectEntryCount()>0) + return GetSelectEntry(); + return String(); + } + + //------------------------------------------------------------------ + void OListboxControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + if (!bIsUnknown) + { + String aTmp = rString; + if (aTmp != GetSelectEntry()) + SelectEntry(aTmp); + + if (!IsEntrySelected(aTmp)) + { + if (!rString.getLength()) + { + SelectEntry(m_sStandardString); + } + else + { + InsertEntry(aTmp, 0); + SelectEntry(aTmp); + } + } + } + else + { + SetNoSelection(); + } + } + + //------------------------------------------------------------------ + sal_Bool OListboxControl::HasList() + { + return sal_True; + } + + //------------------------------------------------------------------ + void OListboxControl::ClearList() + { + Clear(); + } + + //------------------------------------------------------------------ + void OListboxControl::InsertCtrEntry( const ::rtl::OUString& rString,sal_uInt16 nPos) + { + InsertEntry(rString,nPos); + } + + //------------------------------------------------------------------ + long OListboxControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return ListBox::PreNotify(rNEvt); + } + + //------------------------------------------------------------------ + void OListboxControl::modified(Window* _pSource) + { + OCommonBehaviourControl::modified(_pSource); + + if (!IsTravelSelect()) + // fire a commit + commitModified(_pSource); + } + + //================================================================== + //= OComboboxControl + //================================================================== + //------------------------------------------------------------------ + OComboboxControl::OComboboxControl( Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,ComboBox(pParent,nWinStyle) + { + SetModifyHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + + SetDropDownLineCount(9); + } + + //------------------------------------------------------------------ + void OComboboxControl::SetCtrSize(const Size& rSize) + { + OCommonBehaviourControl::SetCtrSize(rSize); + + sal_uInt16 nCount = GetEntryCount(); + if (nCount > LB_DEFAULT_COUNT) + nCount = LB_DEFAULT_COUNT; + SetDropDownLineCount(nCount); + } + + //------------------------------------------------------------------ + void OComboboxControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + ::rtl::OUString aStr; + if (!bIsUnknown) + aStr = rString; + SetText(aStr); + } + + //------------------------------------------------------------------ + ::rtl::OUString OComboboxControl::GetProperty() const + { + return GetText(); + } + + //------------------------------------------------------------------ + sal_Bool OComboboxControl::HasList() + { + return sal_True; + } + + //------------------------------------------------------------------ + void OComboboxControl::ClearList() + { + Clear(); + } + + //------------------------------------------------------------------ + void OComboboxControl::InsertCtrEntry( const ::rtl::OUString& rString,sal_uInt16 nPos) + { + InsertEntry(rString,nPos); + } + + //------------------------------------------------------------------ + long OComboboxControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult = OCommonBehaviourControl::handlePreNotify(rNEvt); + if (nResult) // handled + return nResult; + + return ComboBox::PreNotify(rNEvt); + } + + //================================================================== + //= OMultilineEditControl + //================================================================== + class OMultilineFloatingEdit : public FloatingWindow + { + private: + MultiLineEdit m_aImplEdit; + + protected: + virtual void Resize(); + + public: + OMultilineFloatingEdit(Window* _pParen); + MultiLineEdit* getEdit() { return &m_aImplEdit; } + + protected: + virtual long PreNotify(NotifyEvent& _rNEvt); + }; + + //------------------------------------------------------------------ + OMultilineFloatingEdit::OMultilineFloatingEdit(Window* _pParent) + :FloatingWindow(_pParent, WB_BORDER) + ,m_aImplEdit(this, WB_VSCROLL|WB_IGNORETAB|WB_NOBORDER) + { + m_aImplEdit.Show(); + } + + //------------------------------------------------------------------ + void OMultilineFloatingEdit::Resize() + { + m_aImplEdit.SetSizePixel(GetOutputSizePixel()); + } + + //------------------------------------------------------------------ + long OMultilineFloatingEdit::PreNotify(NotifyEvent& _rNEvt) + { + long nResult = sal_True; + + sal_uInt16 nSwitch = _rNEvt.GetType(); + if (EVENT_KEYINPUT == nSwitch) + { + const KeyCode& aKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode(); + sal_uInt16 nKey = aKeyCode.GetCode(); + + if ( ( (KEY_RETURN == nKey) + && !aKeyCode.IsShift() + ) + || ( (KEY_UP == nKey) + && aKeyCode.IsMod2() + ) + ) + { + EndPopupMode(); + } + else + nResult=FloatingWindow::PreNotify(_rNEvt); + } + else + nResult=FloatingWindow::PreNotify(_rNEvt); + + return nResult; + } + + //================================================================== + //= OMultilineEditControl + //================================================================== + #define STD_HEIGHT 100 + //------------------------------------------------------------------ + OMultilineEditControl::OMultilineEditControl( Window* pParent,sal_Bool bEd, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,Control(pParent,((nWinStyle | WB_DIALOGCONTROL)& (~WB_READONLY| ~WB_DROPDOWN))) + ,m_pFloatingEdit(NULL) + ,m_pDropdownButton(NULL) + ,m_pImplEdit(NULL) + ,m_bDropdown(sal_False) + ,m_bEdit(bEd) + { + m_pImplEdit = new MultiLineEdit(this,WB_TABSTOP|WB_IGNORETAB| WB_NOBORDER| nWinStyle& WB_READONLY); + m_pImplEdit->Show(); + + if (nWinStyle & WB_DROPDOWN) + { + m_pDropdownButton = new PushButton( this, WB_NOLIGHTBORDER | WB_RECTSTYLE | WB_NOTABSTOP); + m_pDropdownButton->SetSymbol(SYMBOL_SPIN_DOWN); + m_pDropdownButton->SetClickHdl( LINK( this, OMultilineEditControl, DropDownHdl ) ); + m_pDropdownButton->Show(); + } + SetBackground(m_pImplEdit->GetBackground()); + + m_pFloatingEdit = new OMultilineFloatingEdit(this); //FloatingWindow + + m_pFloatingEdit->SetPopupModeEndHdl(LINK( this, OMultilineEditControl, ReturnHdl )); + + m_pFloatingEdit->getEdit()->SetModifyHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl)); + m_pImplEdit->SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + m_pImplEdit->SetModifyHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl)); + m_pImplEdit->SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + + autoSizeWindow(); + } + + //------------------------------------------------------------------ + OMultilineEditControl::~OMultilineEditControl() + { + delete m_pFloatingEdit; + delete m_pImplEdit; + delete m_pDropdownButton; + } + + //------------------------------------------------------------------ + sal_Bool OMultilineEditControl::ShowDropDown( sal_Bool bShow ) + { + if (bShow) + { + Point aMePos= GetPosPixel(); + aMePos = GetParent()->OutputToScreenPixel( aMePos ); + Size aSize=GetSizePixel(); + Rectangle aRect(aMePos,aSize); + aSize.Height() = STD_HEIGHT; + m_pFloatingEdit->SetOutputSizePixel(aSize); + m_pFloatingEdit->StartPopupMode( aRect, FLOATWIN_POPUPMODE_DOWN ); + + m_pFloatingEdit->Show(); + m_pFloatingEdit->getEdit()->GrabFocus(); + m_pFloatingEdit->getEdit()->SetSelection(Selection(m_pFloatingEdit->getEdit()->GetText().Len())); + m_bDropdown=sal_True; + if (m_bEdit) + m_pFloatingEdit->getEdit()->SetText(m_pImplEdit->GetText()); + m_pImplEdit->SetText(String()); + } + else + { + m_pFloatingEdit->Hide(); + m_pFloatingEdit->Invalidate(); + m_pFloatingEdit->Update(); + + String aOutput; + String aStr=m_pFloatingEdit->getEdit()->GetText(); + + if (aStr.Len()>0) + { + sal_Int32 nCount = aStr.GetTokenCount('\n'); + + String aInput=aStr.GetToken(0,'\n' ); + + if (m_bEdit) + { + aOutput=aStr; + } + else + { + if (aInput.Len()>0) + { + aOutput+='\"'; + aOutput+=aInput; + aOutput+='\"'; + } + + for (sal_Int32 i=1; i<nCount; ++i) + { + aInput = aStr.GetToken((sal_uInt16)i, '\n'); + if (aInput.Len()>0) + { + aOutput += ';'; + aOutput += '\"'; + aOutput += aInput; + aOutput += '\"'; + } + } + } + } + + m_pImplEdit->SetText(aOutput); + GetParent()->Invalidate(INVALIDATE_CHILDREN); + m_bDropdown=sal_False; + m_pImplEdit->GrabFocus(); + } + return m_bDropdown; + + } + + + //------------------------------------------------------------------ + void OMultilineEditControl::Resize() + { + Size aOutSz = GetOutputSizePixel(); + + if (m_pDropdownButton!=NULL) + { + long nSBWidth = GetSettings().GetStyleSettings().GetScrollBarSize(); + nSBWidth = CalcZoom( nSBWidth ); + m_pImplEdit->SetPosSizePixel( 0, 1, aOutSz.Width() - nSBWidth, aOutSz.Height()-2 ); + m_pDropdownButton->SetPosSizePixel( aOutSz.Width() - nSBWidth, 0, nSBWidth, aOutSz.Height() ); + } + else + m_pImplEdit->SetPosSizePixel( 0, 1, aOutSz.Width(), aOutSz.Height()-2 ); + } + + //------------------------------------------------------------------ + void OMultilineEditControl::SetLocked(sal_Bool bFlag) + { + m_bLocked = bFlag; + Font aFont = GetFont(); + + m_pFloatingEdit->getEdit()->SetReadOnly(bFlag); + if (m_bLocked) + { + aFont.SetColor(Color(COL_GRAY)); + } + else + { + aFont = GetParent()->GetFont(); + } + SetFont(aFont); + } + + //------------------------------------------------------------------ + void OMultilineEditControl::SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown) + { + String aStr; + + if (!bIsUnknown) + aStr=rString.getStr(); + + m_pFloatingEdit->getEdit()->SetText(aStr); + + if (m_bEdit) + { + m_pImplEdit->SetText(aStr); + } + else + { + String aOutput; + + if (aStr.Len()>0) + { + if (aStr.Len()>0) + { + sal_Int32 nCount = aStr.GetTokenCount('\n'); + + String aInput=aStr.GetToken(0,'\n' ); + if (aInput.Len()>0) + { + aOutput+='\"'; + aOutput+=aInput; + aOutput+='\"'; + } + + for(sal_Int32 i=1;i<nCount;i++) + { + aInput=aStr.GetToken((sal_uInt16)i,'\n' ); + if (aInput.Len()>0) + { + aOutput += ';'; + aOutput += '\"'; + aOutput += aInput; + aOutput += '\"'; + } + } + } + } + m_pImplEdit->SetText(aOutput); + } + } + + //------------------------------------------------------------------ + ::rtl::OUString OMultilineEditControl::GetProperty() const + { + if (m_bEdit) + return m_pImplEdit->GetText(); + else + return m_pFloatingEdit->getEdit()->GetText(); + } + + //------------------------------------------------------------------ + void OMultilineEditControl::GetFocus() + { + m_pImplEdit->GetFocus(); + } + + //------------------------------------------------------------------ + long OMultilineEditControl::PreNotify( NotifyEvent& rNEvt ) + { + long nResult=sal_True; + + sal_uInt16 nSwitch=rNEvt.GetType(); + if (nSwitch==EVENT_KEYINPUT) + { + const KeyCode& aKeyCode=rNEvt.GetKeyEvent()->GetKeyCode(); + sal_uInt16 nKey=aKeyCode.GetCode(); + + if (nKey==KEY_RETURN &&!aKeyCode.IsShift()) + { + LoseFocusHdl(m_pImplEdit); + m_bDir = sal_True; + if (getListener()) + getListener()->TravelLine(this); + } + else if (nKey==KEY_DOWN && aKeyCode.IsMod2()) + { + Invalidate(); + ShowDropDown(sal_True); + } + else if (KEYGROUP_CURSOR==aKeyCode.GetGroup()|| nKey==KEY_HELP + || aKeyCode.GetGroup()==KEYGROUP_FKEYS || m_bEdit) + { + nResult=Control::PreNotify(rNEvt); + } + else if (!m_bEdit) + { + Selection aSel=m_pImplEdit->GetSelection(); + if (aSel.Min()!=aSel.Max()) + { + aSel.Min()=FindPos(aSel.Min()); + aSel.Max()=FindPos(aSel.Max()); + } + else + { + aSel.Min()=FindPos(aSel.Min()); + aSel.Max()=aSel.Min(); + } + Invalidate(); + ShowDropDown(sal_True); + m_pFloatingEdit->getEdit()->GrabFocus(); + m_pFloatingEdit->getEdit()->SetSelection(aSel); + Window* pFocusWin = Application::GetFocusWindow(); + pFocusWin->KeyInput(*rNEvt.GetKeyEvent()); + } + } + else + nResult=Control::PreNotify(rNEvt); + + return nResult; + } + + //------------------------------------------------------------------ + long OMultilineEditControl::FindPos(long nSinglePos) + { + sal_uInt16 nPos=0; + sal_uInt16 nDiff=0; + String aOutput; + String aStr=m_pFloatingEdit->getEdit()->GetText(); + String aStr1=m_pImplEdit->GetText(); + + if ((nSinglePos == 0) || (nSinglePos == aStr1.Len())) + { + return nSinglePos; + } + + if (aStr.Len()>0) + { + sal_Int32 nCount = aStr.GetTokenCount('\n'); + + String aInput = aStr.GetToken(0,'\n' ); + + if (aInput.Len()>0) + { + aOutput+='\"'; + nDiff++; + aOutput+=aInput; + aOutput+='\"'; + } + + if (nSinglePos <= aOutput.Len()) + { + nPos=nSinglePos-nDiff; + } + else + { + for (sal_Int32 i=1; i<nCount; ++i) + { + aInput=aStr.GetToken((sal_uInt16)i, '\n'); + if (aInput.Len()>0) + { + aOutput += ';'; + aOutput += '\"'; + nDiff += 2; + aOutput += aInput; + aOutput += '\"'; + + if (nSinglePos <= aOutput.Len()) + { + nPos=nSinglePos-nDiff; + break; + } + } + } + } + } + return nPos; + } + + //------------------------------------------------------------------ + IMPL_LINK( OMultilineEditControl, ReturnHdl, OMultilineFloatingEdit*, pMEd) + { + + String aStr = m_pFloatingEdit->getEdit()->GetText(); + String aStr2 = m_pImplEdit->GetText(); + ShowDropDown(sal_False); + + if (aStr!=aStr2 || !m_bEdit) + { + if (m_bModified) + modified(m_pImplEdit); + commitModified(m_pImplEdit); + } + + return 0; + } + + //------------------------------------------------------------------ + IMPL_LINK( OMultilineEditControl, DropDownHdl, PushButton*, pPb ) + { + ShowDropDown(!m_bDropdown); + return 0; + } + + //------------------------------------------------------------------ + void OMultilineEditControl::modified(Window* _pSource) + { + if (_pSource == m_pFloatingEdit->getEdit()) + { // no listener notification in this case, just the set flag + m_bModified = sal_True; + } + else + OCommonBehaviourControl::modified(_pSource); + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 10:28:46 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/standardcontrol.hxx b/extensions/source/propctrlr/standardcontrol.hxx new file mode 100644 index 000000000..47869b8dd --- /dev/null +++ b/extensions/source/propctrlr/standardcontrol.hxx @@ -0,0 +1,304 @@ +/************************************************************************* + * + * $RCSfile: standardcontrol.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:33:33 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_STANDARDCONTROL_HXX_ +#define _EXTENSIONS_PROPCTRLR_STANDARDCONTROL_HXX_ + +#ifndef _EXTENSIONS_PROPCTRLR_COMMONCONTROL_HXX_ +#include "commoncontrol.hxx" +#endif +#ifndef _SV_FIELD_HXX +#include <vcl/field.hxx> +#endif +#ifndef _LONGCURR_HXX +#include <vcl/longcurr.hxx> +#endif +#ifndef _CTRLBOX_HXX +#include <svtools/ctrlbox.hxx> +#endif +#ifndef _SV_LSTBOX_HXX +#include <vcl/lstbox.hxx> +#endif +#ifndef _SV_COMBOBOX_HXX +#include <vcl/combobox.hxx> +#endif + +class PushButton; +class MultiLineEdit; +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + //= OTimeControl + //======================================================================== + class OTimeControl : public OCommonBehaviourControl, TimeField + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OTimeControl( Window* pParent, WinBits nWinStyle = WB_TABSTOP); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + }; + + //======================================================================== + //= ODateControl + //======================================================================== + class ODateControl : public OCommonBehaviourControl, DateField + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + ODateControl( Window* pParent, WinBits nWinStyle = WB_TABSTOP); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + }; + + //======================================================================== + //= OEditControl + //======================================================================== + class OEditControl : public OCommonBehaviourControl, Edit + { + protected: + sal_Bool m_bIsPassword : 1; + + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OEditControl(Window* _pParent, sal_Bool _bPassWord, WinBits nWinStyle = WB_TABSTOP); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + protected: + virtual void modified(Window* _pSource); + }; + + //======================================================================== + //= OCurrencyControl + //======================================================================== + class OCurrencyControl : public OCommonBehaviourControl, LongCurrencyField + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OCurrencyControl( Window* pParent,sal_uInt16 nDigits, + WinBits nWinStyle = WB_TABSTOP); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + }; + + //======================================================================== + //= ONumericControl + //======================================================================== + class ONumericControl : public OCommonBehaviourControl, NumericField + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + ONumericControl( Window* pParent,sal_uInt16 nDigits, WinBits nWinStyle = WB_TABSTOP); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + void SetMin(sal_Int32 _nMin) { NumericField::SetMin(_nMin); } + void SetMax(sal_Int32 _nMax) { NumericField::SetMax(_nMax); } + }; + + //======================================================================== + //= OColorControl + //======================================================================== + class OColorControl : public OCommonBehaviourControl, ColorListBox + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OColorControl( Window* pParent, WinBits nWinStyle = WB_TABSTOP |WB_DROPDOWN|WB_AUTOSIZE); + + // property value handling + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + // list handling + virtual sal_Bool HasList(); + virtual void ClearList(); + virtual void InsertCtrEntry( const ::rtl::OUString& rString, sal_uInt16 nPos = LISTBOX_APPEND ); + + virtual void SetCtrSize(const Size& rSize); + + protected: + virtual void modified(Window* _pSource); + }; + + //======================================================================== + //= OListboxControl + //======================================================================== + class OListboxControl : public OCommonBehaviourControl, ListBox + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OListboxControl( Window* pParent, WinBits nWinStyle = WB_TABSTOP|WB_SORT|WB_DROPDOWN|WB_AUTOSIZE); + + // property value handling + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + // list handling + virtual sal_Bool HasList(); + virtual void ClearList(); + virtual void InsertCtrEntry( const ::rtl::OUString& rString, sal_uInt16 nPos = LISTBOX_APPEND ); + + virtual void SetCtrSize(const Size& rSize); + + protected: + virtual void modified(Window* _pSource); + }; + + //======================================================================== + //= OComboboxControl + //======================================================================== + class OComboboxControl : public OCommonBehaviourControl, ComboBox + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + + public: + OComboboxControl( Window* pParent, + WinBits nWinStyle = WB_TABSTOP | WB_SORT | WB_DROPDOWN | WB_AUTOSIZE); + + // property value handling + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + // list handling + virtual sal_Bool HasList(); + virtual void ClearList(); + virtual void InsertCtrEntry( const ::rtl::OUString& rString, sal_uInt16 nPos = LISTBOX_APPEND ); + + virtual void SetCtrSize(const Size& rSize); + + }; + + //======================================================================== + //= OMultilineEditControl + //======================================================================== + class OMultilineFloatingEdit; + class OMultilineEditControl : public OCommonBehaviourControl, Control + { + OMultilineFloatingEdit* m_pFloatingEdit; + MultiLineEdit* m_pImplEdit; + PushButton* m_pDropdownButton; + sal_Bool m_bDropdown :1; + sal_Bool m_bEdit :1; + + DECL_LINK(ReturnHdl,OMultilineFloatingEdit*); + DECL_LINK(DropDownHdl, PushButton*); + + protected: + + virtual long PreNotify( NotifyEvent& rNEvt ); + void Resize(); + + long FindPos(long nSinglePos); + + public: + OMultilineEditControl( Window* pParent,sal_Bool bEdit, + WinBits nWinStyle = WB_TABSTOP | WB_DROPDOWN); + + ~OMultilineEditControl(); + + virtual void GetFocus(); + virtual sal_Bool ShowDropDown( sal_Bool bShow ); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + virtual void SetLocked(sal_Bool bLocked=sal_True); + protected: + virtual void modified(Window* _pSource); + }; +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_STANDARDCONTROL_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 10:26:52 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/stlops.hxx b/extensions/source/propctrlr/stlops.hxx new file mode 100644 index 000000000..f86fc2a82 --- /dev/null +++ b/extensions/source/propctrlr/stlops.hxx @@ -0,0 +1,115 @@ +/************************************************************************* + * + * $RCSfile: stlops.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:33:44 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_STLOPS_HXX_ +#define _EXTENSIONS_PROPCTRLR_STLOPS_HXX_ + +#ifndef _COMPHELPER_STLTYPES_HXX_ +#include <comphelper/stl_types.hxx> +#endif +#ifndef _COM_SUN_STAR_BEANS_PROPERTY_HPP_ +#include <com/sun/star/beans/Property.hpp> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + struct PropertyLessByName + :public ::std::binary_function < ::com::sun::star::beans::Property, + ::com::sun::star::beans::Property, + bool + > + { + bool operator() (::com::sun::star::beans::Property _rLhs, ::com::sun::star::beans::Property _rRhs) const + { + return _rLhs.Name < _rRhs.Name ? true : false; + } + }; + + //======================================================================== + struct TypeLessByName + :public ::std::binary_function < ::com::sun::star::uno::Type, + ::com::sun::star::uno::Type, + bool + > + { + bool operator() (::com::sun::star::uno::Type _rLhs, ::com::sun::star::uno::Type _rRhs) const + { + return _rLhs.getTypeName() < _rRhs.getTypeName() ? true : false; + } + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif _EXTENSIONS_PROPCTRLR_STLOPS_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 08.01.01 09:58:11 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/stringdefine.hxx b/extensions/source/propctrlr/stringdefine.hxx new file mode 100644 index 000000000..b4dda6acd --- /dev/null +++ b/extensions/source/propctrlr/stringdefine.hxx @@ -0,0 +1,120 @@ +/************************************************************************* + * + * $RCSfile: stringdefine.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:33:53 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_FORMSCTRLR_STRINGDEFINE_HXX_ +#define _EXTENSIONS_FORMSCTRLR_STRINGDEFINE_HXX_ + +#ifndef _RTL_USTRING_HXX_ +#include <rtl/ustring.hxx> +#endif +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //============================================================ + //= a helper for static ascii pseudo-unicode strings + //============================================================ + struct _ConstAsciiString_ + { + protected: + sal_Int32 length; + sal_Char const* str; + + public: + _ConstAsciiString_(const sal_Char* _str, sal_Int32 _len) : str(_str), length(_len) { } + + operator ::rtl::OUString () const { return ::rtl::OUString(str, length, RTL_TEXTENCODING_ASCII_US); } + operator String () const { return String(str, (xub_StrLen)length, RTL_TEXTENCODING_ASCII_US); } + operator const sal_Char* () const { return str; } + + sal_Int32 len() const { return length; } + }; + +#define CONST_ASCII_LENGTH(c) \ + (const sal_Char*)c, c.length() + + //============================================================ + //= concrete strings + //============================================================ + #ifndef PCR_IMPLEMENT_STRINGS + #define PCR_CONSTASCII_STRING(ident, string) extern const _ConstAsciiString_ ident + #else + #define PCR_CONSTASCII_STRING(ident, string) extern const _ConstAsciiString_ ident(string, sizeof(string)-1) + #endif + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_FORMSCTRLR_STRINGDEFINE_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 12.01.01 09:37:53 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/usercontrol.cxx b/extensions/source/propctrlr/usercontrol.cxx new file mode 100644 index 000000000..148625fa2 --- /dev/null +++ b/extensions/source/propctrlr/usercontrol.cxx @@ -0,0 +1,263 @@ +/************************************************************************* + * + * $RCSfile: usercontrol.cxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:34:02 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_USERCONTROL_HXX_ +#include "usercontrol.hxx" +#endif + +#ifndef _NUMUNO_HXX +#include <svtools/numuno.hxx> +#endif +#ifndef _TOOLS_SOLMATH_HXX +#include <tools/solmath.hxx> +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //================================================================== + // class OFormatDescriptionControl + //================================================================== + //------------------------------------------------------------------ + OFormatDescriptionControl::OFormatDescriptionControl( Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,FormattedField(pParent, nWinStyle) + { + SetModifyHdl(LINK( this, OCommonBehaviourControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OCommonBehaviourControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OCommonBehaviourControl, LoseFocusHdl)); + + autoSizeWindow(); + } + + //------------------------------------------------------------------ + long OFormatDescriptionControl::PreNotify( NotifyEvent& rNEvt ) + { + // want to handle two keys myself : Del/Backspace should empty the window (setting my prop to "standard" this way) + if (EVENT_KEYINPUT == rNEvt.GetType()) + { + sal_uInt16 nKey = rNEvt.GetKeyEvent()->GetKeyCode().GetCode(); + + if ((KEY_DELETE == nKey) || (KEY_BACKSPACE == nKey)) + { + SetText(String()); + ModifiedHdl(this); + return sal_True; + } + } + + if (OCommonBehaviourControl::handlePreNotify(rNEvt)) + return sal_True; + + // it wasn't a PropCommonControl event => let our window handle it + return FormattedField::PreNotify(rNEvt); + } + + //------------------------------------------------------------------ + void OFormatDescriptionControl::SetProperty(const ::rtl::OUString& rString, sal_Bool bIsUnknown) + { + if (bIsUnknown || (rString == m_sStandardString) || !rString.getLength()) + // unknown or standard -> no text + SetText(String()); + else + { + // else set the new format key, the text will be reformatted + SetValue(1234.56789); + SetFormatKey(String(rString).ToInt32()); + } + } + + //------------------------------------------------------------------ + ::rtl::OUString OFormatDescriptionControl::GetProperty() const + { + if (!GetText().Len()) + return m_sStandardString; + else + return String::CreateFromInt32(GetFormatKey()); + } + + //------------------------------------------------------------------ + void OFormatDescriptionControl::SetFormatSupplier(const SvNumberFormatsSupplierObj* pSupplier) + { + if (pSupplier) + { + TreatAsNumber(sal_True); + + SvNumberFormatter* pFormatter = pSupplier->GetNumberFormatter(); + SetFormatter(pFormatter, sal_True); + SetValue(1234.56789); + } + else + { + TreatAsNumber(sal_False); + SetFormatter(NULL, sal_True); + SetText(String()); + } + } + + //================================================================== + // class OFormattedNumericControl + //================================================================== + DBG_NAME(OFormattedNumericControl); + //------------------------------------------------------------------ + OFormattedNumericControl::OFormattedNumericControl( Window* pParent, WinBits nWinStyle) + :OCommonBehaviourControl(this) + ,FormattedField(pParent, nWinStyle) + { + DBG_CTOR(OFormattedNumericControl,NULL); + + SetModifyHdl(LINK( this, OFormattedNumericControl, ModifiedHdl )); + SetGetFocusHdl(LINK( this, OFormattedNumericControl, GetFocusHdl)); + SetLoseFocusHdl(LINK( this, OFormattedNumericControl, LoseFocusHdl)); + + autoSizeWindow(); + + TreatAsNumber(sal_True); + + m_nLastDecimalDigits = GetDecimalDigits(); + } + + //------------------------------------------------------------------ + OFormattedNumericControl::~OFormattedNumericControl() + { + DBG_DTOR(OFormattedNumericControl,NULL); + } + + //------------------------------------------------------------------ + long OFormattedNumericControl::PreNotify( NotifyEvent& rNEvt ) + { + if (OCommonBehaviourControl::handlePreNotify(rNEvt)) + return sal_True; + + // it wasn't a PropCommonControl event => let our window handle it + return FormattedField::PreNotify(rNEvt); + } + + //------------------------------------------------------------------ + void OFormattedNumericControl::SetProperty(const ::rtl::OUString& rString, sal_Bool bIsUnknown) + { + if (bIsUnknown || (rString == m_sStandardString) || !rString.getLength()) + // unknown or standard -> no text + SetText(String()); + else + { + SetValue(String(rString).ToDouble()); + } + } + + //------------------------------------------------------------------ + ::rtl::OUString OFormattedNumericControl::GetProperty() const + { + if (!GetText().Len()) + return m_sStandardString; + else + { + String sReturn; + SolarMath::DoubleToString( + sReturn, const_cast<OFormattedNumericControl*>(this)->GetValue(), 'F', m_nLastDecimalDigits, + '.', sal_True); + // always use a '.' (instead of the decimal separator given by m_aUsedInternational) : + // when the returned string is interpreted nobody knows about this control or the used + // international, so by convention we always use '.' for describing floating point numbers + // 27.07.99 - 67901 - FS + return sReturn; + } + } + + //------------------------------------------------------------------ + void OFormattedNumericControl::SetFormatDescription(const FormatDescription& rDesc) + { + if (rDesc.pSupplier) + { + TreatAsNumber(sal_True); + + SvNumberFormatter* pFormatter = rDesc.pSupplier->GetNumberFormatter(); + if (pFormatter != GetFormatter()) + SetFormatter(pFormatter, sal_True); + SetFormatKey(rDesc.nKey); + + m_nLastDecimalDigits = GetDecimalDigits(); + } + else + { + TreatAsNumber(sal_False); + SetFormatter(NULL, sal_True); + SetText(String()); + m_nLastDecimalDigits = 0; + } + } + +//............................................................................ +} // namespace pcr +//............................................................................ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 10:23:42 fs + ************************************************************************/ + diff --git a/extensions/source/propctrlr/usercontrol.hxx b/extensions/source/propctrlr/usercontrol.hxx new file mode 100644 index 000000000..d0bd10104 --- /dev/null +++ b/extensions/source/propctrlr/usercontrol.hxx @@ -0,0 +1,144 @@ +/************************************************************************* + * + * $RCSfile: usercontrol.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: fs $ $Date: 2001-01-12 11:34:10 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc.. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _EXTENSIONS_PROPCTRLR_USERCONTROL_HXX_ +#define _EXTENSIONS_PROPCTRLR_USERCONTROL_HXX_ + +#ifndef _EXTENSIONS_PROPCTRLR_COMMONCONTROL_HXX_ +#include "commoncontrol.hxx" +#endif +#define _ZFORLIST_DECLARE_TABLE +#ifndef _FMTFIELD_HXX_ +#include <svtools/fmtfield.hxx> +#endif + +class SvNumberFormatsSupplierObj; + +//............................................................................ +namespace pcr +{ +//............................................................................ + + //======================================================================== + //= OFormatDescriptionControl + //======================================================================== + class OFormatDescriptionControl : public OCommonBehaviourControl, FormattedField + { + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OFormatDescriptionControl( Window* pParent, WinBits nWinStyle = WB_TABSTOP); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + virtual void SetFormatSupplier(const SvNumberFormatsSupplierObj* pSupplier); + }; + + //======================================================================== + //= FormatDescription + //======================================================================== + struct FormatDescription + { + SvNumberFormatsSupplierObj* pSupplier; + sal_Int32 nKey; + }; + + //======================================================================== + //= OFormattedNumericControl + //======================================================================== + class OFormattedNumericControl : public OCommonBehaviourControl, FormattedField + { + sal_Int32 m_nLastDecimalDigits; + + protected: + virtual long PreNotify( NotifyEvent& rNEvt ); + + public: + OFormattedNumericControl( Window* pParent, WinBits nWinStyle = WB_TABSTOP); + ~OFormattedNumericControl(); + + virtual void SetProperty(const ::rtl::OUString &rString,sal_Bool bIsUnknown=sal_False); + virtual ::rtl::OUString GetProperty()const; + + virtual void SetFormatDescription(const FormatDescription& rDesc); + + // make some FormattedField methods available + virtual void SetDecimalDigits(sal_uInt16 nPrecision) { FormattedField::SetDecimalDigits(nPrecision); m_nLastDecimalDigits = nPrecision; } + virtual void SetDefaultValue(double dDef) { FormattedField::SetDefaultValue(dDef); } + virtual void EnableEmptyField(sal_Bool bEnable) { FormattedField::EnableEmptyField(bEnable); } + virtual void SetThousandsSep(sal_Bool bEnable) { FormattedField::SetThousandsSep(bEnable); } + }; + +//............................................................................ +} // namespace pcr +//............................................................................ + +#endif // _EXTENSIONS_PROPCTRLR_USERCONTROL_HXX_ + +/************************************************************************* + * history: + * $Log: not supported by cvs2svn $ + * + * Revision 1.0 09.01.01 10:22:35 fs + ************************************************************************/ + |