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);
}