13#ifndef ML_LIST_CONTAINER_H
14#define ML_LIST_CONTAINER_H
103 void *userData =
nullptr);
328 std::string _listStringBackup;
334 void* _handleNotificationUserData;
336 void _copyAndTakeOwnership();
477 ML_PRINT_FATAL_ERROR(
"ListContainerTemplate::ListContainerTemplate(const ListContainerTemplate &)",
479 "Usage of copy constructor of ListContainerTemplate is not supported.");
488 ML_PRINT_FATAL_ERROR(
"ListContainerTemplate& ListContainerTemplate::operator=(const ListContainerTemplate &)",
490 "Usage of assignment operator of ListContainerTemplate is not supported.");
515 std::string rtName = rt->
getName();
519 std::string listFieldName = std::string(
"out")+rtName;
525 listFieldName = std::string(
"in")+rtName;
541 bool listValid =
false;
590 typename T::iterator it;
592 if (
_listPtr && (index >= 0) && (index < listSize) && (num > 0))
594 if (index+num > listSize){
595 num = listSize-index;
619 typename T::itemType tmpItem;
640 bool modified =
true;
644 if (fromCurrentItem){
678 _fldNewName->setStringValue( item->name() ? item->name() :
"" );
700 if (item->getId() == 0) {
General Base object class for list items that have an id and a name.
MLssize_t getId() const
Sets the id of the item.
const char * name() const
Get name.
BaseField * addBase(const char *name)
Creates a Base field with name and adds it to the container. Default value is NULL.
Base object class ListBase managing a number of BaseItem objects.
ActionClass
Constants to describe the type of action most recently performed.
IntField * _fldId
List item id.
virtual void insertItem(MLssize_t index, bool fromCurrentItem)=0
virtual void doModifyItem(MLssize_t index, Field *field, bool fromCurrentItem)
BoolField * _fldAutoCopyAndTakeOwnership
If true, the ownership is taken automatically on connecting the input field.
virtual void copyTemplateToCurrent()=0
Copy the values of the templates fields to _currentItem.
StringField * _fldListString
String representation of list.
NotifyField * _fldCopyItemToTemplate
Copy values from current item to template fields.
virtual void updateActionFields()
Update last action fields.
virtual ListBase * getInternalList()=0
NotifyField * _fldCopyAndTakeOwnership
Takes the ownership of an XMarkerList.
void beginSaveFields() override
Prepare for persistence.
virtual void updatePropertyFields()=0
Update property fields from the current list item.
StringField * _fldActionClass
Action class of last action on list.
IntField * _fldCurrentIndex
Index of currently selected item.
virtual bool isPropertyField(Field *field)
virtual void updateDisplay()
Update display of list size, current item index and item properties.
OverflowModes
Mode constants for cases of list size overflow.
@ OvwRemoveFirst
Overflow ignored.
@ OvwRemoveAll
Last item(s) deleted.
@ OvwRemoveLast
First item(s) deleted.
@ OvwRemoveNew
All item(s) deleted.
@ OvwNumModes
New item is deleted (not inserted).
void endSaveFields() override
Clean up after persistence.
StringField * _fldName
List item name.
virtual void updateListString(bool forceEnable=false)
virtual void doDeleteAll()
int _lockNotification
Suppress handleNotification() if non-zero.
NotifyField * _fldAdd
Add (= Append) button.
NotifyField * _fldDelete
Delete button.
virtual void doCopyItemToTemplate(MLssize_t index)
Copy values from item at position index to the template fields.
StringField * _fldNewName
List item name.
EnumField * _fldOverflowMode
Overflow mode, specifies which item(s) to delete on overflow.
BoolField * _fldUpToDate
Indicates that the property values are up to date.
IntField * _fldMaxSize
Maximum list size.
NotifyField * _fldCopyTemplateToItem
Copy values from template fields to current item.
virtual void doUpdate()
Update all fields and touch output list field.
virtual bool modifyItem(MLssize_t index, Field *field, bool fromCurrentItem)=0
BoolField * _fldListStringEnable
Enable list string field.
virtual bool ownsList()
Return true if the active list is the internal list.
MLint maxNumItems() const
NotifyField * _fldInsert
Insert button.
IntField * _fldActionIndex
Index of last action on list.
BoolField * _fldApplySelect
Perform a Select-action when index is changed.
virtual void doSelectItem(MLssize_t index)
Select item at position index, or deselect if item == -1.
BaseField * _fldInputList
Input list field, initialized by derived class.
ListContainerBase()
Constructor.
virtual void touchList(ListBase::ActionClass actionClass, MLssize_t id, MLssize_t index)
void setHandleNotificationCB(ListContainerHandleNotificationCB *cb=nullptr, void *userData=nullptr)
Set the callback for handleNotification.
void handleNotification(Field *field) override
virtual void doDeleteItem(MLssize_t index)
Delete single item at position index.
BoolField * _fldUseInsertTemplate
If true the container should use the template fields for initializing the inserted item.
NotifyField * _fldUpdate
Update button.
BaseField * _fldOutputList
Output list field, initialized by derived class.
virtual void doInsertItem(MLssize_t index, bool fromCurrentItem)
IntField * _fldNumItems
List size.
void activateAttachments() override
Update fields after an initialization without handleNotification() called.
void notify()
Notifies this container and attached modules of a change.
virtual void resetPropertyFields()
Reset all property fields.
virtual void deleteItems(MLssize_t index, MLssize_t num)=0
virtual void copyItemToTemplate(MLssize_t index)=0
Copy values from item at position index to the template fields.
ListContainerBase(ListBase *listBasePtr, int inputNum, int outputNum)
int overflowMode() const
Returns the overflow mode.
virtual void initItem(MLssize_t index)=0
NotifyField * _fldDeleteAll
Delete All button.
virtual bool setActiveList(Base *basePtr)=0
virtual void doClearItem(MLssize_t index)
Init item at position index.
BoolField * _fldOwnsList
Reflect owner state (true if internal list is active).
NotifyField * _fldClearItem
Clear the current item (i.e. init it again).
BaseField * getOutputField()
Returns a pointer to the output field.
virtual MLssize_t getId(MLssize_t index)=0
Return the item id of the item index.
BoolField * _fldPersistent
Activate internal list persistence.
IntField * _fldIndex
Current list index.
IntField * _fldActionId
Item id of last action on list.
Template module class ListContainerTemplate for a specific list class.
void copyTemplateToCurrent() override
Copy the values of the templates fields to _currentItem.
void insertItem(MLssize_t index, bool fromCurrentItem) override
ListContainerTemplate(int inputNum, int outputNum)
Constructor.
MLssize_t getId(MLssize_t index) override
Return the item id of the item index.
void copyItemToTemplate(MLssize_t index) override
Copy values from item at position index to the template fields.
ListBase * getInternalList() override
Return address of internal list object.
bool setActiveList(Base *basePtr) override
void deleteItems(MLssize_t index, MLssize_t num) override
Remove num items, starting at item index.
~ListContainerTemplate() override
Destructor.
void updatePropertyFields() override
Update property fields from the current list item.
void initItem(MLssize_t index) override
bool modifyItem(MLssize_t index, Field *field, bool fromCurrentItem) override
Module(int numInputImages, int numOutputImages)
const char * getName() const
Returns the NULL-terminated string name of the class. Returns 'BadType' on error.
#define ML_ABSTRACT_MODULE_CLASS_HEADER(className)
#define ML_BASE_IS_A(base, type)
#define ML_PROGRAMMING_ERROR
#define ML_PRINT_FATAL_ERROR(FUNC_NAME, REASON, HANDLING)
#define MLBASEEXPORT
defined Header file mlBaseInit.h
#define ML_CHECK_RUNTIME_TYPE(x)
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
SSIZE_T MLssize_t
The signed ML size type that is a signed 32-bit size_t on 32-bit platforms and 64-bit one on 64-bit p...
bool ListContainerHandleNotificationCB(void *usrData, Field *field)