refactored: moved Up, Down and Remove functions from LiveModeWindow class to ZebraTreeView class

This commit is contained in:
fgerlits 2005-05-28 13:32:27 +00:00
parent 78b687f715
commit 0cd795889a
4 changed files with 130 additions and 126 deletions

View file

@ -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/include/LiveSupport/Widgets/ZebraTreeView.h,v $
------------------------------------------------------------------------------*/
@ -40,7 +40,7 @@
#include "configure.h"
#endif
#include <gtkmm/treemodel.h>
#include <gtkmm/liststore.h>
#include <gtkmm/treeview.h>
#include <gtkmm/label.h>
#include <gtkmm/table.h>
@ -92,7 +92,7 @@ using namespace LiveSupport::Core;
* 3) connected with a TreeModelColumn using set_renderer().
*
* @author $Author: fgerlits $
* @version $Revision: 1.12 $
* @version $Revision: 1.13 $
*/
class ZebraTreeView : public Gtk::TreeView
{
@ -209,6 +209,34 @@ class ZebraTreeView : public Gtk::TreeView
int minimumWidth = 0)
throw ();
/**
* Signal handler for the "up" menu option selected from
* the context menu.
*/
void
onUpMenuOption(void) throw ();
/**
* Signal handler for the "down" menu option selected from
* the context menu.
*/
void
onDownMenuOption(void) throw ();
/**
* Signal handler for the "remove" menu option selected from
* the context menu.
*/
void
onRemoveMenuOption(void) throw ();
/**
* Remove an item from the window.
*
* @param iter points to the row to be removed
*/
void
removeItem(const Gtk::TreeModel::iterator & iter) throw ();
};

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.13 $
Version : $Revision: 1.14 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/widgets/src/ZebraTreeView.cxx,v $
------------------------------------------------------------------------------*/
@ -267,3 +267,90 @@ ZebraTreeView :: lineNumberCellDataFunction(
}
/*------------------------------------------------------------------------------
* Event handler for the Up menu item selected from the entry conext menu
*----------------------------------------------------------------------------*/
void
ZebraTreeView :: onUpMenuOption(void) throw ()
{
Glib::RefPtr<Gtk::TreeView::Selection> selection = get_selection();
Gtk::TreeModel::iterator iter = selection->get_selected();
Glib::RefPtr<Gtk::ListStore> treeModel
= Glib::RefPtr<Gtk::ListStore>::cast_dynamic(get_model());
ZebraTreeModelColumnRecord modelColumns;
if (iter && iter != treeModel->children().begin()) {
Gtk::TreeModel::iterator previous = iter;
--previous;
int rowNumber = (*previous)[modelColumns.rowNumberColumn];
(*iter) [modelColumns.rowNumberColumn] = rowNumber;
(*previous)[modelColumns.rowNumberColumn] = ++rowNumber;
treeModel->iter_swap(previous, iter);
}
}
/*------------------------------------------------------------------------------
* Event handler for the Down menu item selected from the entry conext menu
*----------------------------------------------------------------------------*/
void
ZebraTreeView :: onDownMenuOption(void) throw ()
{
Glib::RefPtr<Gtk::TreeView::Selection> selection = get_selection();
Gtk::TreeModel::iterator iter = selection->get_selected();
Glib::RefPtr<Gtk::ListStore> treeModel
= Glib::RefPtr<Gtk::ListStore>::cast_dynamic(get_model());
ZebraTreeModelColumnRecord modelColumns;
if (iter) {
Gtk::TreeModel::iterator next = iter;
++next;
if (next != treeModel->children().end()) {
int rowNumber = (*iter)[modelColumns.rowNumberColumn];
(*next)[modelColumns.rowNumberColumn] = rowNumber;
(*iter)[modelColumns.rowNumberColumn] = ++rowNumber;
treeModel->iter_swap(iter, next);
}
}
}
/*------------------------------------------------------------------------------
* Event handler for the Remove menu item selected from the entry conext menu
*----------------------------------------------------------------------------*/
void
ZebraTreeView :: onRemoveMenuOption(void) throw ()
{
Glib::RefPtr<Gtk::TreeView::Selection> selection = get_selection();
Gtk::TreeModel::iterator iter = selection->get_selected();
if (iter) {
removeItem(iter);
}
}
/*------------------------------------------------------------------------------
* Remove an item from the window.
*----------------------------------------------------------------------------*/
void
ZebraTreeView :: removeItem(const Gtk::TreeModel::iterator & iter)
throw ()
{
Glib::RefPtr<Gtk::ListStore> treeModel
= Glib::RefPtr<Gtk::ListStore>::cast_dynamic(get_model());
ZebraTreeModelColumnRecord modelColumns;
Gtk::TreeModel::iterator later = iter;
int rowNumber = (*iter)[modelColumns.rowNumberColumn];
for (++later; later != treeModel->children().end(); ++later) {
(*later)[modelColumns.rowNumberColumn] = rowNumber++;
}
treeModel->erase(iter);
}

View file

@ -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/LiveModeWindow.cxx,v $
------------------------------------------------------------------------------*/
@ -148,16 +148,16 @@ LiveModeWindow :: LiveModeWindow (Ptr<GLiveSupport>::Ref gLiveSupport,
&CuePlayer::onPlayItem)));
contextMenuList.push_back(Gtk::Menu_Helpers::MenuElem(
*getResourceUstring("upMenuItem"),
sigc::mem_fun(*this,
&LiveModeWindow::onUpMenuOption)));
sigc::mem_fun(*treeView,
&ZebraTreeView::onUpMenuOption)));
contextMenuList.push_back(Gtk::Menu_Helpers::MenuElem(
*getResourceUstring("downMenuItem"),
sigc::mem_fun(*this,
&LiveModeWindow::onDownMenuOption)));
sigc::mem_fun(*treeView,
&ZebraTreeView::onDownMenuOption)));
contextMenuList.push_back(Gtk::Menu_Helpers::MenuElem(
*getResourceUstring("removeMenuItem"),
sigc::mem_fun(*this,
&LiveModeWindow::onRemoveMenuOption)));
sigc::mem_fun(*treeView,
&ZebraTreeView::onRemoveMenuOption)));
contextMenuList.push_back(Gtk::Menu_Helpers::MenuElem(
*getResourceUstring("playMenuItem"),
sigc::mem_fun(*this,
@ -255,7 +255,7 @@ LiveModeWindow :: onOutputPlay(void) throw ()
Ptr<Playable>::Ref playable = (*iter)[modelColumns.playableColumn];
gLiveSupport->playOutputAudio(playable);
gLiveSupport->setNowPlaying(playable);
removeItem(iter);
treeView->removeItem(iter);
}
}
@ -291,85 +291,3 @@ LiveModeWindow :: onEntryClicked (GdkEventButton * event) throw ()
}
}
/*------------------------------------------------------------------------------
* Event handler for the Up menu item selected from the entry conext menu
*----------------------------------------------------------------------------*/
void
LiveModeWindow :: onUpMenuOption(void) throw ()
{
Glib::RefPtr<Gtk::TreeView::Selection> refSelection =
treeView->get_selection();
Gtk::TreeModel::iterator iter = refSelection->get_selected();
if (iter && iter != treeModel->children().begin()) {
Gtk::TreeModel::iterator previous = iter;
--previous;
int rowNumber = (*previous)[modelColumns.rowNumberColumn];
(*iter) [modelColumns.rowNumberColumn] = rowNumber;
(*previous)[modelColumns.rowNumberColumn] = ++rowNumber;
treeModel->iter_swap(previous, iter);
}
}
/*------------------------------------------------------------------------------
* Event handler for the Down menu item selected from the entry conext menu
*----------------------------------------------------------------------------*/
void
LiveModeWindow :: onDownMenuOption(void) throw ()
{
Glib::RefPtr<Gtk::TreeView::Selection> refSelection =
treeView->get_selection();
Gtk::TreeModel::iterator iter = refSelection->get_selected();
if (iter) {
Gtk::TreeModel::iterator next = iter;
++next;
if (next != treeModel->children().end()) {
int rowNumber = (*iter)[modelColumns.rowNumberColumn];
(*next)[modelColumns.rowNumberColumn] = rowNumber;
(*iter)[modelColumns.rowNumberColumn] = ++rowNumber;
treeModel->iter_swap(iter, next);
}
}
}
/*------------------------------------------------------------------------------
* Event handler for the Remove menu item selected from the entry conext menu
*----------------------------------------------------------------------------*/
void
LiveModeWindow :: onRemoveMenuOption(void) throw ()
{
Glib::RefPtr<Gtk::TreeView::Selection> refSelection =
treeView->get_selection();
Gtk::TreeModel::iterator iter = refSelection->get_selected();
if (iter) {
removeItem(iter);
}
}
/*------------------------------------------------------------------------------
* Remove an item from the window.
*----------------------------------------------------------------------------*/
void
LiveModeWindow :: removeItem(const Gtk::TreeModel::iterator & iter)
throw ()
{
Gtk::TreeModel::iterator later = iter;
int rowNumber = (*iter)[modelColumns.rowNumberColumn];
for (++later; later != treeModel->children().end(); ++later) {
(*later)[modelColumns.rowNumberColumn] = rowNumber++;
}
treeModel->erase(iter);
}

View file

@ -22,7 +22,7 @@
Author : $Author: fgerlits $
Version : $Revision: 1.12 $
Version : $Revision: 1.13 $
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/gLiveSupport/src/LiveModeWindow.h,v $
------------------------------------------------------------------------------*/
@ -74,7 +74,7 @@ using namespace LiveSupport::Widgets;
* playlists.
*
* @author $Author: fgerlits $
* @version $Revision: 1.12 $
* @version $Revision: 1.13 $
*/
class LiveModeWindow : public WhiteWindow, public LocalizedObject
{
@ -87,7 +87,7 @@ class LiveModeWindow : public WhiteWindow, public LocalizedObject
* Lists one clip per row.
*
* @author $Author: fgerlits $
* @version $Revision: 1.12 $
* @version $Revision: 1.13 $
*/
class ModelColumns : public PlayableTreeModelColumnRecord
{
@ -165,35 +165,6 @@ class LiveModeWindow : public WhiteWindow, public LocalizedObject
void
onEntryClicked(GdkEventButton * event) throw ();
/**
* Signal handler for the "up" menu option selected from
* the context menu.
*/
void
onUpMenuOption(void) throw ();
/**
* Signal handler for the "down" menu option selected from
* the context menu.
*/
void
onDownMenuOption(void) throw ();
/**
* Signal handler for the "remove" menu option selected from
* the context menu.
*/
virtual void
onRemoveMenuOption(void) throw ();
/**
* Remove an item from the window.
*
* @param iter points to the row to be removed
*/
void
removeItem(const Gtk::TreeModel::iterator & iter) throw ();
/**
* Signal handler for the "rows reordered" event.
*/