no more menus, at last. woop
This commit is contained in:
parent
87e63d53af
commit
60b016b7fc
14 changed files with 0 additions and 2769 deletions
1034
src/Basemenu.cc
1034
src/Basemenu.cc
File diff suppressed because it is too large
Load diff
178
src/Basemenu.hh
178
src/Basemenu.hh
|
@ -1,178 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Basemenu.hh for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Basemenu_hh
|
|
||||||
#define __Basemenu_hh
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
}
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
class Blackbox;
|
|
||||||
class BImageControl;
|
|
||||||
class BScreen;
|
|
||||||
class BasemenuItem;
|
|
||||||
|
|
||||||
|
|
||||||
class Basemenu {
|
|
||||||
private:
|
|
||||||
typedef std::vector<BasemenuItem*> MenuItems;
|
|
||||||
MenuItems menuitems;
|
|
||||||
Blackbox *blackbox;
|
|
||||||
Basemenu *parent;
|
|
||||||
BImageControl *image_ctrl;
|
|
||||||
BScreen *screen;
|
|
||||||
|
|
||||||
bool moving, visible, movable, torn, internal_menu, title_vis, shifted,
|
|
||||||
hide_tree;
|
|
||||||
Display *display;
|
|
||||||
int which_sub, which_press, which_sbl, alignment;
|
|
||||||
|
|
||||||
struct _menu {
|
|
||||||
Pixmap frame_pixmap, title_pixmap, hilite_pixmap;
|
|
||||||
Window window, frame, title;
|
|
||||||
|
|
||||||
std::string label;
|
|
||||||
int x, y, x_move, y_move, x_shift, y_shift, sublevels, persub, minsub;
|
|
||||||
unsigned int width, height, title_h, frame_h, item_w, item_h, bevel_w,
|
|
||||||
bevel_h;
|
|
||||||
} menu;
|
|
||||||
|
|
||||||
Basemenu(const Basemenu&);
|
|
||||||
Basemenu& operator=(const Basemenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
inline void setTitleVisibility(bool b) { title_vis = b; }
|
|
||||||
inline void setMovable(bool b) { movable = b; }
|
|
||||||
inline void setHideTree(bool h) { hide_tree = h; }
|
|
||||||
inline void setMinimumSublevels(int m) { menu.minsub = m; }
|
|
||||||
|
|
||||||
virtual void itemSelected(int button, unsigned int index) = 0;
|
|
||||||
virtual void drawItem(int index, bool highlight = False, bool clear = False,
|
|
||||||
int x = -1, int y = -1,
|
|
||||||
unsigned int w = 0, unsigned int h = 0);
|
|
||||||
virtual void redrawTitle(void);
|
|
||||||
virtual void internal_hide(void);
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
Basemenu(BScreen *scrn);
|
|
||||||
virtual ~Basemenu(void);
|
|
||||||
|
|
||||||
inline bool isTorn(void) const { return torn; }
|
|
||||||
inline bool isVisible(void) const { return visible; }
|
|
||||||
|
|
||||||
inline BScreen *getScreen(void) { return screen; }
|
|
||||||
|
|
||||||
inline Window getWindowID(void) const { return menu.window; }
|
|
||||||
|
|
||||||
inline const char *getLabel(void) const { return menu.label.c_str(); }
|
|
||||||
|
|
||||||
int insert(BasemenuItem *item, int pos);
|
|
||||||
int insert(const std::string& label, int function = 0,
|
|
||||||
const std::string& exec = "", int pos = -1);
|
|
||||||
int insert(const std::string &label, Basemenu *submenu, int pos = -1);
|
|
||||||
int remove(int index);
|
|
||||||
|
|
||||||
void changeItemLabel(unsigned int index, const std::string& label);
|
|
||||||
|
|
||||||
inline int getX(void) const { return menu.x; }
|
|
||||||
inline int getY(void) const { return menu.y; }
|
|
||||||
inline unsigned int getCount(void) { return menuitems.size(); }
|
|
||||||
inline int getCurrentSubmenu(void) const { return which_sub; }
|
|
||||||
BasemenuItem *find(int index);
|
|
||||||
|
|
||||||
inline unsigned int getWidth(void) const { return menu.width; }
|
|
||||||
inline unsigned int getHeight(void) const { return menu.height; }
|
|
||||||
inline unsigned int getTitleHeight(void) const
|
|
||||||
{ return menu.title_h; }
|
|
||||||
|
|
||||||
inline void setInternalMenu(void) { internal_menu = True; }
|
|
||||||
inline void setAlignment(int a) { alignment = a; }
|
|
||||||
inline void setTorn(void) { torn = True; }
|
|
||||||
inline void removeParent(void)
|
|
||||||
{ if (internal_menu) parent = (Basemenu *) 0; }
|
|
||||||
|
|
||||||
bool hasSubmenu(int index);
|
|
||||||
bool isItemSelected(int index);
|
|
||||||
bool isItemEnabled(int index);
|
|
||||||
|
|
||||||
void buttonPressEvent(XButtonEvent *be);
|
|
||||||
void buttonReleaseEvent(XButtonEvent *be);
|
|
||||||
void motionNotifyEvent(XMotionEvent *me);
|
|
||||||
void enterNotifyEvent(XCrossingEvent *ce);
|
|
||||||
void leaveNotifyEvent(XCrossingEvent *ce);
|
|
||||||
void exposeEvent(XExposeEvent *ee);
|
|
||||||
void reconfigure(void);
|
|
||||||
void setLabel(const std::string& label);
|
|
||||||
void move(int x, int y);
|
|
||||||
void update(void);
|
|
||||||
void setItemSelected(int index, bool sel);
|
|
||||||
void setItemEnabled(int index, bool enable);
|
|
||||||
|
|
||||||
virtual void drawSubmenu(int index);
|
|
||||||
virtual void show(void);
|
|
||||||
virtual void hide(void);
|
|
||||||
|
|
||||||
enum { AlignDontCare = 1, AlignTop, AlignBottom };
|
|
||||||
enum { Right = 1, Left };
|
|
||||||
enum { Empty = 0, Square, Triangle, Diamond };
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class BasemenuItem {
|
|
||||||
private:
|
|
||||||
Basemenu *sub;
|
|
||||||
std::string l, e;
|
|
||||||
int f, enabled, selected;
|
|
||||||
|
|
||||||
friend class Basemenu;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
public:
|
|
||||||
BasemenuItem(const std::string& lp, int fp = 0, const std::string& ep = ""):
|
|
||||||
sub(0), l(lp), e(ep), f(fp), enabled(1), selected(0) {}
|
|
||||||
|
|
||||||
BasemenuItem(const std::string& lp, Basemenu *mp): sub(mp), l(lp),
|
|
||||||
f(0), enabled(1),
|
|
||||||
selected(0) {}
|
|
||||||
|
|
||||||
inline const char *exec(void) const { return e.c_str(); }
|
|
||||||
inline const char *label(void) const { return l.c_str(); }
|
|
||||||
inline int function(void) const { return f; }
|
|
||||||
inline Basemenu *submenu(void) { return sub; }
|
|
||||||
|
|
||||||
inline void newLabel(const std::string& label) { l = label; }
|
|
||||||
|
|
||||||
inline int isEnabled(void) const { return enabled; }
|
|
||||||
inline void setEnabled(int e) { enabled = e; }
|
|
||||||
inline int isSelected(void) const { return selected; }
|
|
||||||
inline void setSelected(int s) { selected = s; }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __Basemenu_hh
|
|
|
@ -1,59 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Clientmenu.cc for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "../config.h"
|
|
||||||
#endif // HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "blackbox.hh"
|
|
||||||
#include "Clientmenu.hh"
|
|
||||||
#include "Screen.hh"
|
|
||||||
#include "Window.hh"
|
|
||||||
#include "Workspace.hh"
|
|
||||||
#include "Workspacemenu.hh"
|
|
||||||
|
|
||||||
|
|
||||||
Clientmenu::Clientmenu(Workspace *ws) : Basemenu(ws->getScreen()) {
|
|
||||||
wkspc = ws;
|
|
||||||
|
|
||||||
setInternalMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Clientmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button > 2) return;
|
|
||||||
|
|
||||||
BlackboxWindow *win = wkspc->getWindow(index);
|
|
||||||
if (win) {
|
|
||||||
if (button == 1) {
|
|
||||||
if (! wkspc->isCurrent()) wkspc->setCurrent();
|
|
||||||
} else if (button == 2) {
|
|
||||||
if (! wkspc->isCurrent()) win->deiconify(True, False);
|
|
||||||
}
|
|
||||||
wkspc->raiseWindow(win);
|
|
||||||
win->setInputFocus();
|
|
||||||
}
|
|
||||||
|
|
||||||
Workspacemenu* wkspcmenu = wkspc->getScreen()->getWorkspacemenu();
|
|
||||||
if (! (wkspcmenu->isTorn() || isTorn())) hide();
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Clientmenu.hh for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Clientmenu_hh
|
|
||||||
#define __Clientmenu_hh
|
|
||||||
|
|
||||||
#include "Basemenu.hh"
|
|
||||||
class Workspace;
|
|
||||||
class BScreen;
|
|
||||||
|
|
||||||
class Clientmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Workspace *wkspc;
|
|
||||||
|
|
||||||
Clientmenu(const Clientmenu&);
|
|
||||||
Clientmenu& operator=(const Clientmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Clientmenu(Workspace *ws);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __Clientmenu_hh
|
|
||||||
|
|
|
@ -1,615 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
|
|
||||||
// Configmenu.cc for Blackbox - An X11 Window Manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "../config.h"
|
|
||||||
#endif // HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "i18n.hh"
|
|
||||||
#include "Configmenu.hh"
|
|
||||||
#include "Image.hh"
|
|
||||||
#include "Toolbar.hh"
|
|
||||||
#include "Window.hh"
|
|
||||||
#include "Screen.hh"
|
|
||||||
|
|
||||||
Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuConfigOptions, "Config Options"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
focusmenu = new Focusmenu(this);
|
|
||||||
placementmenu = new Placementmenu(this);
|
|
||||||
windowsnapmenu = new WindowToWindowSnapmenu(this);
|
|
||||||
edgesnapmenu = new WindowToEdgeSnapmenu(this);
|
|
||||||
#ifdef XINERAMA
|
|
||||||
xineramamenu = new Xineramamenu(this);
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
xftmenu = new Xftmenu(this);
|
|
||||||
#endif // XFT
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuFocusModel,
|
|
||||||
"Focus Model"), focusmenu);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowPlacement,
|
|
||||||
"Window Placement"), placementmenu);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowToWindowSnap,
|
|
||||||
"Window-To-Window Snapping"), windowsnapmenu);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowToEdgeSnap,
|
|
||||||
"Window-To-Edge Snapping"), edgesnapmenu);
|
|
||||||
#ifdef XINERAMA
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXineramaSupport,
|
|
||||||
"XineramaSupport"), xineramamenu);
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXftOptions,
|
|
||||||
"Xft Font Options"), xftmenu);
|
|
||||||
#endif // XINERAMA
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuImageDithering,
|
|
||||||
"Image Dithering"), 1);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuOpaqueMove,
|
|
||||||
"Opaque Window Moving"), 2);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWorkspaceWarping,
|
|
||||||
"Workspace Warping"), 3);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuFullMax,
|
|
||||||
"Full Maximization"), 4);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuFocusNew,
|
|
||||||
"Focus New Windows"), 5);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuFocusLast,
|
|
||||||
"Focus Last Window on Workspace"), 6);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuDisableBindings,
|
|
||||||
"Disable Mouse with Scroll Lock"), 7);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuHideToolbar,
|
|
||||||
"Hide Toolbar"), 8);
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::setValues(void) {
|
|
||||||
int index = 4;
|
|
||||||
#ifdef XINERAMA
|
|
||||||
++index;
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
++index;
|
|
||||||
#endif // XFT
|
|
||||||
setItemSelected(index++, getScreen()->doImageDither());
|
|
||||||
setItemSelected(index++, getScreen()->doOpaqueMove());
|
|
||||||
setItemSelected(index++, getScreen()->doWorkspaceWarping());
|
|
||||||
setItemSelected(index++, getScreen()->doFullMax());
|
|
||||||
setItemSelected(index++, getScreen()->doFocusNew());
|
|
||||||
setItemSelected(index++, getScreen()->doFocusLast());
|
|
||||||
setItemSelected(index++, getScreen()->allowScrollLock());
|
|
||||||
setItemSelected(index++, getScreen()->doHideToolbar());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Configmenu::~Configmenu(void) {
|
|
||||||
delete focusmenu;
|
|
||||||
delete placementmenu;
|
|
||||||
delete windowsnapmenu;
|
|
||||||
delete edgesnapmenu;
|
|
||||||
#ifdef XINERAMA
|
|
||||||
delete xineramamenu;
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
delete xftmenu;
|
|
||||||
#endif // XFT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch(item->function()) {
|
|
||||||
case 1: // dither
|
|
||||||
getScreen()->saveImageDither(! getScreen()->doImageDither());
|
|
||||||
setItemSelected(index, getScreen()->doImageDither());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // opaque move
|
|
||||||
getScreen()->saveOpaqueMove(! getScreen()->doOpaqueMove());
|
|
||||||
setItemSelected(index, getScreen()->doOpaqueMove());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // workspace wrapping
|
|
||||||
getScreen()->saveWorkspaceWarping(! getScreen()->doWorkspaceWarping());
|
|
||||||
setItemSelected(index, getScreen()->doWorkspaceWarping());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: // full maximization
|
|
||||||
getScreen()->saveFullMax(! getScreen()->doFullMax());
|
|
||||||
setItemSelected(index, getScreen()->doFullMax());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5: // focus new windows
|
|
||||||
getScreen()->saveFocusNew(! getScreen()->doFocusNew());
|
|
||||||
setItemSelected(index, getScreen()->doFocusNew());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6: // focus last window on workspace
|
|
||||||
getScreen()->saveFocusLast(! getScreen()->doFocusLast());
|
|
||||||
setItemSelected(index, getScreen()->doFocusLast());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 7: // disable mouse bindings with Scroll Lock
|
|
||||||
getScreen()->saveAllowScrollLock(! getScreen()->allowScrollLock());
|
|
||||||
setItemSelected(index, getScreen()->allowScrollLock());
|
|
||||||
getScreen()->reconfigure();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 8: // hide toolbar
|
|
||||||
getScreen()->saveHideToolbar(! getScreen()->doHideToolbar());
|
|
||||||
setItemSelected(index, getScreen()->doHideToolbar());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
focusmenu->reconfigure();
|
|
||||||
placementmenu->reconfigure();
|
|
||||||
windowsnapmenu->reconfigure();
|
|
||||||
edgesnapmenu->reconfigure();
|
|
||||||
#ifdef XINERAMA
|
|
||||||
xineramamenu->reconfigure();
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
xftmenu->reconfigure();
|
|
||||||
#endif // XFT
|
|
||||||
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Configmenu::Focusmenu::Focusmenu(Configmenu *cm) : Basemenu(cm->getScreen()) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuFocusModel, "Focus Model"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuClickToFocus, "Click To Focus"), 1);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuSloppyFocus, "Sloppy Focus"), 2);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuAutoRaise, "Auto Raise"), 3);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuClickRaise, "Click Raise"), 4);
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Focusmenu::setValues(void) {
|
|
||||||
setItemSelected(0, ! getScreen()->isSloppyFocus());
|
|
||||||
setItemSelected(1, getScreen()->isSloppyFocus());
|
|
||||||
setItemEnabled(2, getScreen()->isSloppyFocus());
|
|
||||||
setItemSelected(2, getScreen()->doAutoRaise());
|
|
||||||
setItemEnabled(3, getScreen()->isSloppyFocus());
|
|
||||||
setItemSelected(3, getScreen()->doClickRaise());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Focusmenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Focusmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case 1: // click to focus
|
|
||||||
getScreen()->toggleFocusModel(BScreen::ClickToFocus);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // sloppy focus
|
|
||||||
getScreen()->toggleFocusModel(BScreen::SloppyFocus);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // auto raise with sloppy focus
|
|
||||||
getScreen()->saveAutoRaise(! getScreen()->doAutoRaise());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: // click raise with sloppy focus
|
|
||||||
getScreen()->saveClickRaise(! getScreen()->doClickRaise());
|
|
||||||
// make sure the appropriate mouse buttons are grabbed on the windows
|
|
||||||
getScreen()->toggleFocusModel(BScreen::SloppyFocus);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Configmenu::Placementmenu::Placementmenu(Configmenu *cm):
|
|
||||||
Basemenu(cm->getScreen()) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuWindowPlacement, "Window Placement"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuSmartRows, "Smart Placement (Rows)"),
|
|
||||||
BScreen::RowSmartPlacement);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuSmartCols, "Smart Placement (Columns)"),
|
|
||||||
BScreen::ColSmartPlacement);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuCascade, "Cascade Placement"),
|
|
||||||
BScreen::CascadePlacement);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuUnderMouse, "Under Mouse Placement"),
|
|
||||||
BScreen::UnderMousePlacement);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuClickMouse, "Click Mouse Placement"),
|
|
||||||
BScreen::ClickMousePlacement);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuLeftRight, "Left to Right"),
|
|
||||||
BScreen::LeftRight);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuRightLeft, "Right to Left"),
|
|
||||||
BScreen::RightLeft);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuTopBottom, "Top to Bottom"),
|
|
||||||
BScreen::TopBottom);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuBottomTop, "Bottom to Top"),
|
|
||||||
BScreen::BottomTop);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuIgnoreShaded, "Ignore Shaded Windows"),
|
|
||||||
BScreen::IgnoreShaded);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuIgnoreMax,
|
|
||||||
"Ignore Full-Maximized Windows"),
|
|
||||||
BScreen::IgnoreMaximized);
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Placementmenu::setValues(void) {
|
|
||||||
int placement = getScreen()->getPlacementPolicy();
|
|
||||||
|
|
||||||
setItemSelected(0, placement == BScreen::RowSmartPlacement);
|
|
||||||
setItemSelected(1, placement == BScreen::ColSmartPlacement);
|
|
||||||
setItemSelected(2, placement == BScreen::CascadePlacement);
|
|
||||||
setItemSelected(3, placement == BScreen::UnderMousePlacement);
|
|
||||||
setItemSelected(4, placement == BScreen::ClickMousePlacement);
|
|
||||||
|
|
||||||
bool rl = (getScreen()->getRowPlacementDirection() == BScreen::LeftRight),
|
|
||||||
tb = (getScreen()->getColPlacementDirection() == BScreen::TopBottom),
|
|
||||||
e = (placement == BScreen::RowSmartPlacement ||
|
|
||||||
placement == BScreen::ColSmartPlacement);
|
|
||||||
|
|
||||||
setItemSelected(5, rl);
|
|
||||||
setItemSelected(6, ! rl);
|
|
||||||
setItemEnabled(5, e);
|
|
||||||
setItemEnabled(6, e);
|
|
||||||
|
|
||||||
setItemSelected(7, tb);
|
|
||||||
setItemSelected(8, ! tb);
|
|
||||||
setItemEnabled(7, e);
|
|
||||||
setItemEnabled(8, e);
|
|
||||||
|
|
||||||
setItemSelected(9, getScreen()->getPlaceIgnoreShaded());
|
|
||||||
setItemSelected(10, getScreen()->getPlaceIgnoreMaximized());
|
|
||||||
setItemEnabled(9, e);
|
|
||||||
setItemEnabled(10, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Placementmenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Placementmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case BScreen::RowSmartPlacement:
|
|
||||||
getScreen()->savePlacementPolicy(item->function());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::ColSmartPlacement:
|
|
||||||
getScreen()->savePlacementPolicy(item->function());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::CascadePlacement:
|
|
||||||
getScreen()->savePlacementPolicy(item->function());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::UnderMousePlacement:
|
|
||||||
getScreen()->savePlacementPolicy(item->function());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::ClickMousePlacement:
|
|
||||||
getScreen()->savePlacementPolicy(item->function());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::LeftRight:
|
|
||||||
getScreen()->saveRowPlacementDirection(BScreen::LeftRight);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::RightLeft:
|
|
||||||
getScreen()->saveRowPlacementDirection(BScreen::RightLeft);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::TopBottom:
|
|
||||||
getScreen()->saveColPlacementDirection(BScreen::TopBottom);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::BottomTop:
|
|
||||||
getScreen()->saveColPlacementDirection(BScreen::BottomTop);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::IgnoreShaded:
|
|
||||||
getScreen()->savePlaceIgnoreShaded(! getScreen()->getPlaceIgnoreShaded());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::IgnoreMaximized:
|
|
||||||
getScreen()->
|
|
||||||
savePlaceIgnoreMaximized(! getScreen()->getPlaceIgnoreMaximized());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Configmenu::WindowToWindowSnapmenu::WindowToWindowSnapmenu(Configmenu *cm) :
|
|
||||||
Basemenu(cm->getScreen()) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuWindowToWindowSnap,
|
|
||||||
"Window-To-Window Snapping"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnapNo, "No Snapping"), 1);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnap, "Edge Snapping"), 2);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoResistance,
|
|
||||||
"Edge Resistance"), 3);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowCornerSnap,
|
|
||||||
"Window Corner Snapping"), 4);
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::WindowToWindowSnapmenu::setValues(void) {
|
|
||||||
setItemSelected(0, (getScreen()->getWindowToWindowSnap() ==
|
|
||||||
BScreen::WindowNoSnap));
|
|
||||||
setItemSelected(1, (getScreen()->getWindowToWindowSnap() ==
|
|
||||||
BScreen::WindowSnap));
|
|
||||||
setItemSelected(2, (getScreen()->getWindowToWindowSnap() ==
|
|
||||||
BScreen::WindowResistance));
|
|
||||||
|
|
||||||
setItemEnabled(3, getScreen()->getWindowToWindowSnap());
|
|
||||||
setItemSelected(3, getScreen()->getWindowCornerSnap());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::WindowToWindowSnapmenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::WindowToWindowSnapmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case 1: // none
|
|
||||||
getScreen()->saveWindowToWindowSnap(BScreen::WindowNoSnap);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // edge snapping
|
|
||||||
getScreen()->saveWindowToWindowSnap(BScreen::WindowSnap);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // edge resistance
|
|
||||||
getScreen()->saveWindowToWindowSnap(BScreen::WindowResistance);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: // window corner snapping
|
|
||||||
getScreen()->saveWindowCornerSnap(! getScreen()->getWindowCornerSnap());
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Configmenu::WindowToEdgeSnapmenu::WindowToEdgeSnapmenu(Configmenu *cm) :
|
|
||||||
Basemenu(cm->getScreen()) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuWindowToEdgeSnap,
|
|
||||||
"Window-To-Edge Snapping"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnapNo, "No Snapping"), 1);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoSnap, "Edge Snapping"), 2);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuWindowDoResistance,
|
|
||||||
"Edge Resistance"), 3);
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::WindowToEdgeSnapmenu::setValues(void) {
|
|
||||||
setItemSelected(0, (getScreen()->getWindowToEdgeSnap() ==
|
|
||||||
BScreen::WindowNoSnap));
|
|
||||||
setItemSelected(1, (getScreen()->getWindowToEdgeSnap() ==
|
|
||||||
BScreen::WindowSnap));
|
|
||||||
setItemSelected(2, (getScreen()->getWindowToEdgeSnap() ==
|
|
||||||
BScreen::WindowResistance));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::WindowToEdgeSnapmenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::WindowToEdgeSnapmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case 1: // none
|
|
||||||
getScreen()->saveWindowToEdgeSnap(BScreen::WindowNoSnap);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // edge snapping
|
|
||||||
getScreen()->saveWindowToEdgeSnap(BScreen::WindowSnap);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // edge resistance
|
|
||||||
getScreen()->saveWindowToEdgeSnap(BScreen::WindowResistance);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef XINERAMA
|
|
||||||
Configmenu::Xineramamenu::Xineramamenu(Configmenu *cm):
|
|
||||||
Basemenu(cm->getScreen()) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuXineramaSupport, "Xinerama Support"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXineramaPlacement, "Window Placement"),
|
|
||||||
1);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXineramaMaximizing, "Window Maximizing"),
|
|
||||||
2);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXineramaSnapping, "Window Snapping"),
|
|
||||||
3);
|
|
||||||
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Xineramamenu::setValues(void) {
|
|
||||||
setItemSelected(0, getScreen()->getBlackbox()->doXineramaPlacement());
|
|
||||||
setItemSelected(1, getScreen()->getBlackbox()->doXineramaMaximizing());
|
|
||||||
setItemSelected(2, getScreen()->getBlackbox()->doXineramaSnapping());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Xineramamenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Xineramamenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
Blackbox *bb = getScreen()->getBlackbox();
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case 1: // window placement
|
|
||||||
bb->saveXineramaPlacement(! bb->doXineramaPlacement());
|
|
||||||
setItemSelected(0, bb->doXineramaPlacement());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // window maximizing
|
|
||||||
bb->saveXineramaMaximizing(! bb->doXineramaMaximizing());
|
|
||||||
setItemSelected(1, bb->doXineramaMaximizing());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: // window snapping
|
|
||||||
bb->saveXineramaSnapping(! bb->doXineramaSnapping());
|
|
||||||
setItemSelected(2, bb->doXineramaSnapping());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // XINERAMA
|
|
||||||
|
|
||||||
#ifdef XFT
|
|
||||||
Configmenu::Xftmenu::Xftmenu(Configmenu *cm):
|
|
||||||
Basemenu(cm->getScreen()) {
|
|
||||||
setLabel(i18n(ConfigmenuSet, ConfigmenuXftOptions, "Xft Font Options"));
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXftAA, "Anti-Alias Text"), 1);
|
|
||||||
insert(i18n(ConfigmenuSet, ConfigmenuXftShadow, "Drop Shadows Under Text"),
|
|
||||||
2);
|
|
||||||
|
|
||||||
update();
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Xftmenu::setValues(void) {
|
|
||||||
setItemSelected(0, getScreen()->doAAFonts());
|
|
||||||
setItemEnabled(1, getScreen()->doAAFonts());
|
|
||||||
setItemSelected(1, getScreen()->doShadowFonts());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Xftmenu::reconfigure(void) {
|
|
||||||
setValues();
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Configmenu::Xftmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case 1: // anti-alias text
|
|
||||||
getScreen()->saveAAFonts(! getScreen()->doAAFonts());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // drop shadows
|
|
||||||
getScreen()->saveShadowFonts(! getScreen()->doShadowFonts());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
setValues();
|
|
||||||
}
|
|
||||||
#endif // XFT
|
|
|
@ -1,163 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Configmenu.hh for Blackbox - An X11 Window Manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Configmenu_hh
|
|
||||||
#define __Configmenu_hh
|
|
||||||
|
|
||||||
#include "Basemenu.hh"
|
|
||||||
|
|
||||||
// forward declaration
|
|
||||||
class Blackbox;
|
|
||||||
class BScreen;
|
|
||||||
class Configmenu;
|
|
||||||
|
|
||||||
class Configmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
class Focusmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Focusmenu(const Focusmenu&);
|
|
||||||
Focusmenu& operator=(const Focusmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Focusmenu(Configmenu *cm);
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
class Placementmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Placementmenu(const Placementmenu&);
|
|
||||||
Placementmenu& operator=(const Placementmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Placementmenu(Configmenu *cm);
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
class WindowToWindowSnapmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
WindowToWindowSnapmenu(const WindowToWindowSnapmenu&);
|
|
||||||
WindowToWindowSnapmenu& operator=(const WindowToWindowSnapmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
WindowToWindowSnapmenu(Configmenu *cm);
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
class WindowToEdgeSnapmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
WindowToEdgeSnapmenu(const WindowToEdgeSnapmenu&);
|
|
||||||
WindowToEdgeSnapmenu& operator=(const WindowToEdgeSnapmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
WindowToEdgeSnapmenu(Configmenu *cm);
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef XINERAMA
|
|
||||||
class Xineramamenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Xineramamenu(const Xineramamenu&);
|
|
||||||
Xineramamenu& operator=(const Xineramamenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Xineramamenu(Configmenu *cm);
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
#endif // XINERAMA
|
|
||||||
|
|
||||||
#ifdef XFT
|
|
||||||
class Xftmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Xftmenu(const Xftmenu&);
|
|
||||||
Xftmenu& operator=(const Xftmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Xftmenu(Configmenu *cm);
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
#endif // XFT
|
|
||||||
|
|
||||||
Focusmenu *focusmenu;
|
|
||||||
Placementmenu *placementmenu;
|
|
||||||
WindowToWindowSnapmenu *windowsnapmenu;
|
|
||||||
WindowToEdgeSnapmenu *edgesnapmenu;
|
|
||||||
#ifdef XINERAMA
|
|
||||||
Xineramamenu *xineramamenu;
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
Xftmenu *xftmenu;
|
|
||||||
#endif // XFT
|
|
||||||
|
|
||||||
// friend class Focusmenu;
|
|
||||||
// friend class Placementmenu;
|
|
||||||
|
|
||||||
Configmenu(const Configmenu&);
|
|
||||||
Configmenu& operator=(const Configmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
virtual void setValues(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Configmenu(BScreen *scr);
|
|
||||||
virtual ~Configmenu(void);
|
|
||||||
|
|
||||||
inline Basemenu *getFocusmenu(void) { return focusmenu; }
|
|
||||||
inline Basemenu *getPlacementmenu(void) { return placementmenu; }
|
|
||||||
inline Basemenu *getWindowSnapmenu(void) { return windowsnapmenu; }
|
|
||||||
inline Basemenu *getEdgeSnapmenu(void) { return edgesnapmenu; }
|
|
||||||
#ifdef XINERAMA
|
|
||||||
inline Basemenu *getXineramamenu(void) { return xineramamenu; }
|
|
||||||
#endif // XINERAMA
|
|
||||||
#ifdef XFT
|
|
||||||
inline Basemenu *getXftmenu(void) { return xftmenu; }
|
|
||||||
#endif // XFT
|
|
||||||
|
|
||||||
virtual void reconfigure(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // __Configmenu_hh
|
|
|
@ -1,57 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Icon.cc for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "../config.h"
|
|
||||||
#endif // HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "i18n.hh"
|
|
||||||
#include "Iconmenu.hh"
|
|
||||||
#include "Screen.hh"
|
|
||||||
#include "Window.hh"
|
|
||||||
|
|
||||||
|
|
||||||
Iconmenu::Iconmenu(BScreen *scrn) : Basemenu(scrn) {
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
setLabel(i18n(IconSet, IconIcons, "Icons"));
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Iconmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (index < getScreen()->getIconCount()) {
|
|
||||||
BlackboxWindow *win = getScreen()->getIcon(index);
|
|
||||||
|
|
||||||
if (win) {
|
|
||||||
win->deiconify();
|
|
||||||
win->setInputFocus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! (getScreen()->getWorkspacemenu()->isTorn() || isTorn()))
|
|
||||||
hide();
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Icon.hh for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Icon_hh
|
|
||||||
#define __Icon_hh
|
|
||||||
|
|
||||||
#include "Basemenu.hh"
|
|
||||||
|
|
||||||
// forward declaration
|
|
||||||
class Iconmenu;
|
|
||||||
class BScreen;
|
|
||||||
|
|
||||||
class Iconmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Iconmenu(const Iconmenu&);
|
|
||||||
Iconmenu& operator=(const Iconmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Iconmenu(BScreen *scrn);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __Icon_hh
|
|
|
@ -1,96 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Rootmenu.cc for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "../config.h"
|
|
||||||
#endif // HAVE_CONFIG_H
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
#ifdef HAVE_STDIO_H
|
|
||||||
# include <stdio.h>
|
|
||||||
#endif // HAVE_STDIO_H
|
|
||||||
|
|
||||||
#ifdef HAVE_STDLIB_H
|
|
||||||
# include <stdlib.h>
|
|
||||||
#endif // HAVE_STDLIB_H
|
|
||||||
|
|
||||||
#ifdef HAVE_STRING_H
|
|
||||||
# include <string.h>
|
|
||||||
#endif // HAVE_STRING_H
|
|
||||||
|
|
||||||
#ifdef HAVE_SYS_PARAM_H
|
|
||||||
# include <sys/param.h>
|
|
||||||
#endif // HAVE_SYS_PARAM_H
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "blackbox.hh"
|
|
||||||
#include "Rootmenu.hh"
|
|
||||||
#include "Screen.hh"
|
|
||||||
#include "Util.hh"
|
|
||||||
|
|
||||||
|
|
||||||
Rootmenu::Rootmenu(BScreen *scrn) : Basemenu(scrn) { }
|
|
||||||
|
|
||||||
|
|
||||||
void Rootmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
if (! item->function())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (! (getScreen()->getRootmenu()->isTorn() || isTorn()) &&
|
|
||||||
item->function() != BScreen::Reconfigure &&
|
|
||||||
item->function() != BScreen::SetStyle)
|
|
||||||
hide();
|
|
||||||
|
|
||||||
switch (item->function()) {
|
|
||||||
case BScreen::Execute:
|
|
||||||
if (item->exec())
|
|
||||||
bexec(item->exec(), getScreen()->displayString());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::Restart:
|
|
||||||
getScreen()->getBlackbox()->restart();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::RestartOther:
|
|
||||||
if (item->exec())
|
|
||||||
getScreen()->getBlackbox()->restart(item->exec());
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::Exit:
|
|
||||||
getScreen()->getBlackbox()->shutdown();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::SetStyle:
|
|
||||||
if (item->exec())
|
|
||||||
getScreen()->getBlackbox()->saveStyleFilename(item->exec());
|
|
||||||
|
|
||||||
case BScreen::Reconfigure:
|
|
||||||
getScreen()->getBlackbox()->reconfigure();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Rootmenu.hh for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Rootmenu_hh
|
|
||||||
#define __Rootmenu_hh
|
|
||||||
|
|
||||||
// forward declarations
|
|
||||||
class BScreen;
|
|
||||||
|
|
||||||
#include "Basemenu.hh"
|
|
||||||
|
|
||||||
|
|
||||||
class Rootmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Rootmenu(const Rootmenu&);
|
|
||||||
Rootmenu& operator=(const Rootmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Rootmenu(BScreen *scrn);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __Rootmenu_hh
|
|
||||||
|
|
|
@ -1,208 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Windowmenu.cc for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "../config.h"
|
|
||||||
#endif // HAVE_CONFIG_H
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
#ifdef HAVE_STRING_H
|
|
||||||
# include <string.h>
|
|
||||||
#endif // HAVE_STRING_H
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "i18n.hh"
|
|
||||||
#include "blackbox.hh"
|
|
||||||
#include "Screen.hh"
|
|
||||||
#include "Window.hh"
|
|
||||||
#include "Windowmenu.hh"
|
|
||||||
#include "Workspace.hh"
|
|
||||||
|
|
||||||
|
|
||||||
Windowmenu::Windowmenu(BlackboxWindow *win) : Basemenu(win->getScreen()) {
|
|
||||||
window = win;
|
|
||||||
|
|
||||||
setTitleVisibility(False);
|
|
||||||
setMovable(False);
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
sendToMenu = new SendtoWorkspacemenu(this);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuSendTo, "Send To ..."),
|
|
||||||
sendToMenu);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuShade, "Shade"),
|
|
||||||
BScreen::WindowShade);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuIconify, "Iconify"),
|
|
||||||
BScreen::WindowIconify);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuMaximize, "Maximize"),
|
|
||||||
BScreen::WindowMaximize);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuRaise,"Raise"),
|
|
||||||
BScreen::WindowRaise);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuLower, "Lower"),
|
|
||||||
BScreen::WindowLower);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuStick, "Stick"),
|
|
||||||
BScreen::WindowStick);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuKillClient, "Kill Client"),
|
|
||||||
BScreen::WindowKill);
|
|
||||||
insert(i18n(WindowmenuSet, WindowmenuClose, "Close"),
|
|
||||||
BScreen::WindowClose);
|
|
||||||
|
|
||||||
update();
|
|
||||||
|
|
||||||
setItemEnabled(1, window->hasTitlebar());
|
|
||||||
setItemEnabled(2, window->isIconifiable());
|
|
||||||
setItemEnabled(3, window->isMaximizable());
|
|
||||||
setItemEnabled(8, window->isClosable());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Windowmenu::~Windowmenu(void) {
|
|
||||||
delete sendToMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Windowmenu::show(void) {
|
|
||||||
if (isItemEnabled(1)) setItemSelected(1, window->isShaded());
|
|
||||||
if (isItemEnabled(3)) setItemSelected(3, window->isMaximized());
|
|
||||||
if (isItemEnabled(6)) setItemSelected(6, window->isStuck());
|
|
||||||
|
|
||||||
Basemenu::show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Windowmenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
BasemenuItem *item = find(index);
|
|
||||||
|
|
||||||
hide();
|
|
||||||
switch (item->function()) {
|
|
||||||
case BScreen::WindowShade:
|
|
||||||
window->shade();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowIconify:
|
|
||||||
window->iconify();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowMaximize:
|
|
||||||
window->maximize(1); // full maximize
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowClose:
|
|
||||||
window->close();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowRaise: {
|
|
||||||
Workspace *wkspc =
|
|
||||||
getScreen()->getWorkspace(window->getWorkspaceNumber());
|
|
||||||
wkspc->raiseWindow(window);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowLower: {
|
|
||||||
Workspace *wkspc =
|
|
||||||
getScreen()->getWorkspace(window->getWorkspaceNumber());
|
|
||||||
wkspc->lowerWindow(window);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowStick:
|
|
||||||
window->stick();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BScreen::WindowKill:
|
|
||||||
XKillClient(getScreen()->getBaseDisplay()->getXDisplay(),
|
|
||||||
window->getClientWindow());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Windowmenu::reconfigure(void) {
|
|
||||||
setItemEnabled(1, window->hasTitlebar());
|
|
||||||
setItemEnabled(2, window->isIconifiable());
|
|
||||||
setItemEnabled(3, window->isMaximizable());
|
|
||||||
setItemEnabled(8, window->isClosable());
|
|
||||||
|
|
||||||
sendToMenu->reconfigure();
|
|
||||||
|
|
||||||
Basemenu::reconfigure();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Windowmenu::SendtoWorkspacemenu::SendtoWorkspacemenu(Windowmenu *w)
|
|
||||||
: Basemenu(w->getScreen()) {
|
|
||||||
|
|
||||||
window = w->window;
|
|
||||||
|
|
||||||
setTitleVisibility(False);
|
|
||||||
setMovable(False);
|
|
||||||
setInternalMenu();
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Windowmenu::SendtoWorkspacemenu::itemSelected(int button,
|
|
||||||
unsigned int index) {
|
|
||||||
if (button > 2) return;
|
|
||||||
|
|
||||||
if (index <= getScreen()->getWorkspaceCount()) {
|
|
||||||
if (index == getScreen()->getCurrentWorkspaceID()) return;
|
|
||||||
if (window->isStuck()) window->stick();
|
|
||||||
|
|
||||||
if (button == 1) window->withdraw();
|
|
||||||
getScreen()->reassociateWindow(window, index, True);
|
|
||||||
if (button == 2) getScreen()->changeWorkspaceID(index);
|
|
||||||
}
|
|
||||||
hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Windowmenu::SendtoWorkspacemenu::update(void) {
|
|
||||||
unsigned int i, r = getCount(),
|
|
||||||
workspace_count = getScreen()->getWorkspaceCount();
|
|
||||||
while (r > workspace_count) {
|
|
||||||
remove(0);
|
|
||||||
r = getCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < workspace_count; ++i) {
|
|
||||||
if (r < workspace_count) {
|
|
||||||
insert(getScreen()->getWorkspace(i)->getName());
|
|
||||||
++r;
|
|
||||||
} else {
|
|
||||||
changeItemLabel(i, getScreen()->getWorkspace(i)->getName());
|
|
||||||
setItemEnabled(i, i != getScreen()->getCurrentWorkspaceID());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Basemenu::update();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Windowmenu::SendtoWorkspacemenu::show(void) {
|
|
||||||
update();
|
|
||||||
|
|
||||||
Basemenu::show();
|
|
||||||
}
|
|
|
@ -1,79 +0,0 @@
|
||||||
// Windowmenu.hh for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Windowmenu_hh
|
|
||||||
#define __Windowmenu_hh
|
|
||||||
|
|
||||||
#include "Basemenu.hh"
|
|
||||||
|
|
||||||
// forward declaration
|
|
||||||
class Windowmenu;
|
|
||||||
class SendtoWorkspaceMenu;
|
|
||||||
|
|
||||||
class BlackboxWindow;
|
|
||||||
|
|
||||||
class Windowmenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
BlackboxWindow *window;
|
|
||||||
|
|
||||||
class SendtoWorkspacemenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
BlackboxWindow *window;
|
|
||||||
SendtoWorkspacemenu(const SendtoWorkspacemenu&);
|
|
||||||
SendtoWorkspacemenu& operator=(const SendtoWorkspacemenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
|
|
||||||
public:
|
|
||||||
SendtoWorkspacemenu(Windowmenu *w);
|
|
||||||
|
|
||||||
void update(void);
|
|
||||||
|
|
||||||
virtual void show(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
SendtoWorkspacemenu *sendToMenu;
|
|
||||||
|
|
||||||
friend class SendtoWorkspacemenu;
|
|
||||||
|
|
||||||
Windowmenu(const Windowmenu&);
|
|
||||||
Windowmenu& operator=(const Windowmenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
Windowmenu(BlackboxWindow *win);
|
|
||||||
virtual ~Windowmenu(void);
|
|
||||||
|
|
||||||
inline Basemenu *getSendToMenu(void) { return (Basemenu *) sendToMenu; }
|
|
||||||
|
|
||||||
void reconfigure(void);
|
|
||||||
void setClosable(void);
|
|
||||||
|
|
||||||
virtual void show(void);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __Windowmenu_hh
|
|
|
@ -1,88 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// Workspacemenu.cc for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "../config.h"
|
|
||||||
#endif // HAVE_CONFIG_H
|
|
||||||
|
|
||||||
#include "i18n.hh"
|
|
||||||
#include "blackbox.hh"
|
|
||||||
#include "Clientmenu.hh"
|
|
||||||
#include "Screen.hh"
|
|
||||||
#include "Toolbar.hh"
|
|
||||||
#include "Workspacemenu.hh"
|
|
||||||
#include "Workspace.hh"
|
|
||||||
|
|
||||||
|
|
||||||
Workspacemenu::Workspacemenu(BScreen *scrn) : Basemenu(scrn) {
|
|
||||||
setInternalMenu();
|
|
||||||
|
|
||||||
setLabel(i18n(WorkspacemenuSet, WorkspacemenuWorkspacesTitle, "Workspaces"));
|
|
||||||
insert(i18n(WorkspacemenuSet, WorkspacemenuNewWorkspace, "New Workspace"));
|
|
||||||
insert(i18n(WorkspacemenuSet, WorkspacemenuRemoveLast, "Remove Last"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Workspacemenu::itemSelected(int button, unsigned int index) {
|
|
||||||
if (button != 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (index == 0) {
|
|
||||||
getScreen()->addWorkspace();
|
|
||||||
} else if (index == 1) {
|
|
||||||
getScreen()->removeLastWorkspace();
|
|
||||||
} else {
|
|
||||||
// subtract 2 because the workspace menu has 2 extra items at the top before
|
|
||||||
// the list of the workspace names
|
|
||||||
index -= 2;
|
|
||||||
const Workspace* const wkspc = getScreen()->getCurrentWorkspace();
|
|
||||||
if (wkspc->getID() != index && index < getScreen()->getWorkspaceCount())
|
|
||||||
getScreen()->changeWorkspaceID(index);
|
|
||||||
}
|
|
||||||
if (! (getScreen()->getWorkspacemenu()->isTorn() || isTorn()))
|
|
||||||
hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Workspacemenu::changeWorkspaceLabel(unsigned int index,
|
|
||||||
const std::string& label) {
|
|
||||||
// add 2 because the workspace menu has 2 extra items at the top before the
|
|
||||||
// list of the workspace names
|
|
||||||
changeItemLabel(index + 2, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Workspacemenu::insertWorkspace(Workspace *wkspc) {
|
|
||||||
assert(wkspc);
|
|
||||||
// add 2 because the workspace menu has 2 extra items at the top before the
|
|
||||||
// list of the workspace names
|
|
||||||
insert(wkspc->getName(), wkspc->getMenu(), wkspc->getID() + 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Workspacemenu::removeWorkspace(Workspace *wkspc) {
|
|
||||||
assert(wkspc);
|
|
||||||
// add 2 because the workspace menu has 2 extra items at the top before the
|
|
||||||
// list of the workspace names
|
|
||||||
remove(wkspc->getID() + 2);
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
// -*- mode: C++; indent-tabs-mode: nil; -*-
|
|
||||||
// WorkspaceMenu.hh for Blackbox - an X11 Window manager
|
|
||||||
// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh@debian.org>
|
|
||||||
// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
// copy of this software and associated documentation files (the "Software"),
|
|
||||||
// to deal in the Software without restriction, including without limitation
|
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
// and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
// Software is furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
// DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
#ifndef __Workspacemenu_hh
|
|
||||||
#define __Workspacemenu_hh
|
|
||||||
|
|
||||||
#include "Basemenu.hh"
|
|
||||||
|
|
||||||
// forward declaration
|
|
||||||
class Workspacemenu;
|
|
||||||
class Toolbar;
|
|
||||||
class Workspace;
|
|
||||||
|
|
||||||
class Workspacemenu : public Basemenu {
|
|
||||||
private:
|
|
||||||
Workspacemenu(const Workspacemenu&);
|
|
||||||
Workspacemenu& operator=(const Workspacemenu&);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void itemSelected(int button, unsigned int index);
|
|
||||||
|
|
||||||
public:
|
|
||||||
Workspacemenu(BScreen *scrn);
|
|
||||||
|
|
||||||
void changeWorkspaceLabel(unsigned int index, const std::string& label);
|
|
||||||
void insertWorkspace(Workspace *wkspc);
|
|
||||||
void removeWorkspace(Workspace *wkspc);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __Workspacemenu_hh
|
|
||||||
|
|
Loading…
Reference in a new issue