added resizing functionality to the WhiteWindow class
This commit is contained in:
parent
655dc8a9a0
commit
905552c619
5 changed files with 106 additions and 11 deletions
|
@ -21,8 +21,8 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: maroy $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.5 $
|
Version : $Revision: 1.6 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WhiteWindow.h,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -44,6 +44,7 @@
|
||||||
#include <gtkmm/table.h>
|
#include <gtkmm/table.h>
|
||||||
#include <gtkmm/alignment.h>
|
#include <gtkmm/alignment.h>
|
||||||
#include <gtkmm/eventbox.h>
|
#include <gtkmm/eventbox.h>
|
||||||
|
#include <gtkmm/image.h>
|
||||||
#include <gtkmm/window.h>
|
#include <gtkmm/window.h>
|
||||||
|
|
||||||
#include "LiveSupport/Core/Ptr.h"
|
#include "LiveSupport/Core/Ptr.h"
|
||||||
|
@ -68,8 +69,8 @@ using namespace LiveSupport::Core;
|
||||||
/**
|
/**
|
||||||
* A container holding exactly one child, habing a light blue border to it.
|
* A container holding exactly one child, habing a light blue border to it.
|
||||||
*
|
*
|
||||||
* @author $Author: maroy $
|
* @author $Author: fgerlits $
|
||||||
* @version $Revision: 1.5 $
|
* @version $Revision: 1.6 $
|
||||||
*/
|
*/
|
||||||
class WhiteWindow : public Gtk::Window
|
class WhiteWindow : public Gtk::Window
|
||||||
{
|
{
|
||||||
|
@ -119,6 +120,21 @@ class WhiteWindow : public Gtk::Window
|
||||||
*/
|
*/
|
||||||
ImageButton * closeButton;
|
ImageButton * closeButton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The right alignment contaner for the resize image.
|
||||||
|
*/
|
||||||
|
Gtk::Alignment * resizeAlignment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The event box container for the resize image.
|
||||||
|
*/
|
||||||
|
Gtk::EventBox * resizeEventBox;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The resize image.
|
||||||
|
*/
|
||||||
|
Gtk::Image * resizeImage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Just a container for the main content of the window.
|
* Just a container for the main content of the window.
|
||||||
*/
|
*/
|
||||||
|
@ -139,6 +155,15 @@ class WhiteWindow : public Gtk::Window
|
||||||
virtual void
|
virtual void
|
||||||
onCloseButtonClicked(void) throw ();
|
onCloseButtonClicked(void) throw ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The event handler for the resize being clicked on.
|
||||||
|
*
|
||||||
|
* @param event the button click event.
|
||||||
|
* @return true if the the event was handled, false otherwise.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
onResizeClicked(GdkEventButton * event) throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: fgerlits $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.8 $
|
Version : $Revision: 1.9 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -41,6 +41,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
#include <gtkmm/image.h>
|
||||||
|
|
||||||
#include "LiveSupport/Core/Configurable.h"
|
#include "LiveSupport/Core/Configurable.h"
|
||||||
|
|
||||||
|
@ -85,7 +86,7 @@ using namespace LiveSupport::Core;
|
||||||
* </code></pre>
|
* </code></pre>
|
||||||
*
|
*
|
||||||
* @author $Author: fgerlits $
|
* @author $Author: fgerlits $
|
||||||
* @version $Revision: 1.8 $
|
* @version $Revision: 1.9 $
|
||||||
*/
|
*/
|
||||||
class WidgetFactory :
|
class WidgetFactory :
|
||||||
virtual public Configurable
|
virtual public Configurable
|
||||||
|
@ -165,6 +166,11 @@ class WidgetFactory :
|
||||||
*/
|
*/
|
||||||
Glib::RefPtr<Gdk::Pixbuf> comboBoxRightImage;
|
Glib::RefPtr<Gdk::Pixbuf> comboBoxRightImage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The image for the resize handle.
|
||||||
|
*/
|
||||||
|
Glib::RefPtr<Gdk::Pixbuf> resizeImage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default constructor.
|
* The default constructor.
|
||||||
*/
|
*/
|
||||||
|
@ -302,6 +308,16 @@ class WidgetFactory :
|
||||||
{
|
{
|
||||||
return whiteWindowImages;
|
return whiteWindowImages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create and return a container holding a resize image.
|
||||||
|
* It is the reponsibility of the caller to dispose of the created
|
||||||
|
* object properly.
|
||||||
|
*
|
||||||
|
* @return the container holding the resize image.
|
||||||
|
*/
|
||||||
|
Gtk::Image *
|
||||||
|
createResizeImage(void) throw ();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: maroy $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.1 $
|
Version : $Revision: 1.2 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/CornerImages.cxx,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/CornerImages.cxx,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -123,6 +123,10 @@ CornerImages :: loadImage(const std::string path,
|
||||||
if (!(image = Gdk::Pixbuf::create_from_file(path + imageName))) {
|
if (!(image = Gdk::Pixbuf::create_from_file(path + imageName))) {
|
||||||
throw std::invalid_argument("Missing " + image);
|
throw std::invalid_argument("Missing " + image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// activate alpha channel (transparency)
|
||||||
|
// but it doesn't seem to work :(
|
||||||
|
// image->add_alpha(false, 0, 0, 0);
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: maroy $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.6 $
|
Version : $Revision: 1.7 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WhiteWindow.cxx,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WhiteWindow.cxx,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -104,6 +104,17 @@ WhiteWindow :: WhiteWindow(Glib::ustring title,
|
||||||
childContainer = Gtk::manage(new Gtk::Alignment(Gtk::ALIGN_CENTER));
|
childContainer = Gtk::manage(new Gtk::Alignment(Gtk::ALIGN_CENTER));
|
||||||
layout->attach(*childContainer, 0, 2, 1, 2);
|
layout->attach(*childContainer, 0, 2, 1, 2);
|
||||||
|
|
||||||
|
// create the resize image
|
||||||
|
resizeImage = Gtk::manage(wf->createResizeImage());
|
||||||
|
resizeEventBox = Gtk::manage(new Gtk::EventBox());
|
||||||
|
resizeEventBox->modify_bg(Gtk::STATE_NORMAL, bgColor);
|
||||||
|
resizeEventBox->add(*resizeImage);
|
||||||
|
resizeAlignment = Gtk::manage(new Gtk::Alignment(Gtk::ALIGN_RIGHT,
|
||||||
|
Gtk::ALIGN_CENTER,
|
||||||
|
0, 0));
|
||||||
|
resizeAlignment->add(*resizeEventBox);
|
||||||
|
layout->attach(*resizeAlignment, 1, 2, 2, 3, Gtk::FILL, Gtk::SHRINK);
|
||||||
|
|
||||||
// add the corners
|
// add the corners
|
||||||
blueBin = Gtk::manage(new BlueBin(backgroundColor, cornerImages));
|
blueBin = Gtk::manage(new BlueBin(backgroundColor, cornerImages));
|
||||||
blueBin->add(*layout);
|
blueBin->add(*layout);
|
||||||
|
@ -120,6 +131,9 @@ WhiteWindow :: WhiteWindow(Glib::ustring title,
|
||||||
closeButton->signal_clicked().connect(sigc::mem_fun(*this,
|
closeButton->signal_clicked().connect(sigc::mem_fun(*this,
|
||||||
&WhiteWindow::onCloseButtonClicked));
|
&WhiteWindow::onCloseButtonClicked));
|
||||||
|
|
||||||
|
resizeEventBox->add_events(Gdk::BUTTON_PRESS_MASK);
|
||||||
|
resizeEventBox->signal_button_press_event().connect(sigc::mem_fun(*this,
|
||||||
|
&WhiteWindow::onResizeClicked));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -321,3 +335,21 @@ WhiteWindow :: set_default_size(int width,
|
||||||
defaultHeight = height;
|
defaultHeight = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* The event of the resize image being clicked
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
bool
|
||||||
|
WhiteWindow :: onResizeClicked(GdkEventButton * event) throw ()
|
||||||
|
{
|
||||||
|
if (event->button == 1) {
|
||||||
|
begin_resize_drag(Gdk::WINDOW_EDGE_SOUTH_EAST,
|
||||||
|
event->button,
|
||||||
|
(int) event->x_root,
|
||||||
|
(int) event->y_root,
|
||||||
|
event->time);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: fgerlits $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.9 $
|
Version : $Revision: 1.10 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WidgetFactory.cxx,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WidgetFactory.cxx,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -152,6 +152,11 @@ static const std::string comboBoxCenterName = "combo/center.png";
|
||||||
*/
|
*/
|
||||||
static const std::string comboBoxRightName = "combo/right.png";
|
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";
|
||||||
|
|
||||||
|
|
||||||
/* =============================================== local function prototypes */
|
/* =============================================== local function prototypes */
|
||||||
|
|
||||||
|
@ -209,6 +214,9 @@ WidgetFactory :: configure(const xmlpp::Element & element)
|
||||||
|
|
||||||
// load the white window corner images
|
// load the white window corner images
|
||||||
whiteWindowImages.reset(new CornerImages(path + whiteWindowPath));
|
whiteWindowImages.reset(new CornerImages(path + whiteWindowPath));
|
||||||
|
|
||||||
|
// load the bottom right resize image
|
||||||
|
resizeImage = loadImage(resizeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -328,3 +336,13 @@ WidgetFactory :: createButton(ImageButtonType type) throw ()
|
||||||
return new ImageButton(passiveImage, rollImage);
|
return new ImageButton(passiveImage, rollImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* Create a resize image
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
Gtk::Image *
|
||||||
|
WidgetFactory :: createResizeImage(void) throw ()
|
||||||
|
{
|
||||||
|
return new Gtk::Image(resizeImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue