File: sdpgtkbox.cpp

package info (click to toggle)
k3d 0.4.3.0-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 51,716 kB
  • ctags: 81,610
  • sloc: cpp: 283,698; ansic: 64,095; xml: 61,533; sh: 9,026; makefile: 5,282; python: 431; perl: 308; awk: 130
file content (117 lines) | stat: -rw-r--r-- 3,388 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

// SDPGTK Library
// Copyright (c) 1995-2004, Timothy M. Shead
//
// Contact: tshead@k-3d.com
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA



#include "sdpgtkbox.h"
#include "sdpgtkutility.h"


////////////////////////////////////////////////////////////////////////////////////////
// sdpGtkBox

sdpGtkBox::sdpGtkBox() : sdpGtkContainer()
{
}

sdpGtkBox::sdpGtkBox(GtkBox* Box) : sdpGtkContainer(GTK_CONTAINER(Box))
{
}

bool sdpGtkBox::CreateOptions(sdpGtkIObjectContainer* const ObjectContainer, sdpxml::Document& Document, sdpxml::Element& Element)
{
	// Sanity checks ...
	g_assert(ObjectContainer);

	const bool homogeneous = sdpxml::GetAttribute(Element, "homogeneous", true);
	sdpGtkMarkAttribute(Document, Element, "homogeneous");
	SetHomogeneous(homogeneous);

	const gint spacing = sdpxml::GetAttribute(Element, "spacing", 0);
	sdpGtkMarkAttribute(Document, Element, "spacing");

#ifndef K3D_HAVE_GTK2
	SetSpacing(spacing);
#endif // !K3D_HAVE_GTK2

	return sdpGtkContainer::CreateOptions(ObjectContainer, Document, Element);
}

void sdpGtkBox::PackStart(GtkWidget* Widget, bool Expand, bool Fill, guint Padding)
{
	// Sanity checks ...
	g_return_if_fail(Attached());

	gtk_box_pack_start(*this, Widget, Expand, Fill, Padding);
}

void sdpGtkBox::PackEnd(GtkWidget* Widget, bool Expand, bool Fill, guint Padding)
{
	// Sanity checks ...
	g_return_if_fail(Attached());

	gtk_box_pack_end(*this, Widget, Expand, Fill, Padding);
}

void sdpGtkBox::SetHomogeneous(bool Homogeneous)
{
	// Sanity checks ...
	g_return_if_fail(Attached());

	gtk_box_set_homogeneous(*this, Homogeneous);
}

void sdpGtkBox::SetSpacing(gint Spacing)
{
	// Sanity checks ...
	g_return_if_fail(Attached());

	gtk_box_set_spacing(*this, Spacing);
}

bool sdpGtkBox::AttachChild(sdpGtkIObjectContainer* const ObjectContainer, sdpxml::Document& Document, sdpxml::Element& ChildElement, sdpGtkObject* Child)
{
	// Sanity checks ...
	g_return_val_if_fail(Attached(), false);
	g_assert(Child);

	const sdpString pack = sdpxml::GetAttribute<sdpString>(ChildElement, "pack", "start");
	sdpGtkMarkAttribute(Document, ChildElement, "pack");

	const bool expand = sdpxml::GetAttribute(ChildElement, "expand", false);
	sdpGtkMarkAttribute(Document, ChildElement, "expand");

	const bool fill = sdpxml::GetAttribute(ChildElement, "fill", false);
	sdpGtkMarkAttribute(Document, ChildElement, "fill");

	const gint padding = sdpxml::GetAttribute(ChildElement, "padding", 0);
	sdpGtkMarkAttribute(Document, ChildElement, "padding");

	if(pack == "start")
		PackStart(GTK_WIDGET(Child->Object()), expand, fill, padding);
	else if(pack == "end")
		PackEnd(GTK_WIDGET(Child->Object()), expand, fill, padding);
	else
		g_return_val_if_fail(0, false);

	return true;
}