From 76939ade97cc3063f4c05973e044eebc3c598b6c Mon Sep 17 00:00:00 2001 From: fgerlits Date: Thu, 5 May 2005 16:25:57 +0000 Subject: [PATCH] added first version of huge play button in Live Mode (does not do anything yet) --- .../include/LiveSupport/Widgets/ImageButton.h | 21 +++++++-- .../LiveSupport/Widgets/WidgetFactory.h | 6 +-- .../LiveSupport/Widgets/ZebraTreeView.h | 20 ++++++++- .../modules/widgets/src/WidgetFactory.cxx | 6 ++- .../modules/widgets/src/ZebraTreeView.cxx | 44 +++++++++++++++++-- .../gLiveSupport/src/LiveModeWindow.cxx | 8 ++-- .../gLiveSupport/src/LiveModeWindow.h | 7 +-- .../gLiveSupport/src/ScratchpadWindow.cxx | 5 ++- 8 files changed, 95 insertions(+), 22 deletions(-) diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/ImageButton.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/ImageButton.h index 1511aeeb7..1990f587c 100644 --- a/livesupport/modules/widgets/include/LiveSupport/Widgets/ImageButton.h +++ b/livesupport/modules/widgets/include/LiveSupport/Widgets/ImageButton.h @@ -21,8 +21,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Author : $Author: maroy $ - Version : $Revision: 1.2 $ + Author : $Author: fgerlits $ + Version : $Revision: 1.3 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/ImageButton.h,v $ ------------------------------------------------------------------------------*/ @@ -59,8 +59,8 @@ namespace Widgets { * The button is fixed in size, which is determined by the images used * to represent it. * - * @author $Author: maroy $ - * @version $Revision: 1.2 $ + * @author $Author: fgerlits $ + * @version $Revision: 1.3 $ */ class ImageButton : public Gtk::Button { @@ -241,6 +241,19 @@ class ImageButton : public Gtk::Button */ virtual ~ImageButton(void) throw (); + + /** + * Return the passive image of this button. + * This is used by ZebraTreeView::addColumn(), but should be + * removed later. + * + * @return a pointer to the image. + */ + Glib::RefPtr + getPassiveImage(void) throw () + { + return passiveImage; + } }; diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h index 2d0bd71dd..90f323fd0 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.17 $ + Version : $Revision: 1.18 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h,v $ ------------------------------------------------------------------------------*/ @@ -52,7 +52,6 @@ #include "LiveSupport/Widgets/ComboBoxText.h" #include "LiveSupport/Widgets/BlueBin.h" #include "LiveSupport/Widgets/EntryBin.h" -#include "LiveSupport/Widgets/ZebraTreeView.h" namespace LiveSupport { @@ -69,6 +68,7 @@ using namespace LiveSupport::Core; /* =============================================================== data types */ class WhiteWindow; +class ZebraTreeView; /** * A factory to provide access to LiveSupport Widgets. @@ -89,7 +89,7 @@ class WhiteWindow; * * * @author $Author: fgerlits $ - * @version $Revision: 1.17 $ + * @version $Revision: 1.18 $ */ class WidgetFactory : virtual public Configurable diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h index 03950124c..29f3b1c1f 100644 --- a/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h +++ b/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h @@ -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/include/LiveSupport/Widgets/ZebraTreeView.h,v $ ------------------------------------------------------------------------------*/ @@ -50,6 +50,7 @@ #include #include "LiveSupport/Core/Ptr.h" +#include "LiveSupport/Widgets/WidgetFactory.h" #include "LiveSupport/Widgets/CornerImages.h" #include "LiveSupport/Widgets/ImageButton.h" #include "LiveSupport/Widgets/BlueBin.h" @@ -91,7 +92,7 @@ using namespace LiveSupport::Core; * 3) connected with a TreeModelColumn using set_renderer(). * * @author $Author: fgerlits $ - * @version $Revision: 1.9 $ + * @version $Revision: 1.10 $ */ class ZebraTreeView : public Gtk::TreeView { @@ -142,6 +143,21 @@ class ZebraTreeView : public Gtk::TreeView const Gtk::TreeModelColumn& modelColumn, int minimumWidth = 0) throw (); + + /** + * Add a button column to the TreeView. + * + * @param title the title of the column + * @param buttonType the type of button this view will display + * @param minimumWidth the minimum width of the column, in pixels + * (optional) + * @return the number of columns after adding this one + */ + int + appendColumn(const Glib::ustring& title, + WidgetFactory::ImageButtonType buttonType, + int minimumWidth = 0) + throw (); }; diff --git a/livesupport/modules/widgets/src/WidgetFactory.cxx b/livesupport/modules/widgets/src/WidgetFactory.cxx index 4da8f5a38..a383e051e 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.19 $ + Version : $Revision: 1.20 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WidgetFactory.cxx,v $ ------------------------------------------------------------------------------*/ @@ -36,9 +36,11 @@ #include #include "LiveSupport/Widgets/Colors.h" -#include "LiveSupport/Widgets/WidgetFactory.h" +#include "LiveSupport/Widgets/ZebraTreeView.h" #include "MessageWindow.h" +#include "LiveSupport/Widgets/WidgetFactory.h" + using namespace LiveSupport::Core; using namespace LiveSupport::Widgets; diff --git a/livesupport/modules/widgets/src/ZebraTreeView.cxx b/livesupport/modules/widgets/src/ZebraTreeView.cxx index 194acb4e1..9a9f4be20 100644 --- a/livesupport/modules/widgets/src/ZebraTreeView.cxx +++ b/livesupport/modules/widgets/src/ZebraTreeView.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/ZebraTreeView.cxx,v $ ------------------------------------------------------------------------------*/ @@ -35,9 +35,7 @@ #include -#include "LiveSupport/Widgets/WidgetFactory.h" #include "LiveSupport/Widgets/ZebraTreeModelColumnRecord.h" -#include "LiveSupport/Widgets/ZebraCellRenderer.h" #include "LiveSupport/Widgets/ZebraTreeView.h" @@ -108,6 +106,46 @@ ZebraTreeView :: appendColumn( } +/*------------------------------------------------------------------------------ + * Add a button column to the TreeView. + *----------------------------------------------------------------------------*/ +int +ZebraTreeView :: appendColumn( + const Glib::ustring & title, + WidgetFactory::ImageButtonType buttonType, + int minimumWidth) + throw () +{ + Ptr::Ref wf = WidgetFactory::getInstance(); + ImageButton * button = Gtk::manage(wf->createButton( + buttonType )); + Glib::RefPtr passiveImage = button->getPassiveImage(); + + // a standard cell renderer + Gtk::CellRendererPixbuf* renderer + = Gtk::manage(new Gtk::CellRendererPixbuf); + + // set the image of the renderer + renderer->property_pixbuf() = passiveImage; + + // the constructor packs the renderer into the TreeViewColumn + Gtk::TreeViewColumn* viewColumn = Gtk::manage(new + Gtk::TreeViewColumn(title, *renderer) ); + + // this cell data function will do the blue-gray zebra stripes + viewColumn->set_cell_data_func( + *renderer, + sigc::mem_fun(*this, &ZebraTreeView::cellDataFunction) ); + + // set the minimum width of the column + if (minimumWidth) { + viewColumn->set_min_width(minimumWidth); + } + + return append_column(*viewColumn); +} + + /*------------------------------------------------------------------------------ * The callback function. *----------------------------------------------------------------------------*/ diff --git a/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx b/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx index 25ef88379..0a3ec7c47 100644 --- a/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx +++ b/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.6 $ + Version : $Revision: 1.7 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx,v $ ------------------------------------------------------------------------------*/ @@ -37,6 +37,7 @@ #include #include "LiveSupport/Widgets/WidgetFactory.h" +#include "LiveSupport/Widgets/ZebraTreeView.h" #include "SchedulePlaylistWindow.h" #include "LiveModeWindow.h" @@ -62,7 +63,7 @@ using namespace LiveSupport::GLiveSupport; * Constructor. *----------------------------------------------------------------------------*/ LiveModeWindow :: LiveModeWindow (Ptr::Ref gLiveSupport, - Ptr::Ref bundle) + Ptr::Ref bundle) throw () : WhiteWindow(WidgetFactory::liveModeWindowTitleImage, Colors::White, @@ -84,6 +85,7 @@ LiveModeWindow :: LiveModeWindow (Ptr::Ref gLiveSupport, // Add the TreeView's view columns: try { + treeView->appendColumn("", WidgetFactory::hugePlayButton, 82); treeView->appendColumn(*getResourceUstring("titleColumnLabel"), modelColumns.titleColumn, 200); treeView->appendColumn(*getResourceUstring("creatorColumnLabel"), @@ -138,7 +140,7 @@ LiveModeWindow :: LiveModeWindow (Ptr::Ref gLiveSupport, // show set_name("liveModeWindow"); - set_default_size(530, 300); + set_default_size(610, 500); set_modal(false); property_window_position().set_value(Gtk::WIN_POS_NONE); diff --git a/livesupport/products/gLiveSupport/src/LiveModeWindow.h b/livesupport/products/gLiveSupport/src/LiveModeWindow.h index 3eaebc24f..03686ffcc 100644 --- a/livesupport/products/gLiveSupport/src/LiveModeWindow.h +++ b/livesupport/products/gLiveSupport/src/LiveModeWindow.h @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.5 $ + Version : $Revision: 1.6 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/LiveModeWindow.h,v $ ------------------------------------------------------------------------------*/ @@ -72,7 +72,7 @@ using namespace LiveSupport::Widgets; * playlists. * * @author $Author: fgerlits $ - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ class LiveModeWindow : public WhiteWindow, public LocalizedObject { @@ -85,7 +85,7 @@ class LiveModeWindow : public WhiteWindow, public LocalizedObject * Lists one clip per row. * * @author $Author: fgerlits $ - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ class ModelColumns : public ZebraTreeModelColumnRecord { @@ -221,6 +221,7 @@ class LiveModeWindow : public WhiteWindow, public LocalizedObject onRowDeleted(const Gtk::TreeModel::Path & path) throw () { // std::cerr << "rows deleted: " << path.to_string() << ";\n"; + treeView->columns_autosize(); } diff --git a/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx b/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx index 61e0abc82..bf088776e 100644 --- a/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx +++ b/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx @@ -21,8 +21,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Author : $Author: maroy $ - Version : $Revision: 1.13 $ + Author : $Author: fgerlits $ + Version : $Revision: 1.14 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx,v $ ------------------------------------------------------------------------------*/ @@ -37,6 +37,7 @@ #include #include "LiveSupport/Widgets/WidgetFactory.h" +#include "LiveSupport/Widgets/ZebraTreeView.h" #include "SchedulePlaylistWindow.h" #include "ScratchpadWindow.h"