From 1f0539a1d894bed57fde874ef694e90e64912b05 Mon Sep 17 00:00:00 2001 From: fgerlits Date: Thu, 28 Apr 2005 15:54:30 +0000 Subject: [PATCH] added first version of Live Mode window --- .../LiveSupport/Widgets/WidgetFactory.h | 7 +- .../LiveSupport/Widgets/ZebraTreeView.h | 9 +- .../modules/widgets/src/WidgetFactory.cxx | 12 +- .../modules/widgets/src/ZebraTreeView.cxx | 10 +- .../products/gLiveSupport/etc/Makefile.in | 5 +- .../gLiveSupport/src/GLiveSupport.cxx | 15 +- .../products/gLiveSupport/src/GLiveSupport.h | 29 ++- .../gLiveSupport/src/LiveModeWindow.cxx | 179 +++++++++++++++ .../gLiveSupport/src/LiveModeWindow.h | 204 ++++++++++++++++++ .../gLiveSupport/src/MasterPanelWindow.cxx | 61 +++++- .../gLiveSupport/src/MasterPanelWindow.h | 32 ++- .../gLiveSupport/src/ScratchpadWindow.cxx | 31 ++- .../gLiveSupport/src/ScratchpadWindow.h | 13 +- livesupport/products/gLiveSupport/var/hu.txt | 15 +- .../products/gLiveSupport/var/root.txt | 13 +- .../var/widgets/imageButton/hugePlay.png | Bin 0 -> 3658 bytes .../var/widgets/imageButton/hugePlayRoll.png | Bin 0 -> 3683 bytes ...indowTitle.png => liveModeWindowTitle.png} | Bin 18 files changed, 602 insertions(+), 33 deletions(-) create mode 100644 livesupport/products/gLiveSupport/src/LiveModeWindow.cxx create mode 100644 livesupport/products/gLiveSupport/src/LiveModeWindow.h create mode 100644 livesupport/products/gLiveSupport/var/widgets/imageButton/hugePlay.png create mode 100644 livesupport/products/gLiveSupport/var/widgets/imageButton/hugePlayRoll.png rename livesupport/products/gLiveSupport/var/widgets/titleImages/{livemodeWindowTitle.png => liveModeWindowTitle.png} (100%) diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h index 03b6bcd09..2d0bd71dd 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.16 $ + Version : $Revision: 1.17 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/WidgetFactory.h,v $ ------------------------------------------------------------------------------*/ @@ -89,7 +89,7 @@ class WhiteWindow; * * * @author $Author: fgerlits $ - * @version $Revision: 1.16 $ + * @version $Revision: 1.17 $ */ class WidgetFactory : virtual public Configurable @@ -114,7 +114,8 @@ class WidgetFactory : */ typedef enum { resizeImage, scratchpadWindowTitleImage, - searchWindowTitleImage } + searchWindowTitleImage, + liveModeWindowTitleImage } ImageType; diff --git a/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h b/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h index 1e341e4e6..03950124c 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.8 $ + Version : $Revision: 1.9 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/include/LiveSupport/Widgets/ZebraTreeView.h,v $ ------------------------------------------------------------------------------*/ @@ -91,7 +91,7 @@ using namespace LiveSupport::Core; * 3) connected with a TreeModelColumn using set_renderer(). * * @author $Author: fgerlits $ - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ class ZebraTreeView : public Gtk::TreeView { @@ -133,11 +133,14 @@ class ZebraTreeView : public Gtk::TreeView * * @param title the title of the column * @param modelColumn the model column 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, - const Gtk::TreeModelColumn& modelColumn) + const Gtk::TreeModelColumn& modelColumn, + int minimumWidth = 0) throw (); }; diff --git a/livesupport/modules/widgets/src/WidgetFactory.cxx b/livesupport/modules/widgets/src/WidgetFactory.cxx index 2f5354815..4da8f5a38 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.18 $ + Version : $Revision: 1.19 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/WidgetFactory.cxx,v $ ------------------------------------------------------------------------------*/ @@ -217,6 +217,12 @@ static const std::string scratchpadWindowTitleImageName static const std::string searchWindowTitleImageName = "titleImages/searchWindowTitle.png"; +/** + * The name of the image for the title of the live mode window. + */ +static const std::string liveModeWindowTitleImageName + = "titleImages/liveModeWindowTitle.png"; + /* =============================================== local function prototypes */ @@ -437,6 +443,10 @@ WidgetFactory :: createImage(ImageType imageName) throw () rawImage = loadImage(searchWindowTitleImageName); break; + case liveModeWindowTitleImage: + rawImage = loadImage(liveModeWindowTitleImageName); + break; + default: return 0; } diff --git a/livesupport/modules/widgets/src/ZebraTreeView.cxx b/livesupport/modules/widgets/src/ZebraTreeView.cxx index 298e10312..194acb4e1 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.8 $ + Version : $Revision: 1.9 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/ZebraTreeView.cxx,v $ ------------------------------------------------------------------------------*/ @@ -80,7 +80,8 @@ ZebraTreeView :: ~ZebraTreeView(void) throw () int ZebraTreeView :: appendColumn( const Glib::ustring& title, - const Gtk::TreeModelColumn& modelColumn) + const Gtk::TreeModelColumn& modelColumn, + int minimumWidth) throw () { // a standard cell renderer; can be replaced with a ZebraCellRenderer @@ -98,6 +99,11 @@ ZebraTreeView :: appendColumn( *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); } diff --git a/livesupport/products/gLiveSupport/etc/Makefile.in b/livesupport/products/gLiveSupport/etc/Makefile.in index e4840183c..3869dad19 100644 --- a/livesupport/products/gLiveSupport/etc/Makefile.in +++ b/livesupport/products/gLiveSupport/etc/Makefile.in @@ -21,7 +21,7 @@ # # # Author : $Author: fgerlits $ -# Version : $Revision: 1.32 $ +# Version : $Revision: 1.33 $ # Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/etc/Makefile.in,v $ # # @configure_input@ @@ -192,7 +192,8 @@ G_LIVESUPPORT_OBJS = ${TMP_DIR}/GLiveSupport.o \ ${TMP_DIR}/SchedulePlaylistWindow.o \ ${TMP_DIR}/SearchWindow.o \ ${TMP_DIR}/BrowseEntry.o \ - ${TMP_DIR}/BrowseItem.o + ${TMP_DIR}/BrowseItem.o \ + ${TMP_DIR}/LiveModeWindow.o G_LIVESUPPORT_RES = ${TMP_DIR}/${PACKAGE_NAME}_root.res \ ${TMP_DIR}/${PACKAGE_NAME}_en.res \ diff --git a/livesupport/products/gLiveSupport/src/GLiveSupport.cxx b/livesupport/products/gLiveSupport/src/GLiveSupport.cxx index b86a7b390..01bf6ce44 100644 --- a/livesupport/products/gLiveSupport/src/GLiveSupport.cxx +++ b/livesupport/products/gLiveSupport/src/GLiveSupport.cxx @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.31 $ + Version : $Revision: 1.32 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/GLiveSupport.cxx,v $ ------------------------------------------------------------------------------*/ @@ -532,6 +532,19 @@ GLiveSupport :: addToScratchPad(Ptr::Ref playable) } +/*------------------------------------------------------------------------------ + * Add a file to the Live Mode, and update it. + *----------------------------------------------------------------------------*/ +void +LiveSupport :: GLiveSupport :: +GLiveSupport :: addToLiveMode(Ptr::Ref playable) + throw () +{ + liveModeContents->push_back(playable); + masterPanel->updateLiveModeWindow(); +} + + /*------------------------------------------------------------------------------ * Open a playlist for editing. *----------------------------------------------------------------------------*/ diff --git a/livesupport/products/gLiveSupport/src/GLiveSupport.h b/livesupport/products/gLiveSupport/src/GLiveSupport.h index 0b8b50870..0c223705c 100644 --- a/livesupport/products/gLiveSupport/src/GLiveSupport.h +++ b/livesupport/products/gLiveSupport/src/GLiveSupport.h @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.27 $ + Version : $Revision: 1.28 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/GLiveSupport.h,v $ ------------------------------------------------------------------------------*/ @@ -100,7 +100,7 @@ class MasterPanelWindow; * respective documentation. * * @author $Author: fgerlits $ - * @version $Revision: 1.27 $ + * @version $Revision: 1.28 $ * @see LocalizedObject#getBundle(const xmlpp::Element &) * @see AuthenticationClientFactory * @see StorageClientFactory @@ -177,6 +177,11 @@ class GLiveSupport : public LocalizedConfigurable, */ Ptr::Ref scratchpadContents; + /** + * The contents of the Live Mode, stored as a list. + */ + Ptr::Ref liveModeContents; + /** * The one and only playlist that may be edited at any one time. */ @@ -224,6 +229,7 @@ class GLiveSupport : public LocalizedConfigurable, GLiveSupport(void) throw () { scratchpadContents.reset(new PlayableList()); + liveModeContents. reset(new PlayableList()); } /** @@ -428,6 +434,25 @@ class GLiveSupport : public LocalizedConfigurable, return scratchpadContents; } + /** + * Add a file to the Live Mode, and update it. + * + * @param playable the audio clip or playlist to be added + */ + void + addToLiveMode(Ptr::Ref playable) throw (); + + /** + * Return the Live Mode contents. + * + * @return the list holding the Live Mode contents. + */ + Ptr::Ref + getLiveModeContents(void) throw () + { + return liveModeContents; + } + /** * Return the currently edited playlist. * diff --git a/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx b/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx new file mode 100644 index 000000000..deb84a67e --- /dev/null +++ b/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx @@ -0,0 +1,179 @@ +/*------------------------------------------------------------------------------ + + Copyright (c) 2004 Media Development Loan Fund + + This file is part of the LiveSupport project. + http://livesupport.campware.org/ + To report bugs, send an e-mail to bugs@campware.org + + LiveSupport is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + LiveSupport 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LiveSupport; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + Author : $Author: fgerlits $ + Version : $Revision: 1.1 $ + Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/LiveModeWindow.cxx,v $ + +------------------------------------------------------------------------------*/ + +/* ============================================================ include files */ + +#ifdef HAVE_CONFIG_H +#include "configure.h" +#endif + +#include +#include + +#include "LiveSupport/Widgets/WidgetFactory.h" +#include "SchedulePlaylistWindow.h" +#include "LiveModeWindow.h" + + +using namespace Glib; + +using namespace LiveSupport::Core; +using namespace LiveSupport::Widgets; +using namespace LiveSupport::GLiveSupport; + +/* =================================================== local data structures */ + + +/* ================================================ local constants & macros */ + + +/* =============================================== local function prototypes */ + + +/* ============================================================= module code */ + +/*------------------------------------------------------------------------------ + * Constructor. + *----------------------------------------------------------------------------*/ +LiveModeWindow :: LiveModeWindow (Ptr::Ref gLiveSupport, + Ptr::Ref bundle) + throw () + : WhiteWindow(WidgetFactory::liveModeWindowTitleImage, + Colors::White, + WidgetFactory::getInstance()->getWhiteWindowCorners()), + LocalizedObject(bundle), + gLiveSupport(gLiveSupport) +{ + Ptr::Ref widgetFactory = WidgetFactory::getInstance(); + + // Create the Tree model: + treeModel = Gtk::ListStore::create(modelColumns); + treeView = Gtk::manage(widgetFactory->createTreeView(treeModel)); + + // Add the TreeView's view columns: + try { + treeView->appendColumn(*getResourceUstring("titleColumnLabel"), + modelColumns.titleColumn, 200); + treeView->appendColumn(*getResourceUstring("creatorColumnLabel"), + modelColumns.creatorColumn, 200); + treeView->appendColumn(*getResourceUstring("lengthColumnLabel"), + modelColumns.lengthColumn, 120); + } catch (std::invalid_argument &e) { + std::cerr << e.what() << std::endl; + std::exit(1); + } + + treeView->columns_autosize(); + +/* + // register the signal handler for treeview entries being clicked + treeView->signal_button_press_event().connect_notify(sigc::mem_fun(*this, + &LiveModeWindow::onEntryClicked)); +*/ + // Add the TreeView, inside a ScrolledWindow, with the button underneath: + scrolledWindow.add(*treeView); + + // Only show the scrollbars when they are necessary: + scrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + + vBox.pack_start(scrolledWindow); + add(vBox); +/* + // create the right-click entry context menu for audio clips + contextMenu = Gtk::manage(new Gtk::Menu()); + Gtk::Menu::MenuList& contextMenuList = contextMenu->items(); + // register the signal handlers for the popup menu + try { + contextMenu.push_back(Gtk::Menu_Helpers::MenuElem( + *getResourceUstring("addToPlaylistMenuItem"), + sigc::mem_fun(*this, + &LiveModeWindow::onAddToPlaylist))); + } catch (std::invalid_argument &e) { + std::cerr << e.what() << std::endl; + std::exit(1); + } + + contextMenu->accelerate(*this); +*/ + // show + set_name("liveModeWindow"); + set_default_size(530, 300); + set_modal(false); + property_window_position().set_value(Gtk::WIN_POS_NONE); + set_resizable(true); + + showContents(); + show_all_children(); +} + + +/*------------------------------------------------------------------------------ + * Show all audio clips + *----------------------------------------------------------------------------*/ +void +LiveModeWindow :: showContents(void) throw () +{ + Ptr::Ref liveModeContents; + GLiveSupport::PlayableList::iterator it; + GLiveSupport::PlayableList::iterator end; + Ptr::Ref playable; + Gtk::TreeModel::Row row; + + liveModeContents = gLiveSupport->getLiveModeContents(); + it = liveModeContents->begin(); + end = liveModeContents->end(); + treeModel->clear(); + int rowNumber = 0; + + while (it != end) { + playable = *it; + row = *(treeModel->append()); + + row[modelColumns.playableColumn] = playable; + row[modelColumns.titleColumn] = *playable->getTitle(); + Ptr::Ref + creator = playable->getMetadata("dc:creator"); + row[modelColumns.creatorColumn] = creator ? *creator : ""; + row[modelColumns.lengthColumn] = to_simple_string( + *playable->getPlaylength() ); + row[modelColumns.rowNumberColumn] = rowNumber; + + ++it; + ++rowNumber; + } +} + + +/*------------------------------------------------------------------------------ + * Destructor. + *----------------------------------------------------------------------------*/ +LiveModeWindow :: ~LiveModeWindow (void) throw () +{ +} + diff --git a/livesupport/products/gLiveSupport/src/LiveModeWindow.h b/livesupport/products/gLiveSupport/src/LiveModeWindow.h new file mode 100644 index 000000000..a6eae652c --- /dev/null +++ b/livesupport/products/gLiveSupport/src/LiveModeWindow.h @@ -0,0 +1,204 @@ +/*------------------------------------------------------------------------------ + + Copyright (c) 2004 Media Development Loan Fund + + This file is part of the LiveSupport project. + http://livesupport.campware.org/ + To report bugs, send an e-mail to bugs@campware.org + + LiveSupport is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + LiveSupport 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LiveSupport; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + Author : $Author: fgerlits $ + Version : $Revision: 1.1 $ + Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/LiveModeWindow.h,v $ + +------------------------------------------------------------------------------*/ +#ifndef LiveModeWindow_h +#define LiveModeWindow_h + +#ifndef __cplusplus +#error This is a C++ include file +#endif + + +/* ============================================================ include files */ + +#ifdef HAVE_CONFIG_H +#include "configure.h" +#endif + +#include + +#include + +#include + +#include "LiveSupport/Core/Ptr.h" +#include "LiveSupport/Core/LocalizedObject.h" +#include "LiveSupport/Widgets/WhiteWindow.h" +#include "LiveSupport/Widgets/Button.h" +#include "LiveSupport/Widgets/ZebraTreeModelColumnRecord.h" +#include "GLiveSupport.h" + +namespace LiveSupport { +namespace GLiveSupport { + +using namespace LiveSupport::Core; +using namespace LiveSupport::Widgets; + +/* ================================================================ constants */ + + +/* =================================================================== macros */ + + +/* =============================================================== data types */ + +/** + * The LiveMode window, showing recent and relevant audio clips and + * playlists. + * + * @author $Author: fgerlits $ + * @version $Revision: 1.1 $ + */ +class LiveModeWindow : public WhiteWindow, public LocalizedObject +{ + private: + + protected: + + /** + * The columns model needed by Gtk::TreeView. + * Lists one clip per row. + * + * @author $Author: fgerlits $ + * @version $Revision: 1.1 $ + */ + class ModelColumns : public ZebraTreeModelColumnRecord + { + public: + /** + * The column for the playable object shown in the row. + */ + Gtk::TreeModelColumn::Ref> playableColumn; + + /** + * The column for the play button. + */ + Gtk::TreeModelColumn > + playButtonColumn; + + /** + * The column for the title of the audio clip or playlist. + */ + Gtk::TreeModelColumn titleColumn; + + /** + * The column for the creator of the audio clip or playlist. + */ + Gtk::TreeModelColumn creatorColumn; + + /** + * The column for the length of the audio clip or playlist. + */ + Gtk::TreeModelColumn lengthColumn; + + /** + * Constructor. + */ + ModelColumns(void) throw () + { + add(playableColumn); + add(playButtonColumn); + add(titleColumn); + add(creatorColumn); + add(lengthColumn); + } + }; + + + /** + * The GLiveSupport object, holding the state of the application. + */ + Ptr::Ref gLiveSupport; + + /** + * The column model. + */ + ModelColumns modelColumns; + + /** + * The main container in the window. + */ + Gtk::VBox vBox; + + /** + * A scrolled window, so that the list can be scrolled. + */ + Gtk::ScrolledWindow scrolledWindow; + + /** + * The tree view, now only showing rows. + */ + ZebraTreeView * treeView; + + /** + * The tree model, as a GTK reference. + */ + Glib::RefPtr treeModel; + + /** + * The right-click context menu, + * that comes up when right-clicking an entry in the entry list. + */ +// Gtk::Menu * contextMenu; + + + public: + /** + * Constructor. + * + * @param gLiveSupport the GLiveSupport, application object. + * @param bundle the resource bundle holding the localized + * resources for this window + */ + LiveModeWindow(Ptr::Ref gLiveSupport, + Ptr::Ref bundle) throw (); + + /** + * Virtual destructor. + */ + virtual + ~LiveModeWindow(void) throw (); + + /** + * Update the window contents, with the contents of the LiveMode. + */ + void + showContents(void) throw (); +}; + +/* ================================================= external data structures */ + + +/* ====================================================== function prototypes */ + + +} // namespace GLiveSupport +} // namespace LiveSupport + +#endif // LiveModeWindow_h + diff --git a/livesupport/products/gLiveSupport/src/MasterPanelWindow.cxx b/livesupport/products/gLiveSupport/src/MasterPanelWindow.cxx index 899ca64ca..d9878ad9e 100644 --- a/livesupport/products/gLiveSupport/src/MasterPanelWindow.cxx +++ b/livesupport/products/gLiveSupport/src/MasterPanelWindow.cxx @@ -21,8 +21,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Author : $Author: maroy $ - Version : $Revision: 1.23 $ + Author : $Author: fgerlits $ + Version : $Revision: 1.24 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/MasterPanelWindow.cxx,v $ ------------------------------------------------------------------------------*/ @@ -62,10 +62,9 @@ using namespace LiveSupport::GLiveSupport; MasterPanelWindow :: MasterPanelWindow (Ptr::Ref gLiveSupport, Ptr::Ref bundle) throw () - : LocalizedObject(bundle) + : LocalizedObject(bundle), + gLiveSupport(gLiveSupport) { - this->gLiveSupport = gLiveSupport; - Ptr::Ref widgetFactory = WidgetFactory::getInstance(); // TODO: remove hard-coded station logo path reference @@ -118,6 +117,7 @@ MasterPanelWindow :: MasterPanelWindow (Ptr::Ref gLiveSupport, bottomBar->attach(*userInfoAlignment, 1, 2, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 5, 0); + // set up the main window, and show everything // all the localized widgets were set up in changeLanguage() set_border_width(10); @@ -156,6 +156,7 @@ MasterPanelWindow :: MasterPanelWindow (Ptr::Ref gLiveSupport, set_decorated(false); // set the localized resources + liveModeButton = 0; uploadFileButton = 0; scratchpadButton = 0; simplePlaylistMgmtButton = 0; @@ -190,6 +191,9 @@ MasterPanelWindow :: changeLanguage(Ptr::Ref bundle) { setBundle(bundle); + if (liveModeButton) { + buttonBar->remove(*liveModeButton); + } if (uploadFileButton) { buttonBar->remove(*uploadFileButton); } @@ -211,6 +215,8 @@ MasterPanelWindow :: changeLanguage(Ptr::Ref bundle) Ptr::Ref wf = WidgetFactory::getInstance(); + liveModeButton = Gtk::manage(wf->createButton( + *getResourceUstring("liveModeButtonLabel"))); uploadFileButton = Gtk::manage(wf->createButton( *getResourceUstring("uploadFileButtonLabel"))); scratchpadButton = Gtk::manage(wf->createButton( @@ -229,23 +235,28 @@ MasterPanelWindow :: changeLanguage(Ptr::Ref bundle) userInfoWidget->changeLanguage(bundle); // re-attach the localized widgets to the layout - buttonBar->attach(*uploadFileButton, 0, 1, 0, 1, + buttonBar->attach(*liveModeButton, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 5, 0); - buttonBar->attach(*scratchpadButton, 1, 2, 0, 1, + buttonBar->attach(*uploadFileButton, 1, 2, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 5, 0); - buttonBar->attach(*simplePlaylistMgmtButton, 2, 3, 0, 1, + buttonBar->attach(*scratchpadButton, 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 5, 0); - buttonBar->attach(*schedulerButton, 3, 4, 0, 1, + buttonBar->attach(*simplePlaylistMgmtButton, 3, 4, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 5, 0); - buttonBar->attach(*searchButton, 4, 5, 0, 1, + buttonBar->attach(*schedulerButton, 4, 5, 0, 1, + Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, + 5, 0); + buttonBar->attach(*searchButton, 5, 6, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 5, 0); // re-bind events to the buttons + liveModeButton->signal_clicked().connect(sigc::mem_fun(*this, + &MasterPanelWindow::onLiveModeButtonClicked)); uploadFileButton->signal_clicked().connect(sigc::mem_fun(*this, &MasterPanelWindow::onUploadFileButtonClicked)); scratchpadButton->signal_clicked().connect(sigc::mem_fun(*this, @@ -316,6 +327,32 @@ MasterPanelWindow :: onUpdateTime(int dummy) throw () } +/*------------------------------------------------------------------------------ + * The event when the Live Mode button has been clicked. + *----------------------------------------------------------------------------*/ +void +MasterPanelWindow :: onLiveModeButtonClicked(void) throw () +{ + if (!liveModeWindow.get()) { + Ptr::Ref bundle; + try { + bundle = getBundle("liveModeWindow"); + } catch (std::invalid_argument &e) { + std::cerr << e.what() << std::endl; + return; + } + + liveModeWindow.reset(new LiveModeWindow(gLiveSupport, bundle)); + } + + if (!liveModeWindow->is_visible()) { + liveModeWindow->show(); + } + + liveModeWindow->showContents(); +} + + /*------------------------------------------------------------------------------ * The event when the upload file button has been clicked. *----------------------------------------------------------------------------*/ @@ -453,6 +490,10 @@ MasterPanelWindow :: showAnonymousUI(void) throw () schedulerButton->hide(); searchButton->hide(); + if (liveModeWindow.get()) { + liveModeWindow->hide(); + liveModeWindow.reset(); + } if (uploadFileWindow.get()) { uploadFileWindow->hide(); uploadFileWindow.reset(); diff --git a/livesupport/products/gLiveSupport/src/MasterPanelWindow.h b/livesupport/products/gLiveSupport/src/MasterPanelWindow.h index ac8ac75e3..6424ad12b 100644 --- a/livesupport/products/gLiveSupport/src/MasterPanelWindow.h +++ b/livesupport/products/gLiveSupport/src/MasterPanelWindow.h @@ -22,7 +22,7 @@ Author : $Author: fgerlits $ - Version : $Revision: 1.13 $ + Version : $Revision: 1.14 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/MasterPanelWindow.h,v $ ------------------------------------------------------------------------------*/ @@ -50,6 +50,7 @@ #include "GLiveSupport.h" #include "MasterPanelUserInfoWidget.h" +#include "LiveModeWindow.h" #include "UploadFileWindow.h" #include "ScratchpadWindow.h" #include "SimplePlaylistManagementWindow.h" @@ -90,7 +91,7 @@ using namespace LiveSupport::Widgets; * * * @author $Author: fgerlits $ - * @version $Revision: 1.13 $ + * @version $Revision: 1.14 $ */ class MasterPanelWindow : public Gtk::Window, public LocalizedObject { @@ -181,6 +182,11 @@ class MasterPanelWindow : public Gtk::Window, public LocalizedObject */ Gtk::Table * buttonBar; + /** + * The button to invoke the live mode window. + */ + Button * liveModeButton; + /** * The button to invoke the upload file window. */ @@ -211,6 +217,11 @@ class MasterPanelWindow : public Gtk::Window, public LocalizedObject */ Ptr::Ref gLiveSupport; + /** + * The one and only Live Mode window. + */ + Ptr::Ref liveModeWindow; + /** * The one and only Upload File window. */ @@ -270,6 +281,13 @@ class MasterPanelWindow : public Gtk::Window, public LocalizedObject virtual void onUploadFileButtonClicked(void) throw (); + /** + * Function to catch the event of the live mode button being + * pressed. + */ + virtual void + onLiveModeButtonClicked(void) throw (); + /** * Function to catch the event of the Scratchpad button being * pressed. @@ -342,6 +360,16 @@ class MasterPanelWindow : public Gtk::Window, public LocalizedObject void showLoggedInUI(void) throw (); + /** + * Update the Live Mode window. + */ + void + updateLiveModeWindow(void) throw () + { + // this will create, open and display the window. + onLiveModeButtonClicked(); + } + /** * Update the Scratchpad window. */ diff --git a/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx b/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx index f38654925..3fdd06c43 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.9 $ + Version : $Revision: 1.10 $ Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/ScratchpadWindow.cxx,v $ ------------------------------------------------------------------------------*/ @@ -181,6 +181,10 @@ ScratchpadWindow :: ScratchpadWindow (Ptr::Ref gLiveSupport, *getResourceUstring("playMenuItem"), sigc::mem_fun(*this, &ScratchpadWindow::onPlayItem))); + audioClipMenuList.push_back(Gtk::Menu_Helpers::MenuElem( + *getResourceUstring("addToLiveModeMenuItem"), + sigc::mem_fun(*this, + &ScratchpadWindow::onAddToLiveMode))); } catch (std::invalid_argument &e) { std::cerr << e.what() << std::endl; std::exit(1); @@ -222,6 +226,10 @@ ScratchpadWindow :: ScratchpadWindow (Ptr::Ref gLiveSupport, *getResourceUstring("playMenuItem"), sigc::mem_fun(*this, &ScratchpadWindow::onPlayItem))); + playlistMenuList.push_back(Gtk::Menu_Helpers::MenuElem( + *getResourceUstring("addToLiveModeMenuItem"), + sigc::mem_fun(*this, + &ScratchpadWindow::onAddToLiveMode))); } catch (std::invalid_argument &e) { std::cerr << e.what() << std::endl; std::exit(1); @@ -626,6 +634,27 @@ ScratchpadWindow :: onPlayItem(void) throw () } +/*------------------------------------------------------------------------------ + * Event handler for the Add To Live Mode menu item selected from the + * entry conext menu + *----------------------------------------------------------------------------*/ +void +ScratchpadWindow :: onAddToLiveMode(void) throw () +{ + Glib::RefPtr refSelection = + treeView->get_selection(); + + if (refSelection) { + Gtk::TreeModel::iterator iter = refSelection->get_selected(); + if (iter) { + Ptr::Ref playable = (*iter)[modelColumns.playableColumn]; + + gLiveSupport->addToLiveMode(playable); + } + } +} + + /*------------------------------------------------------------------------------ * Event handler for the Play button getting clicked *----------------------------------------------------------------------------*/ diff --git a/livesupport/products/gLiveSupport/src/ScratchpadWindow.h b/livesupport/products/gLiveSupport/src/ScratchpadWindow.h index 52f39cf8f..3bdacf367 100644 --- a/livesupport/products/gLiveSupport/src/ScratchpadWindow.h +++ b/livesupport/products/gLiveSupport/src/ScratchpadWindow.h @@ -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.h,v $ ------------------------------------------------------------------------------*/ @@ -72,7 +72,7 @@ using namespace LiveSupport::Widgets; * playlists. * * @author $Author: fgerlits $ - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ class ScratchpadWindow : public WhiteWindow, public LocalizedObject { @@ -85,7 +85,7 @@ class ScratchpadWindow : public WhiteWindow, public LocalizedObject * Lists one clip per row. * * @author $Author: fgerlits $ - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ class ModelColumns : public ZebraTreeModelColumnRecord { @@ -280,6 +280,13 @@ class ScratchpadWindow : public WhiteWindow, public LocalizedObject virtual void onPlayItem(void) throw (); + /** + * Signal handler for the "add to live mode" menu item selected from + * the entry context menu. + */ + virtual void + onAddToLiveMode(void) throw (); + /** * Delete an item from the storage and remove it from the Scratchpad. * diff --git a/livesupport/products/gLiveSupport/var/hu.txt b/livesupport/products/gLiveSupport/var/hu.txt index c1ad23358..4dcdba04c 100644 --- a/livesupport/products/gLiveSupport/var/hu.txt +++ b/livesupport/products/gLiveSupport/var/hu.txt @@ -5,9 +5,10 @@ hu:table loggedInMsg:string { "Bejelentkezve {0} felhasználóként" } loginButtonLabel:string { "bejelentkezés" } logoutButtonLabel:string { "kijelentkezés" } - uploadFileButtonLabel:string { "file feltöltés" } + liveModeButtonLabel:string { "élő adás" } + uploadFileButtonLabel:string { "filefeltöltés" } scratchpadButtonLabel:string { "praktikus csupor" } - simplePlaylistMgmtButtonLabel:string { "egyszerű playlist kezelés" } + simplePlaylistMgmtButtonLabel:string { "playlistkezelés" } schedulerButtonLabel:string { "időzítő" } searchButtonLabel:string { "keresés" } @@ -54,6 +55,7 @@ hu:table schedulePlaylistMenuItem:string { "_Playlist időzítése" } deleteMenuItem:string { "_Töröl" } playMenuItem:string { "Le_játszâs" } + addToLiveModeMenuItem:string { "Élő _adásba" } } playlistListWindow:table @@ -171,5 +173,14 @@ hu:table addToScratchpadMenuItem:string { "_Hasznos csuporba betenni" } } + + liveModeWindow:table + { + windowTitle:string { "LiveSupport Élő adás ablak" } + + titleColumnLabel:string { "Cím" } + creatorColumnLabel:string { "Előadó" } + lengthColumnLabel:string { "Hossz" } + } } diff --git a/livesupport/products/gLiveSupport/var/root.txt b/livesupport/products/gLiveSupport/var/root.txt index cb465462a..999fd6f3e 100644 --- a/livesupport/products/gLiveSupport/var/root.txt +++ b/livesupport/products/gLiveSupport/var/root.txt @@ -5,9 +5,10 @@ root:table loggedInMsg:string { "Logged in as {0}" } loginButtonLabel:string { "log in" } logoutButtonLabel:string { "log out" } + liveModeButtonLabel:string { "live mode" } uploadFileButtonLabel:string { "upload file" } scratchpadButtonLabel:string { "scratchpad" } - simplePlaylistMgmtButtonLabel:string { "simple playlist management" } + simplePlaylistMgmtButtonLabel:string { "edit playlist" } schedulerButtonLabel:string { "scheduler" } searchButtonLabel:string { "search" } @@ -55,6 +56,7 @@ root:table schedulePlaylistMenuItem:string { "_Schedule Playlist" } deleteMenuItem:string { "_Delete" } playMenuItem:string { "_Play" } + addToLiveModeMenuItem:string { "Add To _Live Mode" } } playlistListWindow:table @@ -173,5 +175,14 @@ root:table addToScratchpadMenuItem:string { "_Add To Scratchpad" } } + + liveModeWindow:table + { + windowTitle:string { "LiveSupport Live Mode Window" } + + titleColumnLabel:string { "Title" } + creatorColumnLabel:string { "Creator" } + lengthColumnLabel:string { "Length" } + } } diff --git a/livesupport/products/gLiveSupport/var/widgets/imageButton/hugePlay.png b/livesupport/products/gLiveSupport/var/widgets/imageButton/hugePlay.png new file mode 100644 index 0000000000000000000000000000000000000000..f1628edfe0f500a43bdf00651f803e30d0cb2db6 GIT binary patch literal 3658 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 literal 0 HcmV?d00001 diff --git a/livesupport/products/gLiveSupport/var/widgets/imageButton/hugePlayRoll.png b/livesupport/products/gLiveSupport/var/widgets/imageButton/hugePlayRoll.png new file mode 100644 index 0000000000000000000000000000000000000000..55ea1ab2ab914505e4751daf25cc5e05cf5b020f GIT binary patch literal 3683 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 B2iX7s literal 0 HcmV?d00001 diff --git a/livesupport/products/gLiveSupport/var/widgets/titleImages/livemodeWindowTitle.png b/livesupport/products/gLiveSupport/var/widgets/titleImages/liveModeWindowTitle.png similarity index 100% rename from livesupport/products/gLiveSupport/var/widgets/titleImages/livemodeWindowTitle.png rename to livesupport/products/gLiveSupport/var/widgets/titleImages/liveModeWindowTitle.png