File: dockWidget.C

package info (click to toggle)
ball 1.5.0%2Bgit20180813.37fc53c-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 239,888 kB
  • sloc: cpp: 326,149; ansic: 4,208; python: 2,303; yacc: 1,778; lex: 1,099; xml: 958; sh: 322; makefile: 95
file content (118 lines) | stat: -rw-r--r-- 2,745 bytes parent folder | download | duplicates (4)
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
118
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//

#include <BALL/VIEW/WIDGETS/dockWidget.h>
#include <BALL/VIEW/KERNEL/mainControl.h>
#include <BALL/VIEW/KERNEL/message.h>

#include <QtCore/QMimeData>
#include <QtWidgets/QMenuBar>

namespace BALL
{
	namespace VIEW
	{

		DockWidget::DockWidget()
			:	QDockWidget(),
				ModularWidget(),
				guest_(0)
		{
		}
	
		DockWidget::DockWidget(const DockWidget&)
			:	QDockWidget(),
				ModularWidget(),
				guest_(0)
		{
			setAcceptDrops(true);
		}
			
		
		DockWidget::DockWidget(QWidget* parent, const char* name)
			: QDockWidget(name, parent),
				ModularWidget(name),
				container_(0),
				guest_(0),
				layout_(0)
		{
			if (name != 0) 
			{ 
				setObjectName(name);
			}
			else 
			{
				Log.error() << (String)tr("No valid name for DockWidget!") << std::endl;
				setObjectName("DockWidget");
			}

			setAcceptDrops(true);
//   			setFloating(false);
			container_ = new QWidget(this);
			container_->setObjectName("Container");
			setWidget(container_);

			layout_ = new QGridLayout();
			layout_->setMargin(0);
			layout_->setObjectName("Layout");
			container_->setLayout(layout_);
		}

		void DockWidget::setGuest(QWidget& guest)
		{
			guest_ = &guest;
			setMinimumSize(0, 0);
			setMaximumSize(15000, 15000);
			guest.setParent(container_);
			layout_->addWidget(&guest);

			if (guest.objectName() == "")
			{
				guest.setObjectName("Guest");
			}

			guest.setContextMenuPolicy(Qt::CustomContextMenu);
			connect(&guest, SIGNAL(customContextMenuRequested(const QPoint&)), 
									this, SLOT(showGuestContextMenu(const QPoint&)));
		}

		void DockWidget::initializeWidget(MainControl&)
		{
			window_menu_entry_ = toggleViewAction();
			QMenu* menu = getMainControl()->initPopupMenu(MainControl::WINDOWS, UIOperationMode::MODE_ADVANCED);
			if (menu)
				menu->addAction(window_menu_entry_);
		}

		void DockWidget::writePreferences(INIFile& /*inifile*/)
		{
			// writing of preferences should be completely covered by saveState that has to 
			// be called from the widget we are used from (usually MainControl)
		}

		void DockWidget::fetchPreferences(INIFile & /*inifile*/)
		{
			// reading of preferences should be completely covered by restoreState that has to 
			// be called from the widget we are used from (usually MainControl)
		}

		void DockWidget::dropEvent(QDropEvent* e)
		{
			VIEW::processDropEvent(e);
		}

		void DockWidget::dragEnterEvent(QDragEnterEvent* event)
		{
			if (event->mimeData()->hasUrls()) event->acceptProposedAction();
		}

		void DockWidget::setWidgetVisible(bool state)
		{
 			if (window_menu_entry_ != 0) window_menu_entry_->setChecked(state);

			QDockWidget::setVisible(state);
		}

	} // namespace VIEW
} // namespace BALL