File: layout_manager_generic.h

package info (click to toggle)
clanlib 0.5.4-1-6
  • links: PTS
  • area: main
  • in suites: woody
  • size: 10,320 kB
  • ctags: 10,893
  • sloc: cpp: 76,056; xml: 3,281; sh: 2,961; perl: 1,204; asm: 837; makefile: 775
file content (61 lines) | stat: -rw-r--r-- 1,498 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
	$Id: layout_manager_generic.h,v 1.4 2001/09/08 19:12:51 japj Exp $
	
	ClanGUI, copyrights by various people. Have a look in the CREDITS file.
	
	This sourcecode is distributed using the Library GNU Public Licence,
	version 2 or (at your option) any later version. Please read LICENSE
	for details.
*/

#ifndef header_layout_manager_generic
#define header_layout_manager_generic

#include "API/GUI/layout_manager.h"
#include "API/signals.h"

class CL_LayoutManager_Item
{
public:
	CL_Component *dest;
	CL_LayoutManager::ELayoutPosition dest_position;
	CL_Component *source;
	CL_LayoutManager::ELayoutPosition source_position;

	CL_Slot slot_resize;
	CL_Slot slot_move;
};

class CL_LayoutManager_Generic
{
// Construction:
public:
	CL_LayoutManager_Generic(CL_LayoutManager *self);

	virtual ~CL_LayoutManager_Generic();

// Attributes:
public:

// Operations:
public:
	void add_resize_position(
		CL_Component *destination, CL_LayoutManager::ELayoutPosition destination_position,
		CL_Component *source, CL_LayoutManager::ELayoutPosition source_position);

	void add_resize_bottomleft(CL_Component *destination, CL_Component *source);
	void add_resize_left(CL_Component *destination, CL_Component *source);

// Callbacks:
protected:
	void on_resize(int old_width, int old_height, CL_LayoutManager_Item *item);
	void on_move(int old_x, int old_y, CL_LayoutManager_Item *item);

// Implementation:
private:
	CL_LayoutManager *layoutmanager;

	std::list<CL_LayoutManager_Item *> items;
};

#endif