diff options
Diffstat (limited to 'sd/source/ui/toolpanel/TestMenu.cxx')
-rwxr-xr-x | sd/source/ui/toolpanel/TestMenu.cxx | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/sd/source/ui/toolpanel/TestMenu.cxx b/sd/source/ui/toolpanel/TestMenu.cxx new file mode 100755 index 000000000000..a8f0b6df7893 --- /dev/null +++ b/sd/source/ui/toolpanel/TestMenu.cxx @@ -0,0 +1,318 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sd.hxx" + +#include "TestMenu.hxx" + +#include "taskpane/TaskPaneControlFactory.hxx" + +#include <vcl/image.hxx> +#include <vcl/svapp.hxx> + +namespace sd { namespace toolpanel { + +#ifdef SHOW_COLOR_MENU +/** This factory class is used to create instances of ColorMenu. It can be + extended so that its constructor stores arguments that later are passed + to new ColorMenu objects. +*/ +class ColorMenuFactory + : public ControlFactory +{ +protected: + virtual TreeNode* InternalCreateControl( ::Window& i_rParent ) + { + return new ColorMenu (&i_rParent); + } +}; + + +ColorMenu::ColorMenu (::Window* i_pParent) + : Window (i_pParent), + TreeNode(NULL), + maSet (this), + mnPreferredColumnCount(2) +{ + WinBits aStyle = + WB_ITEMBORDER + | WB_DOUBLEBORDER + | WB_NAMEFIELD + | WB_FLATVALUESET + | WB_TABSTOP + | WB_VSCROLL; + + maSet.SetStyle (maSet.GetStyle() | aStyle); + maSet.SetExtraSpacing(2); + + Fill (); + maSet.Show(); + i_pParent->Resize(); +} + + + + +ColorMenu::~ColorMenu (void) +{ +} + + +::std::auto_ptr<ControlFactory> ColorMenu::CreateControlFactory (void) +{ + return ::std::auto_ptr<ControlFactory>(new ColorMenuFactory()); +} + + +/** The preferred size depends on the preferred number of columns, the + number of items, and the size of the items. +*/ +Size ColorMenu::GetPreferredSize (void) +{ + Size aItemSize = maSet.CalcItemSizePixel (Size()); + Size aPreferredWindowSize = maSet.CalcWindowSizePixel ( + aItemSize, + (USHORT)mnPreferredColumnCount, + (USHORT)CalculateRowCount (aItemSize, (USHORT)mnPreferredColumnCount)); + return aPreferredWindowSize; +} + + + + +sal_Int32 ColorMenu::GetPreferredWidth (sal_Int32 nHeight) +{ + sal_Int32 nPreferredWidth = 0; + if (maSet.GetItemCount() > 0) + { + Image aImage = maSet.GetItemImage(maSet.GetItemId(0)); + Size aItemSize = maSet.CalcItemSizePixel (aImage.GetSizePixel()); + if (nHeight>0 && aItemSize.Height()>0) + { + int nRowCount = nHeight / aItemSize.Height(); + if (nRowCount <= 0) + nRowCount = 1; + int nColumnCount = (maSet.GetItemCount() + nRowCount-1) + / nRowCount; + nPreferredWidth = nColumnCount * aItemSize.Width(); + } + } + + return nPreferredWidth; +} + + + + +sal_Int32 ColorMenu::GetPreferredHeight (sal_Int32 nWidth) +{ + sal_Int32 nPreferredHeight = 0; + if (maSet.GetItemCount()>0) + { + Image aImage = maSet.GetItemImage(maSet.GetItemId(0)); + Size aItemSize = maSet.CalcItemSizePixel (aImage.GetSizePixel()); + if (nWidth>0 && aItemSize.Width()>0) + { + int nColumnCount = nWidth / aItemSize.Width(); + if (nColumnCount <= 0) + nColumnCount = 1; + else if (nColumnCount > 4) + nColumnCount = 4; + int nRowCount = (maSet.GetItemCount() + nColumnCount-1) + / nColumnCount; + nPreferredHeight = nRowCount * aItemSize.Height(); + } + } + return nPreferredHeight; +} + + + + +bool ColorMenu::IsResizable (void) +{ + return true; +} + + + + +::Window* ColorMenu::GetWindow (void) +{ + return this; +} + + + + +void ColorMenu::Resize (void) +{ + ::Window::Resize(); + Size aWindowSize = GetOutputSizePixel(); + maSet.SetPosSizePixel (Point(0,0), aWindowSize); + if (IsVisible() && aWindowSize.Width() > 0) + { + // maSet.SetPosSizePixel ( + // Point (0,0), + // aWindowSize); + + // Calculate the number of rows and columns. + if (maSet.GetItemCount() > 0) + { + Image aImage = maSet.GetItemImage(maSet.GetItemId(0)); + Size aItemSize = maSet.CalcItemSizePixel ( + aImage.GetSizePixel()); + int nColumnCount = aWindowSize.Width() / 30; + if (nColumnCount < 1) + nColumnCount = 1; + else if (nColumnCount > 4) + nColumnCount = 4; + + USHORT nRowCount = (USHORT)CalculateRowCount (aItemSize, nColumnCount); + + maSet.SetColCount ((USHORT)nColumnCount); + maSet.SetLineCount (nRowCount); + } + } + +} + + + + +int ColorMenu::CalculateRowCount (const Size&, int nColumnCount) +{ + int nRowCount = 0; + + if (maSet.GetItemCount()>0 && nColumnCount>0) + { + nRowCount = GetOutputSizePixel().Height() / 30; + if (nRowCount < 1) + nRowCount = 1; + } + + return nRowCount; +} + + + + +void ColorMenu::Fill (void) +{ + const StyleSettings& rSettings ( + Application::GetSettings().GetStyleSettings()); + maSet.Clear(); + maSet.SetItemWidth (30); + maSet.SetItemHeight (30); + USHORT i = 0; + maSet.InsertItem (++i, rSettings.GetFaceColor()); + maSet.SetItemText (i, String::CreateFromAscii("FaceColor")); + maSet.InsertItem (++i, rSettings.GetCheckedColor()); + maSet.SetItemText (i, String::CreateFromAscii("CheckedColor")); + maSet.InsertItem (++i, rSettings.GetLightColor()); + maSet.SetItemText (i, String::CreateFromAscii("LightColor")); + maSet.InsertItem (++i, rSettings.GetLightBorderColor()); + maSet.SetItemText (i, String::CreateFromAscii("LightBorderColor")); + maSet.InsertItem (++i, rSettings.GetShadowColor()); + maSet.SetItemText (i, String::CreateFromAscii("ShadowColor")); + maSet.InsertItem (++i, rSettings.GetDarkShadowColor()); + maSet.SetItemText (i, String::CreateFromAscii("DarkShadowColor")); + maSet.InsertItem (++i, rSettings.GetButtonTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("ButtonTextColor")); + maSet.InsertItem (++i, rSettings.GetRadioCheckTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("RadioCheckTextColor")); + maSet.InsertItem (++i, rSettings.GetGroupTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("GroupTextColor")); + maSet.InsertItem (++i, rSettings.GetLabelTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("LabelTextColor")); + maSet.InsertItem (++i, rSettings.GetInfoTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("InfoTextColor")); + maSet.InsertItem (++i, rSettings.GetWindowColor()); + maSet.SetItemText (i, String::CreateFromAscii("WindowColor")); + maSet.InsertItem (++i, rSettings.GetWindowTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("WindowTextColor")); + maSet.InsertItem (++i, rSettings.GetDialogColor()); + maSet.SetItemText (i, String::CreateFromAscii("DialogColor")); + maSet.InsertItem (++i, rSettings.GetDialogTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("DialogTextColor")); + maSet.InsertItem (++i, rSettings.GetWorkspaceColor()); + maSet.SetItemText (i, String::CreateFromAscii("WorkspaceColor")); + maSet.InsertItem (++i, rSettings.GetFieldColor()); + maSet.SetItemText (i, String::CreateFromAscii("FieldColor")); + maSet.InsertItem (++i, rSettings.GetFieldTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("FieldTextColor")); + maSet.InsertItem (++i, rSettings.GetActiveColor()); + maSet.SetItemText (i, String::CreateFromAscii("ActiveColor")); + maSet.InsertItem (++i, rSettings.GetActiveColor2()); + maSet.SetItemText (i, String::CreateFromAscii("ActiveColor2")); + maSet.InsertItem (++i, rSettings.GetActiveTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("ActiveTextColor")); + maSet.InsertItem (++i, rSettings.GetActiveBorderColor()); + maSet.SetItemText (i, String::CreateFromAscii("ActiveBorderColor")); + maSet.InsertItem (++i, rSettings.GetDeactiveColor()); + maSet.SetItemText (i, String::CreateFromAscii("DeactiveColor")); + maSet.InsertItem (++i, rSettings.GetDeactiveColor2()); + maSet.SetItemText (i, String::CreateFromAscii("DeactiveColor2")); + maSet.InsertItem (++i, rSettings.GetDeactiveTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("DeactiveTextColor")); + maSet.InsertItem (++i, rSettings.GetDeactiveBorderColor()); + maSet.SetItemText (i, String::CreateFromAscii("DeactiveBorderColor")); + maSet.InsertItem (++i, rSettings.GetHighlightColor()); + maSet.SetItemText (i, String::CreateFromAscii("HighlightColor")); + maSet.InsertItem (++i, rSettings.GetHighlightTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("HighlightTextColor")); + maSet.InsertItem (++i, rSettings.GetDisableColor()); + maSet.SetItemText (i, String::CreateFromAscii("DisableColor")); + maSet.InsertItem (++i, rSettings.GetHelpColor()); + maSet.SetItemText (i, String::CreateFromAscii("HelpColor")); + maSet.InsertItem (++i, rSettings.GetHelpTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("HelpTextColor")); + maSet.InsertItem (++i, rSettings.GetMenuColor()); + maSet.SetItemText (i, String::CreateFromAscii("MenuColor")); + maSet.InsertItem (++i, rSettings.GetMenuBarColor()); + maSet.SetItemText (i, String::CreateFromAscii("MenuBarColor")); + maSet.InsertItem (++i, rSettings.GetMenuBorderColor()); + maSet.SetItemText (i, String::CreateFromAscii("MenuBorderColor")); + maSet.InsertItem (++i, rSettings.GetMenuTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("MenuTextColor")); + maSet.InsertItem (++i, rSettings.GetMenuHighlightColor()); + maSet.SetItemText (i, String::CreateFromAscii("MenuHighlightColor")); + maSet.InsertItem (++i, rSettings.GetMenuHighlightTextColor()); + maSet.SetItemText (i, String::CreateFromAscii("MenuHighlightTextColor")); + maSet.InsertItem (++i, rSettings.GetLinkColor()); + maSet.SetItemText (i, String::CreateFromAscii("LinkColor")); + maSet.InsertItem (++i, rSettings.GetVisitedLinkColor()); + maSet.SetItemText (i, String::CreateFromAscii("VisitedLinkColor")); + maSet.InsertItem (++i, rSettings.GetHighlightLinkColor()); + maSet.SetItemText (i, String::CreateFromAscii("HighlightLinkColor")); + maSet.InsertItem (++i, rSettings.GetFontColor()); + maSet.SetItemText (i, String::CreateFromAscii("FontColor")); +} +#endif + +} } // end of namespace ::sd::toolpanel |