xref: /haiku/src/apps/icon-o-matic/gui/TransformerListView.h (revision 6427935280aaac0a1a4557bae55184708819560d)
1bab183a2SStephan Aßmus /*
2*64279352SZardshard  * 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>
7*64279352SZardshard  *		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 
13*64279352SZardshard #include "Container.h"
14bab183a2SStephan Aßmus #include "ListViews.h"
15*64279352SZardshard #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
25*64279352SZardshard 	class Shape;
26325a6253SAxel Dörfler 	class Transformer;
2725dc253dSIngo Weinhold _END_ICON_NAMESPACE
2825dc253dSIngo Weinhold 
29325a6253SAxel Dörfler 
30bab183a2SStephan Aßmus class TransformerListView : public SimpleListView,
31*64279352SZardshard 							public ContainerListener<Transformer> {
32bab183a2SStephan Aßmus  public:
33bab183a2SStephan Aßmus 								TransformerListView(BRect frame,
34bab183a2SStephan Aßmus 											  const char* name,
35bab183a2SStephan Aßmus 											  BMessage* selectionMessage = NULL,
36bab183a2SStephan Aßmus 											  BHandler* target = NULL);
37bab183a2SStephan Aßmus 	virtual						~TransformerListView();
38bab183a2SStephan Aßmus 
39bab183a2SStephan Aßmus 	// SimpleListView interface
4084153c7aSStephan Aßmus 	virtual	void				Draw(BRect updateRect);
4184153c7aSStephan Aßmus 
42bab183a2SStephan Aßmus 	virtual	void				SelectionChanged();
43bab183a2SStephan Aßmus 
4484153c7aSStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
4584153c7aSStephan Aßmus 
46bab183a2SStephan Aßmus 	virtual	void				MakeDragMessage(BMessage* message) const;
47bab183a2SStephan Aßmus 
48bab183a2SStephan Aßmus 	virtual	void				MoveItems(BList& items, int32 toIndex);
49bab183a2SStephan Aßmus 	virtual	void				CopyItems(BList& items, int32 toIndex);
5061b0e9e3SStephan Aßmus 	virtual	void				RemoveItemList(BList& items);
51bab183a2SStephan Aßmus 
52bab183a2SStephan Aßmus 	virtual	BListItem*			CloneItem(int32 atIndex) const;
53bab183a2SStephan Aßmus 
540e1ba39fSStephan Aßmus 	virtual	int32				IndexOfSelectable(Selectable* selectable) const;
550e1ba39fSStephan Aßmus 	virtual	Selectable*			SelectableFor(BListItem* item) const;
560e1ba39fSStephan Aßmus 
57*64279352SZardshard 	// ContainerListener<Transformer> interface
58*64279352SZardshard 	virtual	void				ItemAdded(Transformer* transformer, int32 index);
59*64279352SZardshard 	virtual	void				ItemRemoved(Transformer* transformer);
604215c452SStephan Aßmus 
61bab183a2SStephan Aßmus 	// TransformerListView
6284153c7aSStephan Aßmus 			void				SetMenu(BMenu* menu);
63bab183a2SStephan Aßmus 			void				SetShape(Shape* shape);
64bab183a2SStephan Aßmus 			void				SetCommandStack(CommandStack* stack);
65bab183a2SStephan Aßmus 
66bab183a2SStephan Aßmus  private:
674215c452SStephan Aßmus 			bool				_AddTransformer(
684215c452SStephan Aßmus 									Transformer* transformer, int32 index);
694215c452SStephan Aßmus 			bool				_RemoveTransformer(
704215c452SStephan Aßmus 									Transformer* transformer);
71bab183a2SStephan Aßmus 
724215c452SStephan Aßmus 			TransformerItem*	_ItemForTransformer(
734215c452SStephan Aßmus 									Transformer* transformer) const;
74bab183a2SStephan Aßmus 
7584153c7aSStephan Aßmus 			void				_UpdateMenu();
7684153c7aSStephan Aßmus 
77bab183a2SStephan Aßmus 			BMessage*			fMessage;
78bab183a2SStephan Aßmus 
79bab183a2SStephan Aßmus 			Shape*				fShape;
80bab183a2SStephan Aßmus 			CommandStack*		fCommandStack;
8184153c7aSStephan Aßmus 
8284153c7aSStephan Aßmus 			BMenu*				fMenu;
83098eaec6SZardshard 			BMenuItem*			fContourMI;
84098eaec6SZardshard 			BMenuItem*			fStrokeMI;
85bab183a2SStephan Aßmus };
86bab183a2SStephan Aßmus 
87bab183a2SStephan Aßmus #endif // TRANSFORMER_LIST_VIEW_H
88