summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Theme.cc86
1 files changed, 48 insertions, 38 deletions
diff --git a/src/Theme.cc b/src/Theme.cc
index c57c850..4caa734 100644
--- a/src/Theme.cc
+++ b/src/Theme.cc
@@ -41,6 +41,8 @@
41// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 41// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
42// DEALINGS IN THE SOFTWARE. 42// DEALINGS IN THE SOFTWARE.
43 43
44// $Id: Theme.cc,v 1.8 2002/01/08 00:12:51 fluxgen Exp $
45
44#ifndef _GNU_SOURCE 46#ifndef _GNU_SOURCE
45#define _GNU_SOURCE 47#define _GNU_SOURCE
46#endif // _GNU_SOURCE 48#endif // _GNU_SOURCE
@@ -49,31 +51,35 @@
49# include "config.h" 51# include "config.h"
50#endif //HAVE_CONFIG_H_ 52#endif //HAVE_CONFIG_H_
51 53
52#ifdef HAVE_CTYPE_H
53# include <ctype.h>
54#endif // HAVE_CTYPE_H
55
56#include "Theme.hh" 54#include "Theme.hh"
55
57#include "i18n.hh" 56#include "i18n.hh"
58#include "Basemenu.hh" 57#include "Basemenu.hh"
59#include "fluxbox.hh"
60#include "StringUtil.hh" 58#include "StringUtil.hh"
61 59
62#include <X11/Xresource.h> 60#include <X11/Xresource.h>
63#include <stdio.h>
64#include <stdarg.h>
65#include <string.h>
66 61
67#ifndef FONT_ELEMENT_SIZE 62#ifdef HAVE_CTYPE_H
68# define FONT_ELEMENT_SIZE 50 63# include <ctype.h>
69#endif // FONT_ELEMENT_SIZE 64#endif // HAVE_CTYPE_H
70 65
71Theme::Theme(Display *display, Window rootwindow, Colormap colormap, int screennum, BImageControl *ic, const char *filename) { 66#include <cstdio>
67#include <cstdarg>
68#include <string>
69#include <strstream>
70#include <iostream>
71using namespace std;
72
73
74Theme::Theme(Display *display, Window rootwindow, Colormap colormap,
75 int screennum, BImageControl *ic, const char *filename, const char *rootcommand):
76m_imagecontrol(ic),
77m_display(display),
78m_colormap(colormap),
79m_screennum(screennum),
80m_rootcommand(rootcommand)
81{
72 82
73 m_screennum = screennum;
74 m_display = display;
75 m_imagecontrol = ic;
76 m_colormap = colormap;
77 //default settings 83 //default settings
78 m_menustyle.titlefont.set = m_menustyle.framefont.set = m_toolbarstyle.font.set = 84 m_menustyle.titlefont.set = m_menustyle.framefont.set = m_toolbarstyle.font.set =
79 m_windowstyle.font.set = m_windowstyle.tab.font.set = 0; 85 m_windowstyle.font.set = m_windowstyle.tab.font.set = 0;
@@ -285,7 +291,7 @@ void Theme::freeToolbarStyle() {
285//---------- load ------------ 291//---------- load ------------
286// Loads a theme from a file 292// Loads a theme from a file
287//---------------------------- 293//----------------------------
288void Theme::load(const char *filename) { 294void Theme::load(const char *filename){
289 m_database = XrmGetFileDatabase(filename); 295 m_database = XrmGetFileDatabase(filename);
290 if (!m_database) 296 if (!m_database)
291 m_database = XrmGetFileDatabase(DEFAULTSTYLE); 297 m_database = XrmGetFileDatabase(DEFAULTSTYLE);
@@ -648,39 +654,42 @@ void Theme::loadToolbarStyle() {
648void Theme::loadRootCommand() { 654void Theme::loadRootCommand() {
649 XrmValue value; 655 XrmValue value;
650 char *value_type; 656 char *value_type;
651 Fluxbox *fb=Fluxbox::instance();
652 657
653 const char *root_cmd=fb->getRootCommand(); 658 if (m_rootcommand.size()) {
654
655 if (root_cmd) {
656 #ifndef __EMX__ 659 #ifndef __EMX__
657 const int display_strlen = 1024; 660 //const int display_strlen = 1024;
658 char displaystring[display_strlen]; 661 //char displaystring[display_strlen];
659 snprintf(displaystring, display_strlen, "DISPLAY=%s%d", 662 strstream displaystring;
660 DisplayString(m_display), m_screennum); 663 displaystring<<"DISPLAY="<<DisplayString(m_display)<<m_screennum;
664 cerr<<__FILE__<<"("<<__LINE__<<"): displaystring="<<displaystring.str()<<endl;
665 //snprintf(displaystring, display_strlen, "DISPLAY=%s%d",
666 //DisplayString(m_display), m_screennum);
661 667
662 bexec(root_cmd, displaystring); 668 bexec(m_rootcommand.c_str(), displaystring.str());
663 #else // __EMX__ 669 #else // __EMX__
664 spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", root_cmd, NULL); 670 spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", m_rootcommand.c_str(), NULL);
665 #endif // !__EMX__ 671 #endif // !__EMX__
666 672
667 #ifdef DEBUG 673 #ifdef DEBUG
668 fprintf(stderr, "rootcommand:%s\n", root_cmd); 674 cerr<<__FILE__<<"("<<__LINE__<<"): Rootcommand: "<<m_rootcommand<<endl;
669 #endif //!DEBUG 675 #endif //!DEBUG
670 676
671 } else if (XrmGetResource(m_database, "rootCommand", 677 } else if (XrmGetResource(m_database, "rootCommand",
672 "RootCommand", &value_type, &value)) { 678 "RootCommand", &value_type, &value)) {
673#ifndef __EMX__ 679 #ifndef __EMX__
674 const int display_strlen = 1024; 680 //const int display_strlen = 1024;
675 char displaystring[display_strlen]; 681 //char displaystring[display_strlen];
676 682 strstream displaystring;
677 snprintf(displaystring, display_strlen, "DISPLAY=%s%d", 683 displaystring<<"DISPLAY="<<DisplayString(m_display)<<m_screennum;
678 DisplayString(m_display), m_screennum); 684 cerr<<__FILE__<<"("<<__LINE__<<"): displaystring="<<displaystring.str()<<endl;
685 //snprintf(displaystring, display_strlen, "DISPLAY=%s%d",
686 // DisplayString(m_display), m_screennum);
679 687
680 bexec(value.addr, displaystring); 688 bexec(value.addr, displaystring.str());
681#else // __EMX__ 689 #else // __EMX__
682 spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", value.addr, NULL); 690 spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", value.addr, NULL);
683#endif // !__EMX__ 691 #endif // !__EMX__
692
684 #ifdef DEBUG 693 #ifdef DEBUG
685 fprintf(stderr, "rootcommand:%s\n", value.addr); 694 fprintf(stderr, "rootcommand:%s\n", value.addr);
686 #endif 695 #endif
@@ -1049,6 +1058,7 @@ void Theme::reconfigure() {
1049 1058
1050XFontSet Theme::createFontSet(char *fontname) { 1059XFontSet Theme::createFontSet(char *fontname) {
1051 XFontSet fs; 1060 XFontSet fs;
1061 const int FONT_ELEMENT_SIZE=50;
1052 char **missing, *def = "-"; 1062 char **missing, *def = "-";
1053 int nmissing, pixel_size = 0, buf_size = 0; 1063 int nmissing, pixel_size = 0, buf_size = 0;
1054 char weight[FONT_ELEMENT_SIZE], slant[FONT_ELEMENT_SIZE]; 1064 char weight[FONT_ELEMENT_SIZE], slant[FONT_ELEMENT_SIZE];