X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fscreen.hh;h=a1f369569c1c81822bd38774d4336939f8b0672e;hb=62356a72a95a9f95b933f915f13b284e2be45274;hp=53fdffdd2c21e79938d32b6a4591428554267a35;hpb=db451d95bf97b8a8e995f031ac98da50606fd3a0;p=chaz%2Fopenbox diff --git a/src/screen.hh b/src/screen.hh index 53fdffdd..a1f36956 100644 --- a/src/screen.hh +++ b/src/screen.hh @@ -1,26 +1,4 @@ // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- -// Screen.hh for Blackbox - an X11 Window manager -// Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry -// 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 __Screen_hh #define __Screen_hh @@ -42,59 +20,35 @@ extern "C" { #include #include -#include "color.hh" -#include "texture.hh" -#include "image.hh" -#include "configmenu.hh" -#include "iconmenu.hh" -#include "netizen.hh" -#include "rootmenu.hh" +#include "otk/color.hh" +#include "otk/font.hh" +#include "otk/texture.hh" +#include "otk/image.hh" #include "timer.hh" #include "workspace.hh" -#include "workspacemenu.hh" #include "blackbox.hh" -class Slit; // forward reference -class BFont; +namespace ob { + class XAtom; struct Strut; enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify }; -#ifdef BITMAPBUTTONS struct PixmapMask { Pixmap mask; unsigned int w, h; }; -#endif // BITMAPBUTTONS struct WindowStyle { - BColor l_text_focus, l_text_unfocus, b_pic_focus, + otk::BColor l_text_focus, l_text_unfocus, b_pic_focus, b_pic_unfocus; - BTexture f_focus, f_unfocus, t_focus, t_unfocus, l_focus, l_unfocus, + otk::BTexture f_focus, f_unfocus, t_focus, t_unfocus, l_focus, l_unfocus, h_focus, h_unfocus, b_focus, b_unfocus, b_pressed, b_pressed_focus, b_pressed_unfocus, g_focus, g_unfocus; -#ifdef BITMAPBUTTONS PixmapMask close_button, max_button, icon_button, stick_button; -#endif // BITMAPBUTTONS - BFont *font; - - TextJustify justify; - - void doJustify(const std::string &text, int &start_pos, - unsigned int max_length, unsigned int modifier) const; -}; - -struct ToolbarStyle { - BColor l_text, w_text, c_text, b_pic; - BTexture toolbar, label, window, button, pressed, clock; - -#ifdef BITMAPBUTTONS - PixmapMask left_button, right_button; -#endif // BITMAPBUTTONS - - BFont *font; + otk::BFont *font; TextJustify justify; @@ -102,21 +56,7 @@ struct ToolbarStyle { unsigned int max_length, unsigned int modifier) const; }; -struct MenuStyle { - BColor t_text, f_text, h_text, d_text; - BTexture title, frame, hilite; - -#ifdef BITMAPBUTTONS - PixmapMask bullet_image, tick_image; -#endif // BITMAPBUTTONS - - BFont *t_font, *f_font; - - TextJustify t_justify, f_justify; - int bullet, bullet_pos; -}; - -class BScreen : public ScreenInfo { +class BScreen : public otk::ScreenInfo { private: bool root_colormap_installed, managed, geom_visible; GC opGC; @@ -124,32 +64,21 @@ private: Window geom_window; Blackbox *blackbox; - BImageControl *image_control; - Configmenu *configmenu; - Iconmenu *iconmenu; - Rootmenu *rootmenu; + otk::BImageControl *image_control; Configuration *config; XAtom *xatom; - typedef std::list RootmenuList; - RootmenuList rootmenuList; - - typedef std::list NetizenList; - NetizenList netizenList; BlackboxWindowList iconList, windowList; typedef std::vector WindowList; WindowList specialWindowList, desktopWindowList, systrayWindowList; - Slit *slit; - Toolbar *toolbar; Workspace *current_workspace; - Workspacemenu *workspacemenu; unsigned int geom_w, geom_h; unsigned long event_mask; - Rect usableArea; + otk::Rect usableArea; #ifdef XINERAMA RectList xineramaUsableArea; #endif // XINERAMA @@ -161,35 +90,26 @@ private: struct screen_resource { WindowStyle wstyle; - ToolbarStyle tstyle; - MenuStyle mstyle; bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither, opaque_move, full_max, focus_new, focus_last, click_raise, - allow_scroll_lock, hide_toolbar, window_corner_snap, aa_fonts, + allow_scroll_lock, window_corner_snap, aa_fonts, ignore_shaded, ignore_maximized, workspace_warping, shadow_fonts; int snap_to_windows, snap_to_edges; unsigned int snap_offset; - BColor border_color; + otk::BColor border_color; unsigned int workspaces; - int toolbar_placement, toolbar_width_percent, placement_policy, + int placement_policy, snap_threshold, row_direction, col_direction, root_scroll, resistance_size; unsigned int handle_width, bevel_width, frame_width, border_width, resize_zones; - unsigned int root_menu_button, workspace_menu_button; - -#ifdef HAVE_STRFTIME std::string strftime_format; -#else // !HAVE_STRFTIME - bool clock24hour; - int date_format; -#endif // HAVE_STRFTIME } resource; std::string screenstr; @@ -197,29 +117,30 @@ private: BScreen(const BScreen&); BScreen& operator=(const BScreen&); - bool parseMenuFile(FILE *file, Rootmenu *menu); - -#ifdef BITMAPBUTTONS void readDatabaseMask(const std::string &rname, PixmapMask &pixmapMask, const Configuration &style); -#endif // BITMAPBUTTONS - BTexture readDatabaseTexture(const std::string &rname, + otk::BTexture readDatabaseTexture(const std::string &rname, const std::string &default_color, const Configuration &style, bool allowNoTexture = false); - BColor readDatabaseColor(const std::string &rname, + otk::BColor readDatabaseColor(const std::string &rname, const std::string &default_color, const Configuration &style); - BFont *readDatabaseFont(const std::string &rbasename, - const Configuration &style); + otk::BFont *readDatabaseFont(const std::string &rbasename, + const Configuration &style); - void InitMenu(void); void LoadStyle(void); void updateWorkArea(void); + public: + // XXX: temporary + void updateNetizenWorkspaceCount(); + void updateNetizenWindowFocus(); + + enum { WindowNoSnap = 0, WindowSnap, WindowResistance }; enum { RowSmartPlacement = 1, ColSmartPlacement, CascadePlacement, UnderMousePlacement, ClickMousePlacement, LeftRight, RightLeft, @@ -248,7 +169,6 @@ public: inline bool doFullMax(void) const { return resource.full_max; } inline bool doFocusNew(void) const { return resource.focus_new; } inline bool doFocusLast(void) const { return resource.focus_last; } - inline bool doHideToolbar(void) const { return resource.hide_toolbar; } inline int getWindowToWindowSnap(void) const { return resource.snap_to_windows; } inline int getWindowToEdgeSnap(void) const @@ -259,27 +179,17 @@ public: inline bool doWorkspaceWarping(void) const { return resource.workspace_warping; } inline int rootScrollDirection(void) const { return resource.root_scroll; } - inline unsigned int rootMenuButton(void) const - { return resource.root_menu_button; } - inline unsigned int workspaceMenuButton(void) const - { return resource.workspace_menu_button; } inline const GC &getOpGC(void) const { return opGC; } inline Blackbox *getBlackbox(void) { return blackbox; } - inline BColor *getBorderColor(void) { return &resource.border_color; } - inline BImageControl *getImageControl(void) { return image_control; } - inline Rootmenu *getRootmenu(void) { return rootmenu; } - - inline Slit *getSlit(void) { return slit; } - inline Toolbar *getToolbar(void) { return toolbar; } + inline otk::BColor *getBorderColor(void) { return &resource.border_color; } + inline otk::BImageControl *getImageControl(void) { return image_control; } Workspace *getWorkspace(unsigned int index) const; inline Workspace *getCurrentWorkspace(void) { return current_workspace; } - inline Workspacemenu *getWorkspacemenu(void) { return workspacemenu; } - inline unsigned int getHandleWidth(void) const { return resource.handle_width; } inline unsigned int getBevelWidth(void) const @@ -335,7 +245,6 @@ public: void saveFullMax(bool f); void saveFocusNew(bool f); void saveFocusLast(bool f); - void saveHideToolbar(bool h); void saveWindowToEdgeSnap(int s); void saveWindowToWindowSnap(int s); void saveWindowCornerSnap(bool s); @@ -345,30 +254,18 @@ public: void saveAllowScrollLock(bool a); void saveWorkspaceWarping(bool w); void saveRootScrollDirection(int d); - void saveRootMenuButton(unsigned int b); - void saveWorkspaceMenuButton(unsigned int b); - inline void iconUpdate(void) { iconmenu->update(); } -#ifdef HAVE_STRFTIME inline const char *getStrftimeFormat(void) { return resource.strftime_format.c_str(); } void saveStrftimeFormat(const std::string& format); -#else // !HAVE_STRFTIME - inline int getDateFormat(void) { return resource.date_format; } - inline void saveDateFormat(int f); - inline bool isClock24Hour(void) { return resource.clock24hour; } - inline void saveClock24Hour(bool c); -#endif // HAVE_STRFTIME inline WindowStyle *getWindowStyle(void) { return &resource.wstyle; } - inline MenuStyle *getMenuStyle(void) { return &resource.mstyle; } - inline ToolbarStyle *getToolbarStyle(void) { return &resource.tstyle; } BlackboxWindow *getIcon(unsigned int index); // allAvailableAreas should be used whenever possible instead of this function // as then Xinerama will work correctly. - const Rect& availableArea(void) const; + const otk::Rect& availableArea(void) const; #ifdef XINERAMA const RectList& allAvailableAreas(void) const; #endif // XINERAMA @@ -381,9 +278,6 @@ public: void changeWorkspaceID(unsigned int id); void saveWorkspaceNames(void); - void addNetizen(Netizen *n); - void removeNetizen(Window w); - void addSystrayWindow(Window window); void removeSystrayWindow(Window window); @@ -406,27 +300,15 @@ public: void save_rc(void); void reconfigure(void); void toggleFocusModel(FocusModel model); - void rereadMenu(void); void shutdown(void); void showPosition(int x, int y); void showGeometry(unsigned int gx, unsigned int gy); void hideGeometry(void); - void showWorkspaceMenu(int x, int y); - void showRootMenu(int x, int y); - void buttonPressEvent(const XButtonEvent *xbutton); void propertyNotifyEvent(const XPropertyEvent *pe); - - void updateNetizenCurrentWorkspace(void); - void updateNetizenWorkspaceCount(void); - void updateNetizenWindowFocus(void); - void updateNetizenWindowAdd(Window w, unsigned long p); - void updateNetizenWindowDel(Window w); - void updateNetizenConfigNotify(XEvent *e); - void updateNetizenWindowRaise(Window w); - void updateNetizenWindowLower(Window w); }; +} #endif // __Screen_hh