1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2 // Toolbarmenu.cc for Blackbox - an X11 Window manager
3 // Copyright (c) 2001 - 2005 Sean 'Shaleh' Perry <shaleh@debian.org>
4 // Copyright (c) 1997 - 2000, 2002 - 2005
5 // Bradley T Hughes <bhughes at trolltech.com>
7 // Permission is hereby granted, free of charge, to any person obtaining a
8 // copy of this software and associated documentation files (the "Software"),
9 // to deal in the Software without restriction, including without limitation
10 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 // and/or sell copies of the Software, and to permit persons to whom the
12 // Software is furnished to do so, subject to the following conditions:
14 // The above copyright notice and this permission notice shall be included in
15 // all copies or substantial portions of the Software.
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23 // DEALINGS IN THE SOFTWARE.
25 #include "Toolbarmenu.hh"
31 class ToolbarPlacementmenu
: public bt::Menu
{
33 ToolbarPlacementmenu(bt::Application
&app
, unsigned int screen
,
39 void itemClicked(unsigned int id
, unsigned int button
);
54 Toolbarmenu::Toolbarmenu(bt::Application
&app
, unsigned int screen
,
56 : bt::Menu(app
, screen
), _bscreen(bscreen
)
58 setTitle(bt::toUnicode("Toolbar Options"));
61 ToolbarPlacementmenu
*menu
= new ToolbarPlacementmenu(app
, screen
, bscreen
);
62 insertItem(bt::toUnicode("Enable Toolbar"), EnableToolbar
);
64 insertItem(bt::toUnicode("Placement"), menu
, Placement
);
65 insertItem(bt::toUnicode("Always on top"), AlwaysOnTop
);
66 insertItem(bt::toUnicode("Auto Hide"), AutoHide
);
70 void Toolbarmenu::refresh(void) {
71 const ToolbarOptions
&options
= _bscreen
->resource().toolbarOptions();
72 setItemChecked(EnableToolbar
, options
.enabled
);
73 setItemChecked(AlwaysOnTop
, options
.always_on_top
);
74 setItemChecked(AutoHide
, options
.auto_hide
);
78 void Toolbarmenu::itemClicked(unsigned int id
, unsigned int button
) {
82 Toolbar
*toolbar
= _bscreen
->toolbar();
83 ToolbarOptions
&options
=
84 const_cast<ToolbarOptions
&>(_bscreen
->resource().toolbarOptions());
88 options
.enabled
= (toolbar
== 0);
89 _bscreen
->saveResource();
91 _bscreen
->destroyToolbar();
93 _bscreen
->createToolbar();
97 options
.always_on_top
= !options
.always_on_top
;
98 _bscreen
->saveResource();
100 StackingList::Layer new_layer
= (options
.always_on_top
101 ? StackingList::LayerAbove
102 : StackingList::LayerNormal
);
103 _bscreen
->stackingList().changeLayer(toolbar
, new_layer
);
104 _bscreen
->restackWindows();
109 options
.auto_hide
= !options
.auto_hide
;
110 _bscreen
->saveResource();
112 toolbar
->toggleAutoHide();
121 ToolbarPlacementmenu::ToolbarPlacementmenu(bt::Application
&app
,
124 : bt::Menu(app
, screen
), _bscreen(bscreen
)
126 setTitle(bt::toUnicode("Toolbar Placement"));
129 insertItem(bt::toUnicode("Top Left"), Toolbar::TopLeft
);
130 insertItem(bt::toUnicode("Top Center"), Toolbar::TopCenter
);
131 insertItem(bt::toUnicode("Top Right"), Toolbar::TopRight
);
133 insertItem(bt::toUnicode("Bottom Left"), Toolbar::BottomLeft
);
134 insertItem(bt::toUnicode("Bottom Center"), Toolbar::BottomCenter
);
135 insertItem(bt::toUnicode("Bottom Right"), Toolbar::BottomRight
);
139 void ToolbarPlacementmenu::refresh(void) {
140 const ToolbarOptions
&options
= _bscreen
->resource().toolbarOptions();
141 setItemChecked(Toolbar::TopLeft
,
142 options
.placement
== Toolbar::TopLeft
);
143 setItemChecked(Toolbar::TopCenter
,
144 options
.placement
== Toolbar::TopCenter
);
145 setItemChecked(Toolbar::TopRight
,
146 options
.placement
== Toolbar::TopRight
);
147 setItemChecked(Toolbar::BottomLeft
,
148 options
.placement
== Toolbar::BottomLeft
);
149 setItemChecked(Toolbar::BottomCenter
,
150 options
.placement
== Toolbar::BottomCenter
);
151 setItemChecked(Toolbar::BottomRight
,
152 options
.placement
== Toolbar::BottomRight
);
156 void ToolbarPlacementmenu::itemClicked(unsigned int id
, unsigned int button
) {
160 Toolbar
*toolbar
= _bscreen
->toolbar();
161 ToolbarOptions
&options
=
162 const_cast<ToolbarOptions
&>(_bscreen
->resource().toolbarOptions());
164 options
.placement
= id
;
166 toolbar
->setPlacement((Toolbar::Placement
) id
);
167 _bscreen
->saveResource();