From ae1989488ceadfb85361d6a4c5545e0bcee06901 Mon Sep 17 00:00:00 2001 From: fgerlits Date: Mon, 11 Apr 2005 15:58:59 +0000 Subject: [PATCH] added WhiteWindow constructor for windows with image titles (instead of text); changed Scratchpad window title to an image --- .../include/LiveSupport/Widgets/WhiteWindow.h | 37 +++++++++-- .../LiveSupport/Widgets/WidgetFactory.h | 22 ++++--- .../modules/widgets/src/WhiteWindow.cxx | 62 ++++++++++++++----- .../modules/widgets/src/WidgetFactory.cxx | 30 ++++++--- .../gLiveSupport/src/ScratchpadWindow.cxx | 5 +- 5 files changed, 117 insertions(+), 39 deletions(-) diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h index efcbfd4f1..ad76852ee 100644 --- a/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h +++ b/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.8 $ + Version : $Revision: 1.9 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h,v $ ------------------------------------------------------------------------------*/ @@ -71,7 +71,7 @@ using namespace LiveSupport::Core; * A container holding exactly one child, habing a light blue border to it. * * @author $Author: fgerlits $ - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ class WhiteWindow : public Gtk::Window { @@ -107,9 +107,9 @@ class WhiteWindow : public Gtk::Window Gtk::Alignment * titleAlignment; /** - * The title of the window. + * The title of the window (if it's of text type, otherwise 0). */ - Gtk::Label * title; + Gtk::Label * titleLabel; /** * The right alignment contaner for the close button. @@ -264,10 +264,37 @@ class WhiteWindow : public Gtk::Window virtual GtkType child_type_vfunc() const throw (); + /** + * The common part of both constructors. + * + * @param backgroundColor the background color. + * @param cornerImages the corner images. + * @param resizable true if the user can resize the window. + */ + void + constructWindow(Colors::ColorName backgroundColor, + Ptr::Ref cornerImages, + bool resizable = true) + throw (); + public: /** - * Constructor. + * Constructor for windows with image titles. + * + * @param title the title of the window. + * @param backgroundColor the background color. + * @param cornerImages the corner images. + * @param resizable true if the user can resize the window. + */ + WhiteWindow(WidgetFactory::ImageType title, + Colors::ColorName backgroundColor, + Ptr::Ref cornerImages, + bool resizable = true) + throw (); + + /** + * Constructor for windows with text titles. * * @param title the title of the window. * @param backgroundColor the background color. diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h index d509b638b..53dd028e4 100644 --- a/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h +++ b/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.10 $ + Version : $Revision: 1.11 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h,v $ ------------------------------------------------------------------------------*/ @@ -87,7 +87,7 @@ using namespace LiveSupport::Core; * * * @author $Author: fgerlits $ - * @version $Revision: 1.10 $ + * @version $Revision: 1.11 $ */ class WidgetFactory : virtual public Configurable @@ -105,6 +105,13 @@ class WidgetFactory : smallPlayButton, smallPauseButton, smallStopButton } ImageButtonType; + /** + * The list of available miscellaneous images. + */ + typedef enum { resizeImage, + scratchpadWindowTitleImage } + ImageType; + private: /** @@ -167,11 +174,6 @@ class WidgetFactory : */ Glib::RefPtr comboBoxRightImage; - /** - * The image for the resize handle. - */ - Glib::RefPtr resizeImage; - /** * The default constructor. */ @@ -311,14 +313,14 @@ class WidgetFactory : } /** - * Create and return a container holding a resize image. + * Create and return a container holding an image. * It is the reponsibility of the caller to dispose of the created * object properly. * - * @return the container holding the resize image. + * @return the container holding the requested image. */ Gtk::Image * - createResizeImage(void) throw (); + createImage(ImageType imageName) throw (); /** * Create and return a ZebraTreeView instance. diff --git a/livesupport/modules/widgets/src/WhiteWindow.cxx b/livesupport/modules/widgets/src/WhiteWindow.cxx index 2f058cac7..ac76aea47 100644 --- a/livesupport/modules/widgets/src/WhiteWindow.cxx +++ b/livesupport/modules/widgets/src/WhiteWindow.cxx @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.9 $ + Version : $Revision: 1.10 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WhiteWindow.cxx,v $ ------------------------------------------------------------------------------*/ @@ -54,7 +54,27 @@ using namespace LiveSupport::Widgets; /* ============================================================= module code */ /*------------------------------------------------------------------------------ - * Constructor. + * Constructor for windows with image titles. + *----------------------------------------------------------------------------*/ +WhiteWindow :: WhiteWindow(WidgetFactory::ImageType title, + Colors::ColorName backgroundColor, + Ptr::Ref cornerImages, + bool resizable) + throw () + : Gtk::Window(Gtk::WINDOW_TOPLEVEL) +{ + // do the image title-specific stuff + Ptr::Ref wf = WidgetFactory::getInstance(); + Gtk::Image* titleImage = Gtk::manage(wf->createImage(title)); + titleEventBox = Gtk::manage(new Gtk::EventBox()); + titleEventBox->add(*titleImage); + + constructWindow(backgroundColor, cornerImages, resizable); +} + + +/*------------------------------------------------------------------------------ + * Constructor for windows with text titles. *----------------------------------------------------------------------------*/ WhiteWindow :: WhiteWindow(Glib::ustring title, Colors::ColorName backgroundColor, @@ -62,6 +82,25 @@ WhiteWindow :: WhiteWindow(Glib::ustring title, bool resizable) throw () : Gtk::Window(Gtk::WINDOW_TOPLEVEL) +{ + // do the text title-specific stuff + titleLabel = Gtk::manage(new Gtk::Label(title)); + titleLabel->modify_font(Pango::FontDescription("Bitstream Vera 10")); + titleEventBox = Gtk::manage(new Gtk::EventBox()); + titleEventBox->add(*titleLabel); + + constructWindow(backgroundColor, cornerImages, resizable); +} + + +/*------------------------------------------------------------------------------ + * The common part of both constructors. + *----------------------------------------------------------------------------*/ +void +WhiteWindow :: constructWindow(Colors::ColorName backgroundColor, + Ptr::Ref cornerImages, + bool resizable) + throw () { set_decorated(false); defaultWidth = -1; @@ -74,18 +113,13 @@ WhiteWindow :: WhiteWindow(Glib::ustring title, // create the background color, as it is needed by the event box Gdk::Color bgColor = Colors::getColor(backgroundColor); - // set the window title - this->title = Gtk::manage(new Gtk::Label(title)); - this->title->modify_font(Pango::FontDescription("Bitstream Vera 10")); + // create the title + titleEventBox->modify_bg(Gtk::STATE_NORMAL, bgColor); titleAlignment = Gtk::manage(new Gtk::Alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, 0, 0)); - titleEventBox = Gtk::manage(new Gtk::EventBox()); - titleEventBox->set_visible_window(); - titleEventBox->modify_bg(Gtk::STATE_NORMAL, bgColor); - titleAlignment->add(*this->title); - titleEventBox->add(*titleAlignment); - layout->attach(*titleEventBox, 0, 1, 0, 1, Gtk::FILL, Gtk::SHRINK); + titleAlignment->add(*titleEventBox); + layout->attach(*titleAlignment, 0, 1, 0, 1, Gtk::FILL, Gtk::SHRINK); // create the close button closeButton = Gtk::manage(wf->createButton(WidgetFactory::deleteButton)); @@ -101,7 +135,7 @@ WhiteWindow :: WhiteWindow(Glib::ustring title, // create the resize image if (resizable) { - resizeImage = Gtk::manage(wf->createResizeImage()); + resizeImage = Gtk::manage(wf->createImage(WidgetFactory::resizeImage)); resizeEventBox = Gtk::manage(new Gtk::EventBox()); resizeEventBox->modify_bg(Gtk::STATE_NORMAL, bgColor); resizeEventBox->add(*resizeImage); @@ -309,7 +343,7 @@ WhiteWindow :: onCloseButtonClicked (void) throw () void WhiteWindow :: set_title(const Glib::ustring & title) throw () { - this->title->set_label(title); + titleLabel->set_label(title); } @@ -319,7 +353,7 @@ WhiteWindow :: set_title(const Glib::ustring & title) throw () Glib::ustring WhiteWindow :: get_title(void) const throw () { - return title->get_label(); + titleLabel->get_label(); } diff --git a/livesupport/modules/widgets/src/WidgetFactory.cxx b/livesupport/modules/widgets/src/WidgetFactory.cxx index fd1759229..c580a70e7 100644 --- a/livesupport/modules/widgets/src/WidgetFactory.cxx +++ b/livesupport/modules/widgets/src/WidgetFactory.cxx @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.12 $ + Version : $Revision: 1.13 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WidgetFactory.cxx,v $ ------------------------------------------------------------------------------*/ @@ -156,7 +156,13 @@ static const std::string comboBoxRightName = "combo/right.png"; /** * The name of the image for the resize handle. */ -static const std::string resizeName = "whiteWindow/resize.png"; +static const std::string resizeImageName = "whiteWindow/resize.png"; + +/** + * The name of the image for the title of the login window. + */ +static const std::string scratchpadWindowTitleImageName + = "titleImages/scratchpadWindowTitle.png"; /* =============================================== local function prototypes */ @@ -215,9 +221,6 @@ WidgetFactory :: configure(const xmlpp::Element & element) // load the white window corner images whiteWindowImages.reset(new CornerImages(path + whiteWindowPath)); - - // load the bottom right resize image - resizeImage = loadImage(resizeName); } @@ -342,9 +345,22 @@ WidgetFactory :: createButton(ImageButtonType type) throw () * Create a resize image *----------------------------------------------------------------------------*/ Gtk::Image * -WidgetFactory :: createResizeImage(void) throw () +WidgetFactory :: createImage(ImageType imageName) throw () { - return new Gtk::Image(resizeImage); + Glib::RefPtr rawImage; + + switch (imageName) { + case resizeImage: + rawImage = loadImage(resizeImageName); + break; + case scratchpadWindowTitleImage: + rawImage = loadImage(scratchpadWindowTitleImageName); + break; + default: + return 0; + } + + return new Gtk::Image(rawImage); } diff --git a/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx b/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx index f7e3cb9bc..0bc88aee1 100644 --- a/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx +++ b/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.2 $ + Version : $Revision: 1.3 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx,v $ ------------------------------------------------------------------------------*/ @@ -64,7 +64,7 @@ using namespace LiveSupport::GLiveSupport; ScratchpadWindow :: ScratchpadWindow (Ptr::Ref gLiveSupport, Ptr::Ref bundle) throw () - : WhiteWindow("", + : WhiteWindow(WidgetFactory::scratchpadWindowTitleImage, Colors::White, WidgetFactory::getInstance()->getWhiteWindowCorners()), LocalizedObject(bundle) @@ -74,7 +74,6 @@ ScratchpadWindow :: ScratchpadWindow (Ptr::Ref gLiveSupport, Ptr::Ref widgetFactory = WidgetFactory::getInstance(); try { - set_title(*getResourceUstring("windowTitle")); playButton = Gtk::manage(widgetFactory->createButton( WidgetFactory::smallPlayButton)); pauseButton = Gtk::manage(widgetFactory->createButton(