X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FScreen.hh;h=4de9daa2da45471c01c7b1758345165ebdfe7aef;hb=20bc088a998a362977233086577d74d00eea8765;hp=7a75ac623516b127b6c9e25a9d4d190735428de2;hpb=8794d357e67abddf9fda9db77b235e294d0ec590;p=chaz%2Fopenbox diff --git a/src/Screen.hh b/src/Screen.hh index 7a75ac62..4de9daa2 100644 --- a/src/Screen.hh +++ b/src/Screen.hh @@ -26,7 +26,6 @@ extern "C" { #include -#include #ifdef TIME_WITH_SYS_TIME # include @@ -45,6 +44,7 @@ extern "C" { #include "Color.hh" #include "Texture.hh" +#include "Image.hh" #include "Configmenu.hh" #include "Iconmenu.hh" #include "Netizen.hh" @@ -53,7 +53,10 @@ extern "C" { #include "Workspace.hh" #include "Workspacemenu.hh" #include "blackbox.hh" + class Slit; // forward reference +class BFont; +class XAtom; enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify }; @@ -63,37 +66,31 @@ struct WindowStyle { BTexture t_focus, t_unfocus, l_focus, l_unfocus, h_focus, h_unfocus, b_focus, b_unfocus, b_pressed, g_focus, g_unfocus; - XFontSet fontset; - XFontSetExtents *fontset_extents; - XFontStruct *font; + BFont *font; TextJustify justify; - int doJustify(const char *text, int &start_pos, unsigned int max_length, - unsigned int modifier, bool multibyte) const; + 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; - XFontSet fontset; - XFontSetExtents *fontset_extents; - XFontStruct *font; + BFont *font; TextJustify justify; - int doJustify(const char *text, int &start_pos, unsigned int max_length, - unsigned int modifier, bool multibyte) const; + void doJustify(const std::string &text, int &start_pos, + unsigned int max_length, unsigned int modifier) const; }; struct MenuStyle { BColor t_text, f_text, h_text, d_text; BTexture title, frame, hilite; - XFontSet t_fontset, f_fontset; - XFontSetExtents *t_fontset_extents, *f_fontset_extents; - XFontStruct *t_font, *f_font; + BFont *t_font, *f_font; TextJustify t_justify, f_justify; int bullet, bullet_pos; @@ -117,6 +114,8 @@ private: Configmenu *configmenu; Iconmenu *iconmenu; Rootmenu *rootmenu; + Configuration *config; + XAtom *xatom; typedef std::list RootmenuList; RootmenuList rootmenuList; @@ -125,6 +124,9 @@ private: NetizenList netizenList; BlackboxWindowList iconList, windowList; + typedef std::vector WindowList; + WindowList desktopWindowList, systrayWindowList; + Slit *slit; Toolbar *toolbar; Workspace *current_workspace; @@ -137,8 +139,6 @@ private: typedef std::list StrutList; StrutList strutList; - typedef std::vector WorkspaceNamesList; - WorkspaceNamesList workspaceNames; typedef std::vector WorkspaceList; WorkspaceList workspacesList; @@ -147,19 +147,15 @@ private: ToolbarStyle tstyle; MenuStyle mstyle; - bool toolbar_on_top, toolbar_auto_hide, sloppy_focus, auto_raise, - auto_edge_balance, image_dither, ordered_dither, opaque_move, full_max, - focus_new, focus_last, click_raise; + bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither, + opaque_move, full_max, focus_new, focus_last, click_raise, + hide_toolbar, window_to_window_snap, window_corner_snap, aa_fonts; BColor border_color; - XrmDatabase stylerc; unsigned int workspaces; int toolbar_placement, toolbar_width_percent, placement_policy, edge_snap_threshold, row_direction, col_direction; - bool slit_on_top, slit_auto_hide; - int slit_placement, slit_direction; - unsigned int handle_width, bevel_width, frame_width, border_width; #ifdef HAVE_STRFTIME @@ -170,6 +166,7 @@ private: #endif // HAVE_STRFTIME } resource; + std::string screenstr; BScreen(const BScreen&); BScreen& operator=(const BScreen&); @@ -177,24 +174,21 @@ private: bool parseMenuFile(FILE *file, Rootmenu *menu); BTexture readDatabaseTexture(const std::string &rname, - const std::string &rclass, - const std::string &default_color); + const std::string &default_color, + const Configuration &style); BColor readDatabaseColor(const std::string &rname, - const std::string &rclass, - const std::string &default_color); - XFontSet readDatabaseFontSet(const std::string &rname, - const std::string &rclass); - XFontStruct *readDatabaseFont(const std::string &rname, - const std::string &rclass); - XFontSet createFontSet(const std::string &fontname); + const std::string &default_color, + const Configuration &style); + BFont *readDatabaseFont(const std::string &rbasename, + const Configuration &style); void InitMenu(void); void LoadStyle(void); - + void updateWorkArea(void); public: - enum { RowSmartPlacement = 1, ColSmartPlacement, CascadePlacement, LeftRight, - RightLeft, TopBottom, BottomTop }; + enum { RowSmartPlacement = 1, ColSmartPlacement, CascadePlacement, + UnderMousePlacement, LeftRight, RightLeft, TopBottom, BottomTop }; enum { RoundBullet = 1, TriangleBullet, SquareBullet, NoBullet }; enum { Restart = 1, RestartOther, Exit, Shutdown, Execute, Reconfigure, WindowShade, WindowIconify, WindowMaximize, WindowClose, WindowRaise, @@ -204,25 +198,24 @@ public: BScreen(Blackbox *bb, unsigned int scrn); ~BScreen(void); - inline bool isToolbarOnTop(void) const - { return resource.toolbar_on_top; } - inline bool doToolbarAutoHide(void) const - { return resource.toolbar_auto_hide; } - inline bool isSloppyFocus(void) const - { return resource.sloppy_focus; } + inline bool isSloppyFocus(void) const { return resource.sloppy_focus; } inline bool isRootColormapInstalled(void) const { return root_colormap_installed; } inline bool doAutoRaise(void) const { return resource.auto_raise; } inline bool doClickRaise(void) const { return resource.click_raise; } inline bool isScreenManaged(void) const { return managed; } - inline bool doImageDither(void) const - { return resource.image_dither; } - inline bool doOrderedDither(void) const - { return resource.ordered_dither; } + inline bool doAAFonts(void) const { return resource.aa_fonts; } + inline bool doImageDither(void) const { return image_control->doDither(); } + inline bool doOrderedDither(void) const { return resource.ordered_dither; } inline bool doOpaqueMove(void) const { return resource.opaque_move; } 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 bool getWindowToWindowSnap(void) const + { return resource.window_to_window_snap; } + inline bool getWindowCornerSnap(void) const + { return resource.window_corner_snap; } inline const GC &getOpGC(void) const { return opGC; } @@ -231,19 +224,7 @@ public: inline BImageControl *getImageControl(void) { return image_control; } inline Rootmenu *getRootmenu(void) { return rootmenu; } - inline bool isSlitOnTop(void) const { return resource.slit_on_top; } - inline bool doSlitAutoHide(void) const - { return resource.slit_auto_hide; } inline Slit *getSlit(void) { return slit; } - inline int getSlitPlacement(void) const - { return resource.slit_placement; } - inline int getSlitDirection(void) const - { return resource.slit_direction; } - inline void saveSlitPlacement(int p) { resource.slit_placement = p; } - inline void saveSlitDirection(int d) { resource.slit_direction = d; } - inline void saveSlitOnTop(bool t) { resource.slit_on_top = t; } - inline void saveSlitAutoHide(bool t) { resource.slit_auto_hide = t; } - inline Toolbar *getToolbar(void) { return toolbar; } Workspace *getWorkspace(unsigned int index); @@ -268,10 +249,6 @@ public: inline unsigned int getIconCount(void) { return iconList.size(); } inline unsigned int getNumberOfWorkspaces(void) const { return resource.workspaces; } - inline int getToolbarPlacement(void) const - { return resource.toolbar_placement; } - inline int getToolbarWidthPercent(void) const - { return resource.toolbar_width_percent; } inline int getPlacementPolicy(void) const { return resource.placement_policy; } inline int getEdgeSnapThreshold(void) const @@ -282,25 +259,23 @@ public: { return resource.col_direction; } inline void setRootColormapInstalled(bool r) { root_colormap_installed = r; } - inline void saveSloppyFocus(bool s) { resource.sloppy_focus = s; } - inline void saveAutoRaise(bool a) { resource.auto_raise = a; } - inline void saveClickRaise(bool c) { resource.click_raise = c; } - inline void saveWorkspaces(unsigned int w) { resource.workspaces = w; } - inline void saveToolbarOnTop(bool r) { resource.toolbar_on_top = r; } - inline void saveToolbarAutoHide(bool r) { resource.toolbar_auto_hide = r; } - inline void saveToolbarWidthPercent(int w) - { resource.toolbar_width_percent = w; } - inline void saveToolbarPlacement(int p) { resource.toolbar_placement = p; } - inline void savePlacementPolicy(int p) { resource.placement_policy = p; } - inline void saveRowPlacementDirection(int d) { resource.row_direction = d; } - inline void saveColPlacementDirection(int d) { resource.col_direction = d; } - inline void saveEdgeSnapThreshold(int t) - { resource.edge_snap_threshold = t; } - inline void saveImageDither(bool d) { resource.image_dither = d; } - inline void saveOpaqueMove(bool o) { resource.opaque_move = o; } - inline void saveFullMax(bool f) { resource.full_max = f; } - inline void saveFocusNew(bool f) { resource.focus_new = f; } - inline void saveFocusLast(bool f) { resource.focus_last = f; } + void saveSloppyFocus(bool s); + void saveAutoRaise(bool a); + void saveClickRaise(bool c); + void saveWorkspaces(unsigned int w); + void savePlacementPolicy(int p); + void saveRowPlacementDirection(int d); + void saveColPlacementDirection(int d); + void saveEdgeSnapThreshold(int t); + void saveImageDither(bool d); + void saveAAFonts(bool f); + void saveOpaqueMove(bool o); + void saveFullMax(bool f); + void saveFocusNew(bool f); + void saveFocusLast(bool f); + void saveHideToolbar(bool h); + void saveWindowToWindowSnap(bool s); + void saveWindowCornerSnap(bool s); inline void iconUpdate(void) { iconmenu->update(); } #ifdef HAVE_STRFTIME @@ -309,9 +284,9 @@ public: void saveStrftimeFormat(const std::string& format); #else // !HAVE_STRFTIME inline int getDateFormat(void) { return resource.date_format; } - inline void saveDateFormat(int f) { resource.date_format = f; } + inline void saveDateFormat(int f); inline bool isClock24Hour(void) { return resource.clock24hour; } - inline void saveClock24Hour(bool c) { resource.clock24hour = c; } + inline void saveClock24Hour(bool c); #endif // HAVE_STRFTIME inline WindowStyle *getWindowStyle(void) { return &resource.wstyle; } @@ -327,36 +302,44 @@ public: unsigned int addWorkspace(void); unsigned int removeLastWorkspace(void); - void removeWorkspaceNames(void); - void addWorkspaceName(const std::string& name); - const std::string getNameOfWorkspace(unsigned int id); void changeWorkspaceID(unsigned int id); + void saveWorkspaceNames(void); void addNetizen(Netizen *n); void removeNetizen(Window w); + void addDesktopWindow(Window window); + void removeDesktopWindow(Window window); + + void addSystrayWindow(Window window); + void removeSystrayWindow(Window window); + void addIcon(BlackboxWindow *w); void removeIcon(BlackboxWindow *w); + void updateClientList(void); + void updateStackingList(void); void manageWindow(Window w); void unmanageWindow(BlackboxWindow *w, bool remap); void raiseWindows(Window *workspace_stack, unsigned int num); + void lowerDesktops(void); void reassociateWindow(BlackboxWindow *w, unsigned int wkspc_id, bool ignore_sticky); void propagateWindowName(const BlackboxWindow *bw); void prevFocus(void); void nextFocus(void); void raiseFocus(void); + void load_rc(void); + void save_rc(void); void reconfigure(void); void toggleFocusModel(FocusModel model); - void updateFocusModel(void); void rereadMenu(void); void shutdown(void); void showPosition(int x, int y); void showGeometry(unsigned int gx, unsigned int gy); void hideGeometry(void); - void buttonPressEvent(XButtonEvent *xbutton); + void buttonPressEvent(const XButtonEvent *xbutton); void updateNetizenCurrentWorkspace(void); void updateNetizenWorkspaceCount(void);