xref: /haiku/src/apps/icon-o-matic/gui/TransformerListView.h (revision 4b0dffe500671f2cbf8dd203fb610ef6323cb123)
1bab183a2SStephan Aßmus /*
264279352SZardshard  * Copyright 2006-2007, 2023, Haiku.
3bab183a2SStephan Aßmus  * Distributed under the terms of the MIT License.
4bab183a2SStephan Aßmus  *
5bab183a2SStephan Aßmus  * Authors:
6bab183a2SStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
764279352SZardshard  *		Zardshard
8bab183a2SStephan Aßmus  */
9bab183a2SStephan Aßmus #ifndef TRANSFORMER_LIST_VIEW_H
10bab183a2SStephan Aßmus #define TRANSFORMER_LIST_VIEW_H
11bab183a2SStephan Aßmus 
12325a6253SAxel Dörfler 
1364279352SZardshard #include "Container.h"
14bab183a2SStephan Aßmus #include "ListViews.h"
1564279352SZardshard #include "IconBuild.h"
16bab183a2SStephan Aßmus 
17325a6253SAxel Dörfler 
1884153c7aSStephan Aßmus class BMenu;
19098eaec6SZardshard class BMenuItem;
20bab183a2SStephan Aßmus class CommandStack;
21bab183a2SStephan Aßmus class TransformerItem;
22bab183a2SStephan Aßmus class Selection;
23bab183a2SStephan Aßmus 
2425dc253dSIngo Weinhold _BEGIN_ICON_NAMESPACE
2564279352SZardshard 	class Shape;
26325a6253SAxel Dörfler 	class Transformer;
2725dc253dSIngo Weinhold _END_ICON_NAMESPACE
2825dc253dSIngo Weinhold 
29325a6253SAxel Dörfler 
30bab183a2SStephan Aßmus class TransformerListView : public SimpleListView,
3164279352SZardshard 							public ContainerListener<Transformer> {
32bab183a2SStephan Aßmus  public:
33*4b0dffe5SZardshard 	enum {
34*4b0dffe5SZardshard 		kSelectionArchiveCode		= 'strn',
35*4b0dffe5SZardshard 	};
36bab183a2SStephan Aßmus 								TransformerListView(BRect frame,
37bab183a2SStephan Aßmus 											  const char* name,
38bab183a2SStephan Aßmus 											  BMessage* selectionMessage = NULL,
39bab183a2SStephan Aßmus 											  BHandler* target = NULL);
40bab183a2SStephan Aßmus 	virtual						~TransformerListView();
41bab183a2SStephan Aßmus 
42bab183a2SStephan Aßmus 	// SimpleListView interface
4384153c7aSStephan Aßmus 	virtual	void				Draw(BRect updateRect);
4484153c7aSStephan Aßmus 
45bab183a2SStephan Aßmus 	virtual	void				SelectionChanged();
46bab183a2SStephan Aßmus 
4784153c7aSStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
4884153c7aSStephan Aßmus 
49*4b0dffe5SZardshard 	virtual	status_t			ArchiveSelection(BMessage* into, bool deep = true) const;
50*4b0dffe5SZardshard 	virtual	bool				InstantiateSelection(const BMessage* archive, int32 dropIndex);
51bab183a2SStephan Aßmus 
52bab183a2SStephan Aßmus 	virtual	void				MoveItems(BList& items, int32 toIndex);
53bab183a2SStephan Aßmus 	virtual	void				CopyItems(BList& items, int32 toIndex);
5461b0e9e3SStephan Aßmus 	virtual	void				RemoveItemList(BList& items);
55bab183a2SStephan Aßmus 
56bab183a2SStephan Aßmus 	virtual	BListItem*			CloneItem(int32 atIndex) const;
57bab183a2SStephan Aßmus 
580e1ba39fSStephan Aßmus 	virtual	int32				IndexOfSelectable(Selectable* selectable) const;
590e1ba39fSStephan Aßmus 	virtual	Selectable*			SelectableFor(BListItem* item) const;
600e1ba39fSStephan Aßmus 
6164279352SZardshard 	// ContainerListener<Transformer> interface
6264279352SZardshard 	virtual	void				ItemAdded(Transformer* transformer, int32 index);
6364279352SZardshard 	virtual	void				ItemRemoved(Transformer* transformer);
644215c452SStephan Aßmus 
65bab183a2SStephan Aßmus 	// TransformerListView
6684153c7aSStephan Aßmus 			void				SetMenu(BMenu* menu);
67bab183a2SStephan Aßmus 			void				SetShape(Shape* shape);
68bab183a2SStephan Aßmus 			void				SetCommandStack(CommandStack* stack);
69bab183a2SStephan Aßmus 
70bab183a2SStephan Aßmus  private:
714215c452SStephan Aßmus 			bool				_AddTransformer(
724215c452SStephan Aßmus 									Transformer* transformer, int32 index);
734215c452SStephan Aßmus 			bool				_RemoveTransformer(
744215c452SStephan Aßmus 									Transformer* transformer);
75bab183a2SStephan Aßmus 
764215c452SStephan Aßmus 			TransformerItem*	_ItemForTransformer(
774215c452SStephan Aßmus 									Transformer* transformer) const;
78bab183a2SStephan Aßmus 
7984153c7aSStephan Aßmus 			void				_UpdateMenu();
8084153c7aSStephan Aßmus 
81bab183a2SStephan Aßmus 			BMessage*			fMessage;
82bab183a2SStephan Aßmus 
83bab183a2SStephan Aßmus 			Shape*				fShape;
84bab183a2SStephan Aßmus 			CommandStack*		fCommandStack;
8584153c7aSStephan Aßmus 
8684153c7aSStephan Aßmus 			BMenu*				fMenu;
87098eaec6SZardshard 			BMenuItem*			fContourMI;
88098eaec6SZardshard 			BMenuItem*			fStrokeMI;
89c6c2c042SZardshard 			BMenuItem*			fPerspectiveMI;
90bab183a2SStephan Aßmus };
91bab183a2SStephan Aßmus 
92bab183a2SStephan Aßmus #endif // TRANSFORMER_LIST_VIEW_H
93