summaryrefslogtreecommitdiffstats
path: root/Source/FLTKDialog/FLTKPropertyList.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FLTKDialog/FLTKPropertyList.cxx')
-rw-r--r--Source/FLTKDialog/FLTKPropertyList.cxx184
1 files changed, 184 insertions, 0 deletions
diff --git a/Source/FLTKDialog/FLTKPropertyList.cxx b/Source/FLTKDialog/FLTKPropertyList.cxx
new file mode 100644
index 0000000..72c798b
--- /dev/null
+++ b/Source/FLTKDialog/FLTKPropertyList.cxx
@@ -0,0 +1,184 @@
+/*=========================================================================
+
+ Program: Insight Segmentation & Registration Toolkit
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Insight Consortium. All rights reserved.
+ See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+// FLTKPropertyList.cxx : implementation file
+//
+
+#include "FLTKPropertyList.h"
+#include "../cmCacheManager.h"
+#include "FLTKPropertyItemRow.h"
+#include "FL/filename.H"
+#include "FL/fl_file_chooser.H"
+#include "FL/Fl_Color_Chooser.H"
+#include "FL/fl_ask.H"
+#include "FL/Fl_Button.H"
+#include "CMakeSetupGUIImplementation.h"
+
+
+namespace fltk {
+
+/////////////////////////////////////////////////////////////////////////////
+// PropertyList
+
+PropertyList::PropertyList( CMakeSetupGUIImplementation * cmakeSetup )
+{
+ m_CMakeSetup = cmakeSetup;
+ PropertyItemRow::SetCMakeSetupGUI( cmakeSetup );
+ m_Dirty = false;
+}
+
+
+
+PropertyList::~PropertyList()
+{
+ for(std::set<PropertyItem*>::iterator i = m_PropertyItems.begin();
+ i != m_PropertyItems.end(); ++i)
+ {
+ delete *i;
+ }
+}
+
+
+
+
+int PropertyList::AddItem( std::string txt)
+{
+ int nIndex =0;
+ return nIndex;
+}
+
+
+
+int PropertyList::AddPropItem(PropertyItem* pItem, bool reverseOrder)
+{
+
+ int nIndex =0;
+ if(reverseOrder)
+ {
+ nIndex = 0;
+ }
+ else
+ {
+ nIndex = m_PropertyItems.size();
+ }
+
+ new PropertyItemRow( pItem ); // GUI of the new property row
+
+ m_PropertyItems.insert(pItem);
+
+ return nIndex;
+}
+
+
+
+int PropertyList::AddProperty(const char* name,
+ const char* value,
+ const char* helpString,
+ int type,
+ const char* comboItems,
+ bool reverseOrder)
+{
+
+ PropertyItem* pItem = 0;
+ for(int i =0; i < this->GetCount(); ++i)
+ {
+ PropertyItem* item = this->GetItem(i);
+ if(item->m_propName == name)
+ {
+ pItem = item;
+ if(pItem->m_curValue != value)
+ {
+ pItem->m_curValue = value;
+ pItem->m_HelpString = helpString;
+ Invalidate();
+ }
+ return i;
+ }
+ }
+ // if it is not found, then create a new one
+ if(!pItem)
+ {
+ pItem = new PropertyItem(name, value, helpString, type, comboItems);
+ }
+ return this->AddPropItem(pItem,reverseOrder);
+}
+
+
+void PropertyList::RemoveProperty(const char* name)
+{
+ for(int i =0; i < this->GetCount(); ++i)
+ {
+ PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(i);
+ if(pItem->m_propName == name)
+ {
+ m_PropertyItems.erase(pItem);
+ delete pItem;
+ return;
+ }
+ }
+}
+
+
+
+void PropertyList::RemoveAll()
+{
+ int c = this->GetCount();
+ for(int i =0; i < c; ++i)
+ {
+ PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(0);
+// cmCacheManager::GetInstance()->RemoveCacheEntry(pItem->m_propName.c_str());
+ m_PropertyItems.erase(pItem);
+ delete pItem;
+ }
+ Invalidate();
+}
+
+
+
+PropertyItem * PropertyList::GetItemDataPtr(int index)
+{
+ std::set<PropertyItem*>::iterator it = m_PropertyItems.begin();
+ for(int i=0; it != m_PropertyItems.end() && i<index; i++)
+ {
+ ++it;
+ }
+ return *it;
+}
+
+
+PropertyItem * PropertyList::GetItem(int index)
+{
+ std::set<PropertyItem*>::iterator it = m_PropertyItems.begin();
+ for(int i=0; it != m_PropertyItems.end() && i<index; i++)
+ {
+ ++it;
+ }
+ return *it;
+}
+
+void
+PropertyList
+::InvalidateList(void)
+{
+ Invalidate();
+ m_Dirty = true;
+}
+
+
+} // end fltk namespace
+
+
+