diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
commit | 7b0b5cdfeed656b279bc32cd929630d5fc25878b (patch) | |
tree | 5b89fb8497d7329d26c43f109bb014c54ffb0e8c /sw/source/ui/cctrl | |
parent | d791366863cf9659a01b171ce0e727bfe2f28cdf (diff) |
initial import
Diffstat (limited to 'sw/source/ui/cctrl')
-rw-r--r-- | sw/source/ui/cctrl/actctrl.cxx | 231 | ||||
-rw-r--r-- | sw/source/ui/cctrl/makefile.mk | 97 | ||||
-rw-r--r-- | sw/source/ui/cctrl/popbox.cxx | 182 | ||||
-rw-r--r-- | sw/source/ui/cctrl/swlbox.cxx | 622 |
4 files changed, 1132 insertions, 0 deletions
diff --git a/sw/source/ui/cctrl/actctrl.cxx b/sw/source/ui/cctrl/actctrl.cxx new file mode 100644 index 000000000000..c470b79d88e8 --- /dev/null +++ b/sw/source/ui/cctrl/actctrl.cxx @@ -0,0 +1,231 @@ +/************************************************************************* + * + * $RCSfile: actctrl.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + +#ifdef PRECOMPILED +#include "ui_pch.hxx" +#endif + +#pragma hdrstop + + +#ifndef _LIST_HXX //autogen +#include <tools/list.hxx> +#endif +#include "actctrl.hxx" + + + +void NumEditAction::Action() +{ + aActionLink.Call( this ); +} + + +long NumEditAction::Notify( NotifyEvent& rNEvt ) +{ + long nHandled = 0; + + if ( rNEvt.GetType() == EVENT_KEYINPUT ) + { + const KeyEvent* pKEvt = rNEvt.GetKeyEvent(); + const KeyCode aKeyCode = pKEvt->GetKeyCode(); + const USHORT nModifier = aKeyCode.GetModifier(); + if( aKeyCode.GetCode() == KEY_RETURN && + !nModifier) + { + Action(); + nHandled = 1; + } + + } + if(!nHandled) + NumericField::Notify( rNEvt ); + return nHandled; +} + +/*------------------------------------------------------------------------ + Beschreibung: KeyInput fuer ShortName - Edits ohne Spaces +------------------------------------------------------------------------*/ + + +void NoSpaceEdit::KeyInput(const KeyEvent& rEvt) +{ + BOOL bCallParent = TRUE; + if(rEvt.GetCharCode()) + { + String sKey = rEvt.GetCharCode(); + if( STRING_NOTFOUND != sForbiddenChars.Search(sKey)) + bCallParent = FALSE; + } + if(bCallParent) + Edit::KeyInput(rEvt); +} +/* -----------------------------11.02.00 15:28-------------------------------- + + ---------------------------------------------------------------------------*/ +void NoSpaceEdit::Modify() +{ + Selection aSel = GetSelection(); + String sTemp = GetText(); + for(USHORT i = 0; i < sForbiddenChars.Len(); i++) + { + sTemp.EraseAllChars( sForbiddenChars.GetChar(i) ); + } + USHORT nDiff = GetText().Len() - sTemp.Len(); + if(nDiff) + { + aSel.setMin(aSel.getMin() - nDiff); + aSel.setMax(aSel.getMin()); + SetText(sTemp); + SetSelection(aSel); + } + if(GetModifyHdl().IsSet()) + GetModifyHdl().Call(this); +} + +/************************************************************************* + + $Log: not supported by cvs2svn $ + Revision 1.67 2000/09/18 16:05:12 willem.vandorp + OpenOffice header added. + + Revision 1.66 2000/07/10 09:25:33 os + #76692# check CharCode first + + Revision 1.65 2000/02/21 07:16:20 os + #73223# Call ModifyHdl in ::Modify + + Revision 1.64 2000/02/11 14:46:03 os + #71914# Check content in ::Modify + + Revision 1.63 2000/02/01 10:08:25 os + #71914# forbidden chars in table names: <>. and space + + Revision 1.62 1999/06/10 07:45:50 OS + NoSpaceEdit: illegal characters can be set + + + Rev 1.61 10 Jun 1999 09:45:50 OS + NoSpaceEdit: illegal characters can be set + + Rev 1.60 05 Nov 1998 10:43:42 OS + #58990# Notify sollte richtig auf KEYINPUT reagieren + + Rev 1.59 21 Apr 1998 08:43:20 OS + NoSpaceEdit, TableNameEdit hierher verschoben + + Rev 1.58 30 Mar 1998 18:46:04 TJ + chg: header wg. internal Comperror + + Rev 1.57 12 Nov 1997 17:29:42 MBA + SP3:Notify,EVENT_KEYUP + + Rev 1.56 03 Nov 1997 13:09:44 MA + precomp entfernt + + Rev 1.55 17 Oct 1997 08:22:12 OS + Notify anstelle von KeyInput ueberladen #44732# + + Rev 1.54 13 Feb 1997 16:36:26 MA + NameEdit entfernt + + Rev 1.53 28 Aug 1996 08:23:40 OS + includes + + Rev 1.52 24 Nov 1995 16:57:36 OM + PCH->PRECOMPILED + + Rev 1.51 08 Nov 1995 10:18:32 OS + switch => if, keine member -> kein DTOR + + Rev 1.50 12 Oct 1995 15:27:26 MA + Klasse EditAction entfernt + + Rev 1.49 21 Mar 1995 19:00:08 OS + EditAction wieder drin + + Rev 1.48 20 Mar 1995 19:05:22 OS + unbenutzte Funktionen entfernt + + Rev 1.47 15 Mar 1995 11:01:46 MS + n.b. Ctors entfernt + + Rev 1.46 15 Mar 1995 10:36:46 MS + ActionControlls reduziert + + Rev 1.45 04 Mar 1995 23:13:30 ER + Help::EnableBalloonMode() hammernichmehr + + Rev 1.44 07 Feb 1995 19:23:44 ER + #elif UNX wird vielleicht wahr werden oder auch nicht.. + + Rev 1.43 09 Jan 1995 16:17:44 ER + del: ctype h + + Rev 1.42 25 Oct 1994 14:55:18 ER + add: PCH + + Rev 1.41 22 Aug 1994 08:17:32 MS + SPoints entfernt + +*************************************************************************/ + + diff --git a/sw/source/ui/cctrl/makefile.mk b/sw/source/ui/cctrl/makefile.mk new file mode 100644 index 000000000000..69c49a9f815a --- /dev/null +++ b/sw/source/ui/cctrl/makefile.mk @@ -0,0 +1,97 @@ +#************************************************************************* +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.1.1.1 $ +# +# last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $ +# +# 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=sw +TARGET=cctrl + +AUTOSEG=true + +PROJECTPCH=ui_pch +PDBTARGET=ui_pch +PROJECTPCHSOURCE=..\ui_1st\ui_pch + +# --- Settings ----------------------------------------------------- + +.INCLUDE : $(PRJ)$/inc$/swpre.mk +.INCLUDE : settings.mk +.INCLUDE : $(PRJ)$/inc$/sw.mk + +# --- Files -------------------------------------------------------- + +CXXFILES = \ + actctrl.cxx \ + linbox.cxx \ + popbox.cxx \ + swlbox.cxx + +SLOFILES = \ + $(SLO)$/actctrl.obj \ + $(SLO)$/linbox.obj \ + $(SLO)$/popbox.obj \ + $(SLO)$/swlbox.obj + +# --- Tagets ------------------------------------------------------- + +.INCLUDE : target.mk + diff --git a/sw/source/ui/cctrl/popbox.cxx b/sw/source/ui/cctrl/popbox.cxx new file mode 100644 index 000000000000..bb723a4b1c72 --- /dev/null +++ b/sw/source/ui/cctrl/popbox.cxx @@ -0,0 +1,182 @@ +/************************************************************************* + * + * $RCSfile: popbox.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + +#ifdef PRECOMPILED +#include "ui_pch.hxx" +#endif + +#pragma hdrstop + +#include "cmdid.h" +#include "swtypes.hxx" +#include "segmentc.hxx" + +#include "popbox.hxx" + + +// --- class SwHelpToolBox --------------------------------------------- + + +SwHelpToolBox::SwHelpToolBox( Window* pParent, const ResId& rResId ) : + ToolBox( pParent, rResId ) +{ +} + + +void SwHelpToolBox::MouseButtonDown(const MouseEvent &rEvt) +{ + // Zuerst DoubleClick-Link auswerten + // Dessen Returnwert entscheidet ueber andere Verarbeitung + // Doppelclickhandler nur, wenn nicht auf einen Button geclickt wurde + if(rEvt.GetButtons() == MOUSE_RIGHT && + 0 == GetItemId(rEvt.GetPosPixel())) { + aRightClickLink.Call((MouseEvent *)&rEvt); + return; + } + else + ToolBox::MouseButtonDown(rEvt); +} + + +long SwHelpToolBox::DoubleClick( ToolBox* pCaller ) +{ + // kein Doppelklick auf einen Button + if(0 == pCaller->GetCurItemId() && aDoubleClickLink.Call(0)) return TRUE; + return FALSE; +} + +/*-----------------26.02.94 00:36------------------- + dtor ueberladen +--------------------------------------------------*/ + + +SwHelpToolBox::~SwHelpToolBox() {} + + +BOOL SwHelpToolBox::Drop( const DropEvent& rEvt) +{ + return GetParent()->Drop(rEvt); +} + + +BOOL SwHelpToolBox::QueryDrop( DropEvent& rEvt) +{ + return GetParent()->QueryDrop(rEvt); +} + +/*------------------------------------------------------------------------ + + $Log: not supported by cvs2svn $ + Revision 1.17 2000/09/18 16:05:12 willem.vandorp + OpenOffice header added. + + Revision 1.16 2000/04/11 08:03:01 os + UNICODE + + Revision 1.15 1997/11/03 12:09:46 MA + precomp entfernt + + + Rev 1.14 03 Nov 1997 13:09:46 MA + precomp entfernt + + Rev 1.13 28 Aug 1996 08:23:42 OS + includes + + Rev 1.12 19 Jun 1996 14:57:58 OS + +Drop/QueryDrop + + Rev 1.11 16 Apr 1996 17:03:48 OM + Unbenutzten Ctor entfernt + + Rev 1.10 24 Nov 1995 16:57:38 OM + PCH->PRECOMPILED + + Rev 1.9 07 Jul 1995 09:27:26 OM + Mouse_Contextmenu entfernt + + Rev 1.8 06 Jul 1995 22:52:36 ER + Hack wg. MOUSE_CONTEXTMENU + + Rev 1.7 09 Mar 1995 14:46:30 MA + Aufgeraeumt + + Rev 1.6 04 Mar 1995 23:14:18 ER + Help::EnableBalloonMode() hammernichmehr + + Rev 1.5 25 Jan 1995 17:13:58 OS + Timerinstrumentierung + + Rev 1.4 09 Jan 1995 16:24:12 ER + del: initui hxx + + Rev 1.3 25 Oct 1994 14:55:16 ER + add: PCH + + Rev 1.2 19 Oct 1994 13:14:08 MA + Syntax + + Rev 1.1 19 Oct 1994 12:21:12 MA + SV-ChangeXXX -> SetXXX. + +------------------------------------------------------------------------*/ + + diff --git a/sw/source/ui/cctrl/swlbox.cxx b/sw/source/ui/cctrl/swlbox.cxx new file mode 100644 index 000000000000..3328dd6176fd --- /dev/null +++ b/sw/source/ui/cctrl/swlbox.cxx @@ -0,0 +1,622 @@ +/************************************************************************* + * + * $RCSfile: swlbox.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:32 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + +#ifdef PRECOMPILED +#include "ui_pch.hxx" +#endif + +#pragma hdrstop + +#ifndef _DEBUG_HXX //autogen +#include <tools/debug.hxx> +#endif +#ifndef _UNOTOOLS_CHARCLASS_HXX +#include <unotools/charclass.hxx> +#endif + +#ifndef _SWTYPES_HXX +#include <swtypes.hxx> +#endif +#ifndef _SWLBOX_HXX +#include <swlbox.hxx> +#endif + + +SV_IMPL_PTRARR(SwEntryLst, SwBoxEntry*) + +/*-------------------------------------------------------------------- + Beschreibung: Ein ListboxElement + --------------------------------------------------------------------*/ + + +SwBoxEntry::SwBoxEntry() : + bModified(FALSE), + bNew(FALSE), + nId(LISTBOX_APPEND) +{ +} + + +SwBoxEntry::SwBoxEntry(const String& aNam, USHORT nIdx) : + bModified(FALSE), + bNew(FALSE), + aName(aNam), + nId(nIdx) +{ +} + + +SwBoxEntry::SwBoxEntry(const SwBoxEntry& rOld) : + aName(rOld.aName), + nId(rOld.nId), + bNew(rOld.bNew), + bModified(rOld.bModified) +{ + +} + +/*-------------------------------------------------------------------- + Beschreibung: + --------------------------------------------------------------------*/ + + +/*SwListBox::SwListBox(Window* pParent, const ResId& rId): + ListBox(pParent, rId) +{ + DBG_ASSERT( 0 == (ListBox::GetStyle() & WB_SORT), "NIE sortiert aus der Resource lesen!" ); + // falls eine Liste ueber die Resource gelesen wurde, die interne + // entsprechend updaten + USHORT nCnt = ListBox::GetEntryCount(); + for( USHORT n = 0; n < nCnt; ++n ) + { + const SwBoxEntry* pTmp = new SwBoxEntry( ListBox::GetEntry( n ), n ); + aEntryLst.Insert( pTmp, n ); + } +} + +/*-------------------------------------------------------------------- + Beschreibung: Basisklasse Dtor + --------------------------------------------------------------------*/ + + +/*SwListBox::~SwListBox() +{ +} + +/*-------------------------------------------------------------------- + Beschreibung: Listen loeschen und Anzeige loeschen + --------------------------------------------------------------------*/ + + +/*void SwListBox::Clear() +{ + ListBox::Clear(); + aEntryLst.DeleteAndDestroy( 0, aEntryLst.Count() ); +} + +/*-------------------------------------------------------------------- + Beschreibung: Rund um die Entries + --------------------------------------------------------------------*/ + + +/*const SwBoxEntry& SwListBox::GetEntry(USHORT nPos) const +{ + if( nPos < aEntryLst.Count() ) + return *aEntryLst[ nPos ]; + + return aDefault; +} + +/*-------------------------------------------------------------------- + Beschreibung: aktullen Eintrag zurueckgeben + --------------------------------------------------------------------*/ + + +/*const SwBoxEntry& SwListBox::GetSelectEntry() const +{ + USHORT nPos = ListBox::GetSelectEntryPos(); + if( nPos < aEntryLst.Count() ) + return *aEntryLst[ nPos ]; + + return aDefault; +} + + +void SwListBox::RemoveEntry( USHORT nPos ) +{ + if( nPos < aEntryLst.Count() ) + { + aEntryLst.DeleteAndDestroy( nPos, 1 ); + ListBox::RemoveEntry( nPos ); + } +} + +/*-------------------------------------------------------------------- + Beschreibung: Eintrag in die ListBox aufnehmen + --------------------------------------------------------------------*/ + + +/*void SwListBox::InsertEntry( const SwBoxEntry& rEntry, USHORT nPos ) +{ + if( nPos >= aEntryLst.Count() ) + nPos = aEntryLst.Count(); + + SwBoxEntry* pEntry = new SwBoxEntry( rEntry ); + ListBox::InsertEntry( pEntry->aName, nPos ); + aEntryLst.C40_INSERT( SwBoxEntry, pEntry, nPos ); +} + +/*-------------------------------------------------------------------- + Beschreibung: Sortiert einfuegen + --------------------------------------------------------------------*/ + + +/*void SwListBox::InsertEntrySort( const SwBoxEntry& rEntry ) +{ + USHORT nPos; + if( !SeekEntry( rEntry, &nPos ) ) + { + SwBoxEntry* pEntry = new SwBoxEntry( rEntry ); + ListBox::InsertEntry( pEntry->aName, nPos ); + aEntryLst.C40_INSERT( SwBoxEntry, pEntry, nPos ); + } +} + + +BOOL SwListBox::SeekEntry( const SwBoxEntry& rEntry, USHORT* pPos ) +{ + register USHORT nO = aEntryLst.Count(), nM, nU = 0; + if( nO > 0 ) + { + nO--; + while( nU <= nO ) + { + nM = nU + ( nO - nU ) / 2; + StringCompare eCmp = aEntryLst[ nM ]->aName.ICompare( rEntry.aName ); + if( COMPARE_EQUAL == eCmp ) + { + if( pPos ) *pPos = nM; + return TRUE; + } + else if( COMPARE_GREATER == eCmp ) + nU = nM + 1; + else if( nM == 0 ) + break; + else + nO = nM - 1; + } + } + if( pPos ) *pPos = nU; + return FALSE; +} + +/* */ + + +SwComboBox::SwComboBox(Window* pParent, const ResId& rId, USHORT nStyleBits ): + ComboBox(pParent, rId), + nStyle(nStyleBits) +{ + // Verwaltung fuer die Stringlist aus der Resource aufbauen + USHORT nSize = GetEntryCount(); + for( USHORT i=0; i < nSize; ++i ) + { + const SwBoxEntry* pTmp = new SwBoxEntry(ComboBox::GetEntry(i), i); + aEntryLst.Insert(pTmp, aEntryLst.Count() ); + } +} + +/*-------------------------------------------------------------------- + Beschreibung: Basisklasse Dtor + --------------------------------------------------------------------*/ + + +SwComboBox::~SwComboBox() +{ +// das erledigen die Listen doch schon selbst im DTOR! +// aEntryLst.DeleteAndDestroy(0, aEntryLst.Count()); +// aDelEntryLst.DeleteAndDestroy(0, aDelEntryLst.Count()); +} + +/*-------------------------------------------------------------------- + Beschreibung: neue Eintraege verwalten + --------------------------------------------------------------------*/ + + +void SwComboBox::InsertNewEntry(const SwBoxEntry& rEntry) +{ + SwBoxEntry* pNew = new SwBoxEntry(rEntry); + pNew->bNew = TRUE; + InsertSorted(pNew); +} + +/*-------------------------------------------------------------------- + Beschreibung: Eintrag in die ComboBox aufnehmen + --------------------------------------------------------------------*/ + + +void SwComboBox::InsertEntry(const SwBoxEntry& rEntry) +{ + InsertSorted(new SwBoxEntry(rEntry)); +} + +/*-------------------------------------------------------------------- + Beschreibung: Eintrag aus der Liste loeschen + --------------------------------------------------------------------*/ + + +void SwComboBox::RemoveEntry(USHORT nPos) +{ + if(nPos >= aEntryLst.Count()) + return; + + // Altes Element austragen + SwBoxEntry* pEntry = aEntryLst[nPos]; + aEntryLst.Remove(nPos, 1); + ComboBox::RemoveEntry(nPos); + + // keine neuen Eintraege in die Liste mit aufnehmen + if(pEntry->bNew) + return; + + // in DeleteListe eintragen + aDelEntryLst.C40_INSERT(SwBoxEntry, pEntry, aDelEntryLst.Count()); +} + + + +/*-------------------------------------------------------------------- + Beschreibung: Position by Name + --------------------------------------------------------------------*/ + +USHORT SwComboBox::GetEntryPos(const SwBoxEntry& rEntry) const +{ + return ComboBox::GetEntryPos(rEntry.aName); +} + +/*-------------------------------------------------------------------- + Beschreibung: Rund um die Entries + --------------------------------------------------------------------*/ + + +const SwBoxEntry& SwComboBox::GetEntry(USHORT nPos) const +{ + if(nPos < aEntryLst.Count()) + return *aEntryLst[nPos]; + + return aDefault; +} + +/*-------------------------------------------------------------------- + Beschreibung: geloeschte Eintraege + --------------------------------------------------------------------*/ + + +USHORT SwComboBox::GetRemovedCount() const +{ + return aDelEntryLst.Count(); +} + + +const SwBoxEntry& SwComboBox::GetRemovedEntry(USHORT nPos) const +{ + if(nPos < aDelEntryLst.Count()) + return *aDelEntryLst[nPos]; + + return aDefault; +} + +/*-------------------------------------------------------------------- + Beschreibung: Neue Entries begutachten + --------------------------------------------------------------------*/ + + +USHORT SwComboBox::GetNewCount() const +{ + USHORT nNew = 0; + USHORT nSize = aEntryLst.Count(); + for(USHORT i=0; i < nSize; ++i) + if(aEntryLst[i]->bNew) + nNew++; + + return nNew; +} + +/*-------------------------------------------------------------------- + Beschreibung: Alle neuen Eintraege ueberpruefen + --------------------------------------------------------------------*/ + + +const SwBoxEntry& SwComboBox::GetNewEntry(USHORT nPos) const +{ + USHORT nSize = aEntryLst.Count(); + USHORT nNew = 0; + + for(USHORT i=0; i < nSize; ++i) + if( aEntryLst[i]->bNew && nNew++ == nPos ) + return *aEntryLst[i]; + + return aDefault; +} + +/*-------------------------------------------------------------------- + Beschreibung: Sortiert einfuegen + --------------------------------------------------------------------*/ + + +void SwComboBox::InsertSorted(SwBoxEntry* pEntry) +{ + ComboBox::InsertEntry(pEntry->aName); + USHORT nPos = ComboBox::GetEntryPos(pEntry->aName); + aEntryLst.C40_INSERT(SwBoxEntry, pEntry, nPos); +} + + +/*-------------------------------------------------------------------- + Beschreibung: Je nach Option bestimmte Zeichen ausblenden + --------------------------------------------------------------------*/ + + +void SwComboBox::KeyInput( const KeyEvent& rKEvt ) +{ + USHORT nChar = rKEvt.GetCharCode(); + + if(nStyle & CBS_FILENAME) + { +#ifdef MAC + if(nChar == ':') + return; +#elif defined UNX + if(nChar == '/' || nChar == ' ' ) + return; +#else + if(nChar == ':' || nChar == '\\' || nChar == '.' || nChar == ' ') + return; +#endif + } + ComboBox::KeyInput(rKEvt); +} + + + +/*-------------------------------------------------------------------- + Beschreibung: Text nach Option konvertieren + --------------------------------------------------------------------*/ + + +String SwComboBox::GetText() const +{ + String aTxt( ComboBox::GetText() ); + + if(nStyle & CBS_LOWER) + GetAppCharClass().toLower( aTxt ); + else if( nStyle & CBS_UPPER ) + GetAppCharClass().toUpper( aTxt ); + + return aTxt; +} + + +/*------------------------------------------------------------------------ + + $Log: not supported by cvs2svn $ + Revision 1.52 2000/09/18 16:05:13 willem.vandorp + OpenOffice header added. + + Revision 1.51 2000/08/30 16:45:51 jp + use CharClass instead of international + + Revision 1.50 2000/04/11 08:03:01 os + UNICODE + + Revision 1.49 2000/02/11 14:43:21 hr + #70473# changes for unicode ( patched by automated patchtool ) + + Revision 1.48 1997/11/03 12:09:46 MA + precomp entfernt + + + Rev 1.47 03 Nov 1997 13:09:46 MA + precomp entfernt + + Rev 1.46 08 Aug 1997 17:29:48 OM + Headerfile-Umstellung + + Rev 1.45 06 Aug 1997 11:28:38 TRI + GetpApp statt pApp + + Rev 1.44 23 Apr 1997 10:39:28 OS + ResId const + + Rev 1.43 07 Nov 1996 11:47:52 JP + ASSERT korrigiert + + Rev 1.42 05 Nov 1996 15:36:36 JP + SwListBox: Sortierung selbst uebernommen; ueberfluessiges entfernt/aufgeraeumt + + Rev 1.41 28 Aug 1996 08:23:42 OS + includes + + Rev 1.40 16 Aug 1996 13:24:00 TRI + C40_INSERT statt Insert + + Rev 1.39 25 Jun 1996 17:46:54 HJS + include tlintl.hxx + + Rev 1.38 16 Apr 1996 16:46:10 OM + SwEventListBox entfernt + + Rev 1.37 24 Nov 1995 16:57:38 OM + PCH->PRECOMPILED + + Rev 1.36 17 Nov 1995 13:21:36 MA + Segmentierung + + Rev 1.35 27 Jul 1995 10:44:42 mk + an SCC4.0.1a angepasst (MDA) + + Rev 1.34 20 Mar 1995 19:03:20 OS + unbenutzte Funktionen entfernt + + Rev 1.33 15 Dec 1994 20:21:28 SWG + *ARR* Ersetzungen, svmem, __far_data etc. + + Rev 1.32 25 Oct 1994 14:55:22 ER + add: PCH + + Rev 1.31 10 May 1994 13:48:44 MS + boeser Fehler! bei sortierten SwlBoxen kam der Zugriff auf die EntryListe durcheinander + + Rev 1.30 06 May 1994 13:17:28 MS + GetSelectEntryPos geandert + + Rev 1.29 02 Mar 1994 17:22:56 MS + mit EntryPos + + Rev 1.28 02 Mar 1994 15:46:52 VB + ListBox mit MouseButtonDown-Handler + + Rev 1.27 26 Feb 1994 02:59:36 ER + virt. dtor mit export + + Rev 1.26 23 Feb 1994 12:07:04 ER + SEXPORT + + Rev 1.25 17 Feb 1994 08:35:06 MI + SEG_FUNCDEFS ausgefuellt + + Rev 1.24 16 Feb 1994 19:56:36 MI + SEG_FUNCDEFS ausgefuellt + + Rev 1.23 16 Feb 1994 15:41:54 MI + Pragmas zurechtgerueckt + + Rev 1.22 28 Jan 1994 11:36:26 MI + TCOV() entfernt, SW_... nach SEG_... umbenannt + + Rev 1.21 13 Jan 1994 08:33:26 MI + Segmentierung per #define ermoeglicht + + Rev 1.20 10 Jan 1994 09:38:36 MS + UNX - Fehler behoben + + Rev 1.19 09 Jan 1994 21:06:46 MI + Provisorische Segmentierung + + Rev 1.18 06 Jan 1994 13:14:38 MS + Default-Options geaendert + + Rev 1.17 08 Dec 1993 11:21:38 MS + SwBoxEntry() setz nId auf LISTBOX_ENTRY_NOTFOUND + + Rev 1.16 06 Dec 1993 11:47:10 VB + Upper/Lower konvertieren ueber International + + Rev 1.15 24 Sep 1993 18:50:02 VB + Segmentierung + + Rev 1.14 24 Sep 1993 08:59:44 MS + Beschraenkung der Eingabe geaendert + + Rev 1.13 23 Sep 1993 17:33:46 MS + ComboBox Namen im Edit begrenzen + + Rev 1.12 27 Apr 1993 08:18:20 OK + NEU: #pragma hdrstop + + Rev 1.11 16 Feb 1993 08:52:18 MS + fuer m800 + + Rev 1.10 10 Feb 1993 19:42:08 VB + Umstellung SV21 + + Rev 1.9 06 Jan 1993 09:15:30 OK + Anpassung an M70 + + Rev 1.8 02 Dec 1992 17:39:46 MS + neu SwMultiComboBox + + Rev 1.7 27 Nov 1992 16:04:52 MS + RemoveEntry() korrigiert + + Rev 1.6 27 Nov 1992 15:55:48 MS + mit InitComboBox + + Rev 1.5 27 Nov 1992 15:42:52 MS + Init erweitert + + Rev 1.4 27 Nov 1992 14:42:38 MS + mit const SwBoxEntr& Returns + + Rev 1.3 27 Nov 1992 13:43:54 MS + GetCurEntry gerichtet + + Rev 1.2 27 Nov 1992 11:40:52 MS + neu GetEntryPos + + Rev 1.1 27 Nov 1992 11:30:08 MS + neu InitFromResource + + Rev 1.0 27 Nov 1992 10:49:58 MS + Initial revision. + + ------------------------------------------------------------------------*/ + |