From cc60dc63d69edbd2ab058cca5d4c4108a00148ad Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Fri, 25 Oct 2002 20:56:12 +0000
Subject: fixed auto_ptr for m_toolbar, rearranged includes, fixed forward
 declaration, removed fluxbox from constructor and fixed some minor accessors

---
 src/Screen.hh | 67 ++++++++++++++++++++++++++++-------------------------------
 1 file changed, 32 insertions(+), 35 deletions(-)

diff --git a/src/Screen.hh b/src/Screen.hh
index 60883c1..1713e31 100644
--- a/src/Screen.hh
+++ b/src/Screen.hh
@@ -22,21 +22,19 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: Screen.hh,v 1.47 2002/10/15 10:54:40 fluxgen Exp $
+// $Id: Screen.hh,v 1.48 2002/10/25 20:56:12 fluxgen Exp $
 
 #ifndef	 SCREEN_HH
 #define	 SCREEN_HH
 
 #include "Theme.hh"
 #include "BaseDisplay.hh"
-#include "Configmenu.hh"
-#include "Icon.hh"
 #include "Netizen.hh"
-#include "Rootmenu.hh"
 #include "Timer.hh"
 #include "Workspace.hh"
-#include "Workspacemenu.hh"
-#include "fluxbox.hh"
+#include "Tab.hh"
+#include "Resource.hh"
+#include "Toolbar.hh"
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -65,13 +63,19 @@
 #include <list>
 #include <vector>
 #include <fstream>
+#include <memory>
+
+class Configmenu;
+class Workspacemenu;
+class Iconmenu;
+class Rootmenu;
 
 class BScreen : public ScreenInfo {
 public:
 	typedef std::vector<Workspace *> Workspaces;
 	typedef std::vector<std::string> WorkspaceNames;
 	
-	BScreen(ResourceManager &rm, Fluxbox *b, 
+	BScreen(ResourceManager &rm,
 		const std::string &screenname, const std::string &altscreenname,
 		int scrn);
 	~BScreen();
@@ -99,8 +103,10 @@ public:
 	
 	inline const FbTk::Color *getBorderColor() const { return &theme->getBorderColor(); }
 	inline BImageControl *getImageControl() { return image_control; }
-	inline Rootmenu *getRootmenu() { return rootmenu; }
-	inline const std::string &getRootCommand(void ) const { return *resource.rootcommand; }
+	const Rootmenu * const getRootmenu() const { return rootmenu; }
+	Rootmenu * const getRootmenu() { return rootmenu; }
+	
+	inline const std::string &getRootCommand() const { return *resource.rootcommand; }
 #ifdef	 SLIT
 	inline bool isSlitOnTop() const { return resource.slit_on_top; }
 	inline bool doSlitAutoHide() const { return resource.slit_auto_hide; }
@@ -119,12 +125,14 @@ public:
 
 #endif // SLIT
 
-	inline Toolbar *getToolbar() { return toolbar; }
+	inline const Toolbar * const getToolbar() const { return m_toolbar.get(); }
+	inline Toolbar * const getToolbar() { return m_toolbar.get(); }
 
 	inline Workspace *getWorkspace(unsigned int w) { return ( w < workspacesList.size() ? workspacesList[w] : 0); }
 	inline Workspace *getCurrentWorkspace() { return current_workspace; }
 
-	inline Workspacemenu *getWorkspacemenu() { return workspacemenu; }
+	const Workspacemenu * const getWorkspacemenu() const { return workspacemenu; }
+	Workspacemenu * const getWorkspacemenu() { return workspacemenu; }
 
 	inline unsigned int getHandleWidth() const { return theme->getHandleWidth(); }
 	inline unsigned int getBevelWidth() const { return theme->getBevelWidth(); }
@@ -201,8 +209,8 @@ public:
 	inline void saveSloppyWindowGrouping(bool s) { resource.sloppy_window_grouping = s;  }
 	inline void saveWorkspaceWarping(bool s) { resource.workspace_warping = s; }
 	inline void saveDesktopWheeling(bool s) { resource.desktop_wheeling = s; }
-	inline void iconUpdate() { iconmenu->update(); }
-	inline Iconmenu *getIconmenu() { return iconmenu; }
+	void iconUpdate();
+	inline const Iconmenu *getIconmenu() const { return m_iconmenu; }
 	inline void setAutoGroupWindow(Window w = 0) { auto_group_window = w; }
 	void setAntialias(bool value);
 	
@@ -289,6 +297,12 @@ public:
 	};
 	
 private:
+	void createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, const char *directory);
+
+	bool parseMenuFile(std::ifstream &, Rootmenu *, int&);
+
+	void initMenu();
+
 	bool doSkipWindow(const FluxboxWindow *w, int options);
 
 	ScreenSubject 
@@ -297,7 +311,6 @@ private:
 		m_workspacenames_sig, ///< workspace names signal 
 		m_currentworkspace_sig; ///< current workspace signal
 		
-		
 	
 	Theme *theme;
 	
@@ -306,10 +319,9 @@ private:
 	Pixmap geom_pixmap;
 	Window geom_window;
 
-	Fluxbox *fluxbox;
 	BImageControl *image_control;
 	Configmenu *configmenu;
-	Iconmenu *iconmenu;
+	Iconmenu *m_iconmenu;
 
 	Rootmenu *rootmenu;
 
@@ -320,11 +332,11 @@ private:
     Netizens netizenList;
     Icons iconList;
 
-	#ifdef		SLIT
+#ifdef		SLIT
 	Slit *slit;
-	#endif // SLIT
+#endif // SLIT
 
-	Toolbar *toolbar;
+	std::auto_ptr<Toolbar> m_toolbar;
 	Workspace *current_workspace;
 	Workspacemenu *workspacemenu;
 
@@ -382,22 +394,7 @@ private:
 		#endif // HAVE_STRFTIME
 
 	} resource;
-
-	void createStyleMenu(Rootmenu *menu, bool newmenu, const char *label, const char *directory);
-protected:
-	bool parseMenuFile(std::ifstream &, Rootmenu *, int&);
-
-	bool readDatabaseTexture(char *, char *, FbTk::Texture *, unsigned long);
-	bool readDatabaseColor(char *, char *, FbTk::Color *, unsigned long);
-
-	void readDatabaseFontSet(char *, char *, XFontSet *);
-	XFontSet createFontSet(char *);
-	void readDatabaseFont(char *, char *, XFontStruct **);
-
-	void initMenu();
-
-
 };
 
 
-#endif // _SCREEN_HH_
+#endif // SCREEN_HH
-- 
cgit v0.11.2