update NLS string handling...

This commit is contained in:
rathnor 2004-06-07 11:46:05 +00:00
parent 073065ac56
commit fff4456dee
36 changed files with 581 additions and 467 deletions

View file

@ -1,5 +1,18 @@
(Format: Year/Month/Day)
Changes for 0.9.10:
*04/06/07:
* Initial NLS update (Simon)
- use _FBTEXT, or _FBTKTEXT for all strings that go to the user
- regenerate fluxbox-nls.hh when adding new strings
- This patch doesn't convert old translations, so for the mo,
translations are broken, sorry. Thats next.
{nls,src,FbTk}/Makefile.am fluxbox-nls.hh nls/nlsinfo -src/I18n.hh/cc
+FbTk/I18n.hh/cc Color.cc EventManager.cc Font.cc ImageControl.cc
Menu.cc Resource.cc TextureRender.cc Theme.cc Transparent.cc
XFontImp.cc Gnome.cc Ewmh.cc FbCommandFactory.cc IconMenu.cc
IconbarTool.cc Keys.cc MenuCreator.cc RegExp.cc Remember.cc Screen.cc
Slit.hh/cc Toolbar.cc WinClient.cc Window.cc Workspace.cc
WorkspaceMenu.cc Xutil.cc fluxbox.cc main.cc
*04/05/24:
* Fix handling alpha value of zero (Simon)
- also fix up defaulting of missing alpha theme items to 255

View file

@ -6,7 +6,7 @@ SUBDIRS = C da_DK es_ES et_EE fr_FR pt_BR ru_RU sv_SE \
sl_SI pl_PL
MAINTAINERCLEANFILES = Makefile.in fluxbox-nls.hh
EXTRA_DIST=fluxbox-nls.hh convert.awk
EXTRA_DIST=fluxbox-nls.hh convert.awk nlsinfo
uninstall-local:
@if test x$(NLSTEST) = "x-DNLS"; then \
@ -14,3 +14,6 @@ uninstall-local:
fi
distclean-local:
rm -f *\~
fluxbox-nls.hh:
./nlsinfo -H -N FBNLS $(top_srcdir)/src > fluxbox-nls.hh

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Ewmh.cc,v 1.45 2004/03/07 23:37:39 rathnor Exp $
// $Id: Ewmh.cc,v 1.46 2004/06/07 11:46:04 rathnor Exp $
#include "Ewmh.hh"
@ -30,6 +30,7 @@
#include "fluxbox.hh"
#include "FbTk/FbWindow.hh"
#include "FbTk/I18n.hh"
#include <iostream>
#include <algorithm>
@ -244,10 +245,11 @@ void Ewmh::updateClientList(BScreen &screen) {
for (; icon_it != icon_it_end; ++icon_it) {
num += (*icon_it)->numClients();
}
Window *wl = new (nothrow) Window[num];
if (wl == 0) {
cerr<<"Fatal: Out of memory, can't allocate for Ewmh client list"<<endl;
_FB_USES_NLS;
cerr<<_FBTEXT(Ewmh, OutOfMemoryClientList, "Fatal: Out of memory, can't allocate for EWMH client list", "")<<endl;
return;
}
@ -594,7 +596,6 @@ bool Ewmh::checkClientMessage(const XClientMessageEvent &ce,
} else if (ce.message_type == m_net_close_window) {
if (winclient == 0)
return true;
cerr<<"We got _NET_CLOSE_WINDOW!"<<endl;
// ce.window = window to close (which in this case is the win argument)
winclient->sendClose();
return true;

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: FbCommandFactory.cc,v 1.31 2004/05/02 21:13:08 fluxgen Exp $
// $Id: FbCommandFactory.cc,v 1.32 2004/06/07 11:46:04 rathnor Exp $
#include "FbCommandFactory.hh"
@ -180,7 +180,6 @@ FbTk::Command *FbCommandFactory::stringToCommand(const std::string &command,
// i.e so users can set space before workspace name and so on
string value = name.substr(pos + 1);
name = name.substr(0, pos);
cerr<<"Creating SetResourceValue "<<name<<" "<<value<<endl;
return new SetResourceValueCmd(name, value);
} else if (command == "setresourcevaluedialog")
return new SetResourceValueDialogCmd();

View file

@ -19,12 +19,13 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Color.cc,v 1.10 2004/04/25 16:12:21 fluxgen Exp $
// $Id: Color.cc,v 1.11 2004/06/07 11:46:05 rathnor Exp $
#include "Color.hh"
#include "App.hh"
#include "StringUtil.hh"
#include "I18n.hh"
#include <iostream>
using namespace std;
@ -155,7 +156,8 @@ void Color::allocate(unsigned short red, unsigned short green, unsigned short bl
if (!XAllocColor(disp, DefaultColormap(disp, screen), &color)) {
cerr<<"FbTk::Color: Allocation error."<<endl;
_FB_USES_NLS;
cerr<<"FbTk::Color: "<<_FBTKTEXT(Error, ColorAllocation, "Allocation error.", "XAllocColor failed...")<<endl;
} else {
setRGB(maxValue(color.red),
maxValue(color.green),

View file

@ -19,11 +19,12 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: EventManager.cc,v 1.12 2004/05/04 14:33:38 rathnor Exp $
// $Id: EventManager.cc,v 1.13 2004/06/07 11:46:05 rathnor Exp $
#include "EventManager.hh"
#include "FbWindow.hh"
#include "App.hh"
#include "I18n.hh"
#include <iostream>
using namespace std;
@ -36,8 +37,10 @@ EventManager *EventManager::instance() {
}
EventManager::~EventManager() {
#ifdef DEBUG
if (m_eventhandlers.size() != 0)
cerr<<"FbTk::EventManager: Warning: unregistered eventhandlers!"<<endl;
#endif // DEBUG
}
void EventManager::handleEvent(XEvent &ev) {

View file

@ -19,11 +19,12 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//$Id: Font.cc,v 1.6 2003/12/01 19:57:01 fluxgen Exp $
//$Id: Font.cc,v 1.7 2004/06/07 11:46:05 rathnor Exp $
#include "Font.hh"
#include "FontImp.hh"
#include "I18n.hh"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -130,8 +131,10 @@ void Font::setAntialias(bool flag) {
}
if (m_fontimp->loaded() != loaded) { // if the new font failed to load, fall back to 'fixed'
if (!m_fontimp->load("fixed")) // if that failes too, output warning
cerr<<"Warning: can't load fallback font 'fixed'."<<endl;
if (!m_fontimp->load("fixed")) {// if that failes too, output warning
_FB_USES_NLS;
cerr<<_FBTKTEXT(Error, CantFallbackFont, "Warning: can't load fallback font", "Attempt to load the last-resort default font failed")<<" 'fixed'."<<endl;
}
}
m_antialias = flag;

View file

@ -22,7 +22,15 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: I18n.cc,v 1.6 2004/01/21 14:12:51 fluxgen Exp $
// $Id: I18n.cc,v 1.1 2004/06/07 11:46:05 rathnor Exp $
/* Note:
* A good reference for the older non-gettext style I18n
* functions is the "Locale tutorial"
* Written by Patrick D'Cruze (pdcruze@orac.iinet.com.au)
* A copy of which is available (at the time of writing) here:
* http://www.kulichki.com/moshkow/CYRILLIC/locale-tutorial-0_8.txt
*/
//usr GNU extensions
#ifndef _GNU_SOURCE
@ -39,12 +47,15 @@
#include <iostream>
#include "defaults.hh"
// TODO: FIXME: the LOCALEPATH from this file should be ./configure-ed into config.h
#include "../defaults.hh"
using std::cerr;
using std::endl;
using std::string;
namespace FbTk {
void NLSInit(const char *catalog) {
I18n *i18n = I18n::instance();
i18n->openCatalog(catalog);
@ -138,3 +149,5 @@ const char *I18n::getMessage(int set_number, int message_number,
#endif // NLS && HAVE_CATGETS
return default_message;
}
}; // end namespace FbTk

View file

@ -22,12 +22,13 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: I18n.hh,v 1.4 2004/05/02 20:46:43 fluxgen Exp $
// $Id: I18n.hh,v 1.1 2004/06/07 11:46:05 rathnor Exp $
#ifndef I18N_HH
#define I18N_HH
#include "../nls/fluxbox-nls.hh"
// TODO: FIXME
#include "../../nls/fluxbox-nls.hh"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -59,6 +60,32 @@ void catclose(nl_catd cat);
#include <string>
// Some defines to help out
#ifdef NLS
#define _FB_USES_NLS \
FbTk::I18n &i18n = *FbTk::I18n::instance()
// ignore the description, it's for helping translators
#define _FBTEXT(msgset, msgid, default_text, description) \
i18n.getMessage(FBNLS::msgset ## Set, FBNLS::msgset ## msgid, default_text)
// This ensure that FbTk nls stuff is in a kind of namespace of its own
#define _FBTKTEXT( msgset, msgid, default_text, description) \
i18n.getMessage(FBNLS::FbTk ## msgset ## Set, FBNLS::FbTk ## msgset ## msgid, default_text)
#else // no NLS
#define _FB_USES_NLS
#define _FBTEXT(msgset, msgid, default_text, description) \
default_text
#define _FBTKTEXT(msgset, msgid, default_text, description) \
default_text
#endif // defined NLS
namespace FbTk {
class I18n {
public:
static I18n *instance();
@ -80,4 +107,6 @@ private:
void NLSInit(const char *);
}; // end namespace FbTk
#endif // I18N_HH

View file

@ -22,13 +22,14 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: ImageControl.cc,v 1.12 2004/01/21 14:15:29 fluxgen Exp $
// $Id: ImageControl.cc,v 1.13 2004/06/07 11:46:05 rathnor Exp $
#include "ImageControl.hh"
#include "TextureRender.hh"
#include "App.hh"
#include "SimpleCommand.hh"
#include "I18n.hh"
//use GNU extensions
#ifndef _GNU_SOURCE
@ -638,7 +639,8 @@ void ImageControl::createColorTable() {
}
default:
cerr<<"FbTk::ImageControl: Unsupported visual"<<endl;
_FB_USES_NLS;
cerr<<"FbTk::ImageControl: "<<_FBTKTEXT(Error, UnsupportedVisual, "Unsupported visual", "A visual is a technical term in X")<<endl;
break;
}
}

View file

@ -16,6 +16,7 @@ libFbTk_a_SOURCES = App.hh App.cc Color.cc Color.hh Command.hh \
Directory.hh Directory.cc \
EventHandler.hh EventManager.hh EventManager.cc \
FbWindow.hh FbWindow.cc Font.cc Font.hh FontImp.hh \
I18n.cc I18n.hh \
ImageControl.hh ImageControl.cc \
MacroCommand.hh MacroCommand.cc \
Menu.hh Menu.cc MenuItem.hh MenuItem.cc \

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Menu.cc,v 1.60 2004/05/17 15:01:32 rathnor Exp $
// $Id: Menu.cc,v 1.61 2004/06/07 11:46:05 rathnor Exp $
//use GNU extensions
#ifndef _GNU_SOURCE
@ -38,6 +38,7 @@
#include "EventManager.hh"
#include "Transparent.hh"
#include "SimpleCommand.hh"
#include "I18n.hh"
#include <X11/Xatom.h>
#include <X11/keysym.h>
@ -495,7 +496,8 @@ void Menu::update(int active_index) {
menu.frame.depth());
if (m_frame_pm.drawable() == 0) {
cerr<<"FbTk::Menu: Warning: Failed to create pixmap ("<<
_FB_USES_NLS;
cerr<<"FbTk::Menu: "<<_FBTKTEXT(Error, CreatePixmap, "Error creating pixmap", "Couldn't create a pixmap - image - for some reason")<<" ("<<
menu.frame.window()<<", "<<menu.frame.width()<<", "<<
menu.frame.height()<<
", "<<menu.frame.depth()<<") !"<<endl;

View file

@ -19,10 +19,11 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Resource.cc,v 1.5 2004/01/19 18:26:04 fluxgen Exp $
// $Id: Resource.cc,v 1.6 2004/06/07 11:46:05 rathnor Exp $
#include "XrmDatabaseHelper.hh"
#include "Resource.hh"
#include "I18n.hh"
#include <iostream>
#include <cassert>
@ -81,8 +82,9 @@ bool ResourceManager::load(const char *filename) {
resource->altName().c_str(), &value_type, &value))
resource->setFromString(value.addr);
else {
cerr<<"Failed to read: "<<resource->name()<<endl;
cerr<<"Setting default value"<<endl;
_FB_USES_NLS;
cerr<<_FBTKTEXT(Error, FailedRead, "Failed to read", "Couldn't load a resource (following)")<<": "<<resource->name()<<endl;
cerr<<_FBTKTEXT(Error, UsingDefault, "Setting default value", "Falling back to default value for resource")<<endl;
resource->setDefaultValue();
}
}

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: TextureRender.cc,v 1.8 2004/01/21 20:19:50 fluxgen Exp $
// $Id: TextureRender.cc,v 1.9 2004/06/07 11:46:05 rathnor Exp $
#include "TextureRender.hh"
@ -30,6 +30,7 @@
#include "App.hh"
#include "FbPixmap.hh"
#include "GContext.hh"
#include "I18n.hh"
#include <iostream>
#include <string>
@ -46,16 +47,17 @@ TextureRender::TextureRender(ImageControl &imgctrl,
ncolors(ncolors),
xtable(0), ytable(0) {
_FB_USES_NLS;
width = ((signed) w > 0) ? w : 1;
height = ((signed) h > 0) ? h : 1;
// clamp to "normal" size
if (width > 3200) {
cerr<<"TextureRender: Warning! Width > 3200 setting Width = 3200"<<endl;
cerr<<"TextureRender: "<<_FBTKTEXT(Error, BigWidth, "Warning! Width > 3200 setting Width = 3200", "Image width seems too big, clamping")<<endl;
width = 3200;
}
if (height > 3200) {
cerr<<"TextureRender: Warning! Height > 3200 setting Height = 3200"<<endl;
cerr<<"TextureRender: "<<_FBTKTEXT(Error, BigHeight, "Warning! Height > 3200 setting Height = 3200", "Image height seems too big, clamping")<<endl;
height = 3200;
}
@ -63,7 +65,7 @@ TextureRender::TextureRender(ImageControl &imgctrl,
if (red == 0) {
char sbuf[128];
sprintf(sbuf, "%d", width*height);
throw string("TextureRender::TextureRender(): Out of memory while allocating red buffer."+ string(sbuf));
throw string("TextureRender::TextureRender(): " + string(_FBTKTEXT(Error, OutOfMemoryRed, "Out of memory while allocating red buffer.", "")) + string(sbuf));
}
@ -71,14 +73,14 @@ TextureRender::TextureRender(ImageControl &imgctrl,
if (green == 0) {
char sbuf[128];
sprintf(sbuf, "%d", width*height);
throw string("TextureRender::TextureRender(): Out of memory while allocating green buffer. size " + string(sbuf));
throw string("TextureRender::TextureRender(): " +string(_FBTKTEXT(Error, OutOfMemoryGreen, "Out of memory while allocating green buffer.", ""))+ string(sbuf));
}
blue = new(nothrow) unsigned char[width * height];
if (blue == 0) {
char sbuf[128];
sprintf(sbuf, "%d", width*height);
throw string("TextureRender::TextureRender(): Out of memory while allocating blue buffer. size " + string(sbuf));
throw string("TextureRender::TextureRender(): " +string(_FBTKTEXT(Error, OutOfMemoryBlue, "Out of memory while allocating blue buffer.", ""))+ string(sbuf));
}
cpc = imgctrl.colorsPerChannel();
@ -120,7 +122,8 @@ Pixmap TextureRender::renderSolid(const FbTk::Texture &texture) {
control.depth());
if (pixmap.drawable() == None) {
cerr<<"FbTk::TextureRender::render_solid(): error creating pixmap"<<endl;
_FB_USES_NLS;
cerr<<"FbTk::TextureRender::render_solid(): "<<_FBTKTEXT(Error, CreatePixmap, "Error creating pixmap", "Couldn't create a pixmap - image - for some reason")<<endl;
return None;
}
@ -274,7 +277,8 @@ XImage *TextureRender::renderXImage() {
width, height, 32, 0);
if (! image) {
cerr<<"FbTk::TextureRender::renderXImage(): error creating XImage"<<endl;
_FB_USES_NLS;
cerr<<"FbTk::TextureRender::renderXImage(): "<<_FBTKTEXT(Error, CreateXImage, "Error creating XImage", "Couldn't create an XImage")<<endl;
return 0;
}
@ -545,7 +549,9 @@ XImage *TextureRender::renderXImage() {
*/
default:
cerr<<"TextureRender::renderXImage(): unsupported visual"<<endl;
_FB_USES_NLS;
cerr<<"TextureRender::renderXImage(): "<<
_FBTKTEXT(Error, UnsupportedVisual, "unsupported visual", "A visual is a technical term in X")<<endl;
delete [] d;
XDestroyImage(image);
return (XImage *) 0;
@ -644,7 +650,9 @@ XImage *TextureRender::renderXImage() {
break;
default:
cerr<<"TextureRender::renderXImage(): unsupported visual"<<endl;
_FB_USES_NLS;
cerr<<"TextureRender::renderXImage(): "<<
_FBTKTEXT(Error, UnsupportedVisual, "unsupported visual", "A visual is a technical term in X")<<endl;
delete [] d;
XDestroyImage(image);
return (XImage *) 0;
@ -662,7 +670,8 @@ Pixmap TextureRender::renderPixmap() {
width, height, control.depth());
if (pixmap.drawable() == None) {
cerr<<"TextureRender::renderPixmap(): error creating pixmap"<<endl;
_FB_USES_NLS;
cerr<<"FbTk::TextureRender::renderPixmap(): "<<_FBTKTEXT(Error, CreatePixmap, "Error creating pixmap", "Couldn't create a pixmap - image - for some reason")<<endl;
return None;
}

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Theme.cc,v 1.26 2004/04/26 15:04:37 rathnor Exp $
// $Id: Theme.cc,v 1.27 2004/06/07 11:46:05 rathnor Exp $
#include "Theme.hh"
@ -28,6 +28,7 @@
#include "StringUtil.hh"
#include "ThemeItems.hh"
#include "Directory.hh"
#include "I18n.hh"
#include <cstdio>
#include <memory>
@ -140,9 +141,11 @@ void ThemeManager::loadTheme(Theme &tm) {
if (!loadItem(*resource)) {
// try fallback resource in theme
if (!tm.fallback(*resource)) {
if (verbose())
cerr<<"Failed to read theme item: "<<resource->name()<<endl;
resource->setDefaultValue();
if (verbose()) {
_FB_USES_NLS;
cerr<<_FBTKTEXT(Error, ThemeItem, "Failed to read theme item", "When reading a style, couldn't read a specific item (following)")<<": "<<resource->name()<<endl;
}
resource->setDefaultValue();
}
}
}

View file

@ -19,10 +19,11 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Transparent.cc,v 1.5 2003/05/13 20:50:56 fluxgen Exp $
// $Id: Transparent.cc,v 1.6 2004/06/07 11:46:05 rathnor Exp $
#include "Transparent.hh"
#include "App.hh"
#include "I18n.hh"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -33,12 +34,14 @@
#endif // HAVE_XRENDER
#include <iostream>
#include <stdio.h>
using namespace std;
namespace {
#ifdef HAVE_XRENDER
Picture createAlphaPic(Window drawable, unsigned char alpha) {
Display *disp = FbTk::App::instance()->display();
_FB_USES_NLS;
// try to find a specific render format
XRenderPictFormat pic_format;
@ -49,7 +52,7 @@ Picture createAlphaPic(Window drawable, unsigned char alpha) {
PictFormatDepth | PictFormatAlphaMask,
&pic_format, 0);
if (format == 0) {
cerr<<"Warning! FbTk::Transparent: Failed to find valid format for alpha."<<endl;
cerr<<"FbTk::Transparent: "<<_FBTKTEXT(Error, NoRenderFormat, "Warning: Failed to find valid format for alpha.", "transparency requires a pict format, can't get one...")<<endl;
return 0;
}
@ -57,7 +60,7 @@ Picture createAlphaPic(Window drawable, unsigned char alpha) {
Pixmap alpha_pm = XCreatePixmap(disp, drawable,
1, 1, 8);
if (alpha_pm == 0) {
cerr<<"Warning! FbTk::Transparent: Failed to create alpha pixmap."<<endl;
cerr<<"FbTk::Transparent: "<<_FBTKTEXT(Error, NoRenderPixmap, "Warning: Failed to create alpha pixmap.", "XCreatePixmap files for our transparency pixmap")<<endl;
return 0;
}
@ -68,7 +71,7 @@ Picture createAlphaPic(Window drawable, unsigned char alpha) {
format, CPRepeat, &attr);
if (alpha_pic == 0) {
XFreePixmap(disp, alpha_pm);
cerr<<"Warning! FbTk::Transparent: Failed to create alpha picture."<<endl;
cerr<<"FbTk::Transparent: "<<_FBTKTEXT(Error, NoRenderPicture, "Warning: Failed to create alpha picture.", "XRenderCreatePicture failed")<<endl;
return 0;
}
@ -181,8 +184,12 @@ void Transparent::setDest(Drawable dest, int screen_num) {
XRenderPictFormat *format =
XRenderFindVisualFormat(disp,
DefaultVisual(disp, screen_num));
if (format == 0)
cerr<<"Warning! FbTk::Transparent: Failed to find format for screen("<<screen_num<<")"<<endl;
if (format == 0) {
_FB_USES_NLS;
cerr<<"FbTk::Transparent: ";
fprintf(stderr, _FBTKTEXT(Error, NoRenderVisualFormat, "Failed to find format for screen(%d)", "XRenderFindVisualFormat failed... include %d for screen number"), screen_num);
cerr<<endl;
}
m_dest_pic = XRenderCreatePicture(disp, dest, format, 0, 0);
@ -216,8 +223,12 @@ void Transparent::setSource(Drawable source, int screen_num) {
XRenderPictFormat *format =
XRenderFindVisualFormat(disp,
DefaultVisual(disp, screen_num));
if (format == 0)
cerr<<"Warning! FbTk::Transparent: Failed to find format for screen("<<screen_num<<")"<<endl;
if (format == 0) {
_FB_USES_NLS;
cerr<<"FbTk::Transparent: ";
fprintf(stderr, _FBTKTEXT(Error, NoRenderVisualFormat, "Failed to find format for screen(%d)", "XRenderFindVisualFormat failed... include %d for screen number"), screen_num);
cerr<<endl;
}
m_src_pic = XRenderCreatePicture(disp, m_source, format,
0, 0);
}

View file

@ -19,12 +19,13 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: XFontImp.cc,v 1.6 2003/09/11 20:00:09 fluxgen Exp $
// $Id: XFontImp.cc,v 1.7 2004/06/07 11:46:05 rathnor Exp $
#include "XFontImp.hh"
#include "App.hh"
#include "GContext.hh"
#include "FbPixmap.hh"
#include "I18n.hh"
#include <X11/Xutil.h>
@ -121,6 +122,8 @@ void XFontImp::rotate(float angle) {
return;
}
_FB_USES_NLS;
//get positive angle
while (angle < 0)
angle += 360;
@ -157,7 +160,7 @@ void XFontImp::rotate(float angle) {
m_rotfont = new(nothrow) XRotFontStruct;
if (m_rotfont == 0) {
cerr<<"RotFont: out of memory"<<endl;
cerr<<"RotFont: "<<_FBTKTEXT(Error, OutOfMemory, "Out of memory", "Something couldn't allocate memory")<<endl;
return;
}
@ -224,7 +227,7 @@ void XFontImp::rotate(float angle) {
vert_w, vert_h, 8, 0);
if (I1 == None) {
cerr<<"RotFont: Cant create ximage."<<endl;
cerr<<"RotFont: "<<_FBTKTEXT(Error, CreateXImage, "Cant create XImage", "XCreateImage failed for some reason")<<"."<<endl;
delete m_rotfont;
m_rotfont = 0;
return;
@ -262,7 +265,7 @@ void XFontImp::rotate(float angle) {
(char *)bitdata, bit_w, bit_h, 8, 0);
if (I2 == None) {
cerr<<"XFontImp: Cant create ximage!"<<endl;
cerr<<"XFontImp: "<<_FBTKTEXT(Error, CreateXImage, "Cant create XImage", "XCreateImage failed for some reason")<<"."<<endl;
delete m_rotfont;
m_rotfont = 0;
return;

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Gnome.cc,v 1.34 2004/02/20 09:05:38 fluxgen Exp $
// $Id: Gnome.cc,v 1.35 2004/06/07 11:46:04 rathnor Exp $
#include "Gnome.hh"
@ -28,6 +28,7 @@
#include "Screen.hh"
#include "WinClient.hh"
#include "Workspace.hh"
#include "FbTk/I18n.hh"
#include <iostream>
#include <new>
@ -149,7 +150,8 @@ void Gnome::updateClientList(BScreen &screen) {
Window *wl = new Window[num];
if (wl == 0) {
cerr<<"Fatal: Out of memory, can't allocate ("<<num*sizeof (Window)<<") for gnome client list"<<endl;
_FB_USES_NLS;
cerr<<_FBTEXT(Gnome, OutOfMemoryClientList, "Fatal: Out of memory, can't allocate for GNOME client list", "")<<endl;
return;
}

View file

@ -19,14 +19,14 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: IconMenu.cc,v 1.1 2004/05/02 20:51:36 fluxgen Exp $
// $Id: IconMenu.cc,v 1.2 2004/06/07 11:46:04 rathnor Exp $
#include "IconMenu.hh"
#include "Screen.hh"
#include "IconMenuItem.hh"
#include "fluxbox.hh"
#include "I18n.hh"
#include "FbTk/I18n.hh"
static void updateItems(FbTk::Menu &menu, BScreen &screen) {
menu.removeAll();
@ -47,8 +47,8 @@ IconMenu::IconMenu(BScreen &screen):
*screen.layerManager().
getLayer(Fluxbox::instance()->getMenuLayer())) {
setLabel(I18n::instance()->getMessage(FBNLS::IconSet,
FBNLS::IconIcons, "Icons"));
_FB_USES_NLS;
setLabel(_FBTEXT(Menu, Icons, "Icons", "Iconic windows menu title"));
screen.iconListSig().attach(this);
updateItems(*this, screen);
}

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: IconbarTool.cc,v 1.36 2004/04/26 15:04:37 rathnor Exp $
// $Id: IconbarTool.cc,v 1.37 2004/06/07 11:46:04 rathnor Exp $
#include "IconbarTool.hh"
@ -35,6 +35,7 @@
#include "CommandParser.hh"
#include "WinClient.hh"
#include "FbTk/I18n.hh"
#include "FbTk/Menu.hh"
#include "FbTk/MenuItem.hh"
#include "FbTk/RefCount.hh"
@ -87,7 +88,7 @@ void FbTk::Resource<Container::Alignment>::setFromString(const char *str) {
m_value = Container::LEFT;
else if (strcasecmp(str, "Right") == 0)
m_value = Container::RIGHT;
else if (strcasecmp(str, "RELATIVE") == 0)
else if (strcasecmp(str, "Relative") == 0)
m_value = Container::RELATIVE;
else
setDefaultValue();
@ -157,32 +158,55 @@ private:
void setupModeMenu(FbTk::Menu &menu, IconbarTool &handler) {
using namespace FbTk;
_FB_USES_NLS;
// TODO: nls
menu.setLabel("Iconbar Mode");
menu.setLabel(_FBTEXT(Toolbar, IconbarMode, "Iconbar Mode", "Menu title - chooses which set of icons are shown in the iconbar"));
RefCount<Command> saverc_cmd(new SimpleCommand<Fluxbox>(
*Fluxbox::instance(),
&Fluxbox::save_rc));
//TODO: nls
menu.insert(new ToolbarModeMenuItem("None", handler,
IconbarTool::NONE, saverc_cmd));
menu.insert(new ToolbarModeMenuItem("Icons", handler,
IconbarTool::ICONS, saverc_cmd));
menu.insert(new ToolbarModeMenuItem("Workspace Icons", handler,
IconbarTool::WORKSPACEICONS, saverc_cmd));
menu.insert(new ToolbarModeMenuItem("Workspace", handler,
IconbarTool::WORKSPACE, saverc_cmd));
menu.insert(new ToolbarModeMenuItem("All Windows", handler,
IconbarTool::ALLWINDOWS, saverc_cmd));
menu.insert(new ToolbarModeMenuItem(_FBTEXT(Toolbar, IconbarModeNone, "None", "No icons are shown in the iconbar"),
handler,
IconbarTool::NONE, saverc_cmd));
menu.insert(new ToolbarModeMenuItem(
_FBTEXT(Toolbar, IconbarModeIcons, "Icons", "Iconified windows from all workspaces are shown"),
handler,
IconbarTool::ICONS, saverc_cmd));
menu.insert(new ToolbarModeMenuItem(
_FBTEXT(Toolbar, IconbarModeWorkspaceIcons, "WorkspaceIcons", "Iconified windows from this workspace are shown"),
handler,
IconbarTool::WORKSPACEICONS, saverc_cmd));
menu.insert(new ToolbarModeMenuItem(
_FBTEXT(Toolbar, IconbarModeWorkspace, "Workspace", "Normal and iconified windows from this workspace are shown"),
handler,
IconbarTool::WORKSPACE, saverc_cmd));
menu.insert(new ToolbarModeMenuItem(
_FBTEXT(Toolbar, IconbarModeAllWindows, "All Windows", "All windows are shown"),
handler,
IconbarTool::ALLWINDOWS, saverc_cmd));
menu.insert("---"); // separator line
menu.insert(new ToolbarAlignMenuItem("Left", handler,
Container::LEFT, saverc_cmd));
menu.insert(new ToolbarAlignMenuItem("Relative", handler,
Container::RELATIVE, saverc_cmd));
menu.insert(new ToolbarAlignMenuItem("Right", handler,
Container::RIGHT, saverc_cmd));
menu.insert(new ToolbarAlignMenuItem(
_FBTEXT(Align, Left, "Left", "Align to the left"),
handler,
Container::LEFT, saverc_cmd));
menu.insert(new ToolbarAlignMenuItem(
_FBTEXT(Align, Relative, "Relative", "Align relative to the width"),
handler,
Container::RELATIVE, saverc_cmd));
menu.insert(new ToolbarAlignMenuItem(
_FBTEXT(Align, Right, "Right", "Align to the right"),
handler,
Container::RIGHT, saverc_cmd));
menu.insert("---"); // separator line
menu.update();
}

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//$Id: Keys.cc,v 1.42 2004/02/20 09:29:07 fluxgen Exp $
//$Id: Keys.cc,v 1.43 2004/06/07 11:46:04 rathnor Exp $
#include "Keys.hh"
@ -30,6 +30,7 @@
#include "FbTk/KeyUtil.hh"
#include "CommandParser.hh"
#include "FbTk/I18n.hh"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -165,6 +166,7 @@ bool Keys::addBinding(const std::string &linebuffer) {
char keyarg = 0;
t_key *current_key=0, *last_key=0;
_FB_USES_NLS;
// for each argument
for (unsigned int argc=0; argc<val.size(); argc++) {
@ -180,7 +182,7 @@ bool Keys::addBinding(const std::string &linebuffer) {
else {
key = FbTk::KeyUtil::getKey(val[argc].c_str()); // else get the key
if (key == 0) {
cerr<<"Keys: Invalid key/modifier on line("<<
cerr<<_FBTEXT(Keys, InvalidKeyMod, "Keys: Invalid key/modifier on line", "A bad key/modifier string was found on line (number following)")<<" "<<
m_current_line<<"): "<<linebuffer<<endl;
return false;
}
@ -197,7 +199,7 @@ bool Keys::addBinding(const std::string &linebuffer) {
} else { // parse command line
if (last_key == 0) {
cerr<<"Keys: Error on line: "<<m_current_line<<endl;
cerr<<_FBTEXT(Keys, BadLine, "Keys: Error on line", "Error on line (number following)")<<": "<<m_current_line<<endl;
cerr<<"> "<<linebuffer<<endl;
return false;
}
@ -206,7 +208,7 @@ bool Keys::addBinding(const std::string &linebuffer) {
FbTk::StringUtil::strcasestr(linebuffer.c_str(),
val[argc].c_str() + 1); // +1 to skip ':'
if (str == 0) {
cerr<<"Keys: Error on line: "<<m_current_line<<endl;
cerr<<_FBTEXT(Keys, BadLine, "Keys: Error on line", "Error on line (number following)")<<": "<<m_current_line<<endl;
cerr<<"> "<<linebuffer<<endl;
ret_val = false;
} else {
@ -214,12 +216,12 @@ bool Keys::addBinding(const std::string &linebuffer) {
last_key->m_command = CommandParser::instance().parseLine(str);
if (*last_key->m_command == 0) {
cerr<<"Keys: Error on line: "<<m_current_line<<endl;
cerr<<_FBTEXT(Keys, BadLine, "Keys: Error on line", "Error on line (number following)")<<": "<<m_current_line<<endl;
cerr<<"> "<<linebuffer<<endl;
} else {
// Add the keychain to list
if (!mergeTree(current_key)) {
cerr<<"Keys: Failed to merge keytree!"<<endl;
cerr<<_FBTEXT(Keys, BadMerge, "Keys: Failed to merge keytree!", "relatively technical error message. Key bindings are stored in a tree structure")<<endl;
ret_val = false;
}
}

View file

@ -41,9 +41,8 @@ defaults.hh: Makefile
echo '#define DEFAULT_INITFILE "$(pkgdatadir)/init"' >> defaults.hh
echo '#define LOCALEPATH "$(pkgdatadir)/nls"' >> defaults.hh
# some extra deps for I18n and fluxbox
# an extra dep for fluxbox
I18n.$(OBJEXT): defaults.hh
fluxbox.$(OBJEXT): defaults.hh
if NEWWMSPEC
@ -78,7 +77,6 @@ fluxbox_SOURCES = AtomHandler.hh ArrowButton.hh ArrowButton.cc \
FbAtoms.hh FbAtoms.cc FbWinFrame.hh FbWinFrame.cc \
FbWinFrameTheme.hh FbWinFrameTheme.cc \
fluxbox.cc fluxbox.hh \
I18n.cc I18n.hh \
Keys.cc Keys.hh main.cc \
Netizen.cc Netizen.hh \
RootTheme.hh RootTheme.cc \

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: MenuCreator.cc,v 1.5 2004/05/03 21:37:01 fluxgen Exp $
// $Id: MenuCreator.cc,v 1.6 2004/06/07 11:46:04 rathnor Exp $
#include "MenuCreator.hh"
@ -29,7 +29,6 @@
#include "fluxbox.hh"
#include "CommandParser.hh"
#include "Window.hh"
#include "I18n.hh"
#include "FbMenu.hh"
#include "IconMenu.hh"
@ -40,6 +39,7 @@
#include "FbMenuParser.hh"
#include "StyleMenuItem.hh"
#include "FbTk/I18n.hh"
#include "FbTk/MultiButtonMenuItem.hh"
#include "FbTk/RefCount.hh"
#include "FbTk/MacroCommand.hh"
@ -119,10 +119,7 @@ static void translateMenuItem(Parser &parse,
FbTk::Menu &menu) {
const int screen_number = menu.screenNumber();
static I18n &i18n = *I18n::instance();
using namespace FBNLS;
#define SCREENNLS(a, b) i18n.getMessage(ScreenSet, a, b)
_FB_USES_NLS;
if (str_key == "end") {
return;
@ -133,13 +130,13 @@ static void translateMenuItem(Parser &parse,
if (submenu == 0)
return;
if (str_label.empty())
menu.insert(i18n.getMessage(IconSet, IconIcons, "Icons"));
menu.insert(_FBTEXT(Menu, Icons, "Icons", "Iconic windows menu title"));
else
menu.insert(str_label.c_str(), submenu);
} else if (str_key == "exit") { // exit
FbTk::RefCount<FbTk::Command> exit_cmd(CommandParser::instance().parseLine("exit"));
if (str_label.empty())
menu.insert(SCREENNLS(ScreenExit, "Exit"), exit_cmd);
menu.insert(_FBTEXT(Menu, Exit, "Exit", "Exit Command"), exit_cmd);
else
menu.insert(str_label.c_str(), exit_cmd);
} else if (str_key == "exec") {
@ -191,18 +188,18 @@ static void translateMenuItem(Parser &parse,
FbTk::RefCount<FbTk::Command> restart_fb(CommandParser::instance().
parseLine("restart"));
if (str_label.empty())
menu.insert(SCREENNLS(ScreenRestart, "Restart"), restart_fb);
menu.insert(_FBTEXT(Menu, Restart, "Restart", "Restart Command"), restart_fb);
else
menu.insert(str_label.c_str(), restart_fb);
} // end of restart
else if (str_key == "reconfig") { // reconf
//
//!! TODO: NLS
//
FbTk::RefCount<FbTk::Command>
reconfig_fb_cmd(CommandParser::instance().
parseLine("reconfigure"));
menu.insert(str_label.c_str(), reconfig_fb_cmd);
if (str_label.empty())
menu.insert(_FBTEXT(Menu, Reconfigure, "Reload Config", "Reload all the configs"), reconfig_fb_cmd);
else
menu.insert(str_label.c_str(), reconfig_fb_cmd);
} else if (str_key == "stylesdir" || str_key == "stylesmenu") {
createStyleMenu(menu, str_label,
@ -223,8 +220,6 @@ static void translateMenuItem(Parser &parse,
if (*command != 0)
menu.insert(str_label.c_str(), command);
}
#undef SCREENNLS
}
@ -347,23 +342,18 @@ bool MenuCreator::createWindowMenuItem(const std::string &type,
const std::string &label,
FbTk::Menu &menu,
FluxboxWindow &win) {
static I18n &i18n = *I18n::instance();
typedef FbTk::RefCount<FbTk::Command> RefCmd;
typedef FbTk::SimpleCommand<FluxboxWindow> WindowCmd;
using namespace FBNLS;
#define WINDOWNLS(a, b) std::string real_label = label; if (label.empty()) real_label = i18n.getMessage(FBNLS::WindowmenuSet, a, b)
_FB_USES_NLS;
if (type == "shade") {
WINDOWNLS(WindowmenuShade, "Shade");
RefCmd shade_cmd(new WindowCmd(win, &FluxboxWindow::shade));
menu.insert(real_label.c_str(), shade_cmd);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Shade, "Shade", "Shade the window"):label.c_str(), shade_cmd);
} else if (type == "maximize") {
WINDOWNLS(WindowmenuMaximize, "Maximize");
RefCmd maximize_cmd(new WindowCmd(win, &FluxboxWindow::maximizeFull));
RefCmd maximize_vert_cmd(new WindowCmd(win, &FluxboxWindow::maximizeVertical));
RefCmd maximize_horiz_cmd(new WindowCmd(win, &FluxboxWindow::maximizeHorizontal));
FbTk::MultiButtonMenuItem *maximize_item = new FbTk::MultiButtonMenuItem(3, real_label.c_str());
FbTk::MultiButtonMenuItem *maximize_item = new FbTk::MultiButtonMenuItem(3, label.empty()?_FBTEXT(Windowmenu, Maximize, "Maximize", "Maximize the window"):label.c_str());
// create maximize item with:
// button1: Maximize normal
// button2: Maximize Vertical
@ -373,25 +363,20 @@ bool MenuCreator::createWindowMenuItem(const std::string &type,
maximize_item->setCommand(3, maximize_horiz_cmd);
menu.insert(maximize_item);
} else if (type == "iconify") {
WINDOWNLS(WindowmenuIconify, "Iconify");
RefCmd iconify_cmd(new WindowCmd(win, &FluxboxWindow::iconify));
menu.insert(real_label.c_str(), iconify_cmd);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Iconify, "Iconify", "Iconify the window"):label.c_str(), iconify_cmd);
} else if (type == "close") {
WINDOWNLS(WindowmenuClose, "Close");
RefCmd close_cmd(new WindowCmd(win, &FluxboxWindow::close));
menu.insert(real_label.c_str(), close_cmd);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Close, "Close", "Close the window"):label.c_str(), close_cmd);
} else if (type == "lower") {
WINDOWNLS(WindowmenuLower, "Lower");
RefCmd lower_cmd(new WindowCmd(win, &FluxboxWindow::lower));
menu.insert(real_label.c_str(), lower_cmd);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Lower, "Lower", "Lower the window"):label.c_str(), lower_cmd);
} else if (type == "raise") {
WINDOWNLS(WindowmenuRaise, "Raise");
RefCmd raise_cmd(new WindowCmd(win, &FluxboxWindow::raise));
menu.insert(real_label.c_str(), raise_cmd);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Raise, "Raise", "Raise the window"):label.c_str(), raise_cmd);
} else if (type == "stick") {
WINDOWNLS(WindowmenuStick, "Stick");
RefCmd stick_cmd(new WindowCmd(win, &FluxboxWindow::stick));
menu.insert(real_label.c_str(), stick_cmd);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Stick, "Stick", "Stick the window"):label.c_str(), stick_cmd);
} else if (type == "extramenus") {
FluxboxWindow::ExtraMenus::iterator it = win.extraMenus().begin();
FluxboxWindow::ExtraMenus::iterator it_end = win.extraMenus().end();
@ -401,10 +386,8 @@ bool MenuCreator::createWindowMenuItem(const std::string &type,
}
} else if (type == "sendto") {
WINDOWNLS(WindowmenuSendTo, "Send To ...");
menu.insert(real_label.c_str(), new SendToMenu(win));
menu.insert(label.empty()?_FBTEXT(Windowmenu, Shade, "Shade", "Shade the window"):label.c_str(), new SendToMenu(win));
} else if (type == "layer") {
WINDOWNLS(WindowmenuLayer, "Layer ...");
BScreen *screen = Fluxbox::instance()->findScreen(menu.screenNumber());
if (screen == 0)
return false;
@ -415,14 +398,13 @@ bool MenuCreator::createWindowMenuItem(const std::string &type,
&win,
false);
submenu->disableTitle();
menu.insert(real_label.c_str(), submenu);
menu.insert(label.empty()?_FBTEXT(Windowmenu, Layer, "Layer ...", "Layer menu"):label.c_str(), submenu);
} else if (type == "separator") {
menu.insert("---");
} else
return false;
#undef WINDOWNLS
return true;
}

View file

@ -20,9 +20,10 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: RegExp.cc,v 1.2 2003/06/13 11:43:46 fluxgen Exp $
// $Id: RegExp.cc,v 1.3 2004/06/07 11:46:04 rathnor Exp $
#include "RegExp.hh"
#include "FbTk/I18n.hh"
//use GNU extensions
#ifndef _GNU_SOURCE
@ -37,7 +38,7 @@ using namespace std;
/********************************************************
* RegExp *
***********/
**********/
// full_match is to say if we match on this regexp using the full string
// or just a substring. Substrings aren't supported if not HAVE_REGEXP
@ -57,12 +58,13 @@ m_regex(0) {
int ret = regcomp(m_regex, match.c_str(), REG_NOSUB | REG_EXTENDED);
if (ret != 0) {
char *errstr = 0;
_FB_USES_NLS;
// gives us the length of the string
unsigned int size = regerror(ret, m_regex, errstr, 0);
errstr = new char[size];
regerror(ret, m_regex, errstr, size);
cerr<<"Error parsing regular expression: "<<errstr<<endl;
cerr<<_FBTEXT(Fluxbox, ErrorRegexp, "Error parsing regular expression", "Error parsing regular expression (following)")<<": "<<errstr<<endl;
delete [] errstr;
delete m_regex; // I don't think I regfree a failed compile?
m_regex = 0;

View file

@ -21,7 +21,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Remember.cc,v 1.36 2004/04/18 17:53:15 fluxgen Exp $
// $Id: Remember.cc,v 1.37 2004/06/07 11:46:04 rathnor Exp $
#include "Remember.hh"
#include "ClientPattern.hh"
@ -32,6 +32,7 @@
#include "FbCommands.hh"
#include "fluxbox.hh"
#include "FbTk/I18n.hh"
#include "FbTk/StringUtil.hh"
#include "FbTk/MenuItem.hh"
#include "FbTk/App.hh"
@ -123,25 +124,25 @@ FbTk::Menu *createRememberMenu(Remember &remember, FluxboxWindow &win, bool enab
return menu;
}
// TODO: nls
menu->insert(new RememberMenuItem("Workspace", remember, win,
Remember::REM_WORKSPACE));
menu->insert(new RememberMenuItem("Jump to workspace", remember, win,
Remember::REM_JUMPWORKSPACE));
menu->insert(new RememberMenuItem("Dimensions", remember, win,
Remember::REM_DIMENSIONS));
menu->insert(new RememberMenuItem("Position", remember, win,
Remember::REM_POSITION));
menu->insert(new RememberMenuItem("Sticky", remember, win,
Remember::REM_STUCKSTATE));
menu->insert(new RememberMenuItem("Decorations", remember, win,
Remember::REM_DECOSTATE));
menu->insert(new RememberMenuItem("Shaded", remember, win,
Remember::REM_SHADEDSTATE));
menu->insert(new RememberMenuItem("Layer", remember, win,
Remember::REM_LAYER));
menu->insert(new RememberMenuItem("Save on close", remember, win,
Remember::REM_SAVEONCLOSE));
_FB_USES_NLS;
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Workspace, "Workspace", "Remember Workspace"),
remember, win, Remember::REM_WORKSPACE));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, JumpToWorkspace, "Jump to workspace", "Change active workspace to remembered one on open"),
remember, win, Remember::REM_JUMPWORKSPACE));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Dimensions, "Dimensions", "Remember Dimensions - windth width and height"),
remember, win, Remember::REM_DIMENSIONS));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Position, "Position", "Remember position - window co-ordinates"),
remember, win, Remember::REM_POSITION));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Sticky, "Sticky", "Remember Sticky"),
remember, win, Remember::REM_STUCKSTATE));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Decorations, "Decorations", "Remember window decorations"),
remember, win, Remember::REM_DECOSTATE));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Shaded, "Shaded", "Remember shaded"),
remember, win, Remember::REM_SHADEDSTATE));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, Layer, "Layer", "Remember Layer"),
remember, win, Remember::REM_LAYER));
menu->insert(new RememberMenuItem(_FBTEXT(Remember, SaveOnClose, "Save on close", "Save remembered attributes on close"),
remember, win, Remember::REM_SAVEONCLOSE));
menu->update();
return menu;
@ -284,6 +285,7 @@ Application * Remember::add(WinClient &winclient) {
int Remember::parseApp(ifstream &file, Application &app, string *first_line) {
string line;
_FB_USES_NLS;
int row = 0;
while (! file.eof()) {
if (first_line || getline(file, line)) {
@ -415,7 +417,7 @@ int Remember::parseApp(ifstream &file, Application &app, string *first_line) {
} else if (str_key == "end") {
return row;
} else {
cerr << "Unsupported apps key = " << str_key << endl;
cerr << _FBTEXT(Remember, Unknown, "Unknown apps key", "apps entry type not known")<<" = " << str_key << endl;
}
}
}
@ -758,13 +760,13 @@ void Remember::forgetAttrib(WinClient &winclient, Attribute attrib) {
void Remember::setupFrame(FluxboxWindow &win) {
WinClient &winclient = win.winClient();
_FB_USES_NLS;
// we don't touch the window if it is a transient
// of something else
// All windows get the remember menu.
// TODO: nls
win.addExtraMenu("Remember...", createRememberMenu(*this, win, (winclient.transientFor() == 0)));
win.addExtraMenu(_FBTEXT(Remember, MenuItemName, "Remember...", "Remember item in menu"),
createRememberMenu(*this, win, (winclient.transientFor() == 0)));
if (winclient.transientFor())
return;

View file

@ -22,12 +22,11 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Screen.cc,v 1.278 2004/05/13 01:48:17 rathnor Exp $
// $Id: Screen.cc,v 1.279 2004/06/07 11:46:04 rathnor Exp $
#include "Screen.hh"
#include "I18n.hh"
#include "fluxbox.hh"
#include "Window.hh"
#include "Workspace.hh"
@ -58,6 +57,7 @@
#include "AtomHandler.hh"
#include "FbTk/I18n.hh"
#include "FbTk/Subject.hh"
#include "FbTk/FbWindow.hh"
#include "FbTk/SimpleCommand.hh"
@ -135,10 +135,12 @@ static bool running = true;
namespace {
int anotherWMRunning(Display *display, XErrorEvent *) {
cerr<<I18n::instance()->
getMessage(FBNLS::ScreenSet, FBNLS::ScreenAnotherWMRunning,
"BScreen::BScreen: an error occured while querying the X server.\n"
" another window manager already running on display ")<<DisplayString(display)<<endl;
_FB_USES_NLS;
cerr<<_FBTEXT(Screen, AnotherWMRunning,
"BScreen::BScreen: an error occured while querying the X server.\n"
" another window manager already running on display ",
"Message when another WM is found already active on all screens")
<<DisplayString(display)<<endl;
running = false;
@ -248,11 +250,12 @@ BScreen::BScreen(FbTk::ResourceManager &rm,
if (! managed)
return;
I18n *i18n = I18n::instance();
_FB_USES_NLS;
fprintf(stderr, i18n->getMessage(FBNLS::ScreenSet, FBNLS::ScreenManagingScreen,
"BScreen::BScreen: managing screen %d "
"using visual 0x%lx, depth %d\n"),
fprintf(stderr, _FBTEXT(Screen, ManagingScreen,
"BScreen::BScreen: managing screen %d "
"using visual 0x%lx, depth %d\n",
"informational message saying screen number (%d), visual (%lx), and colour depth (%d)"),
screenNumber(), XVisualIDFromVisual(rootWindow().visual()),
rootWindow().depth());
@ -362,8 +365,7 @@ BScreen::BScreen(FbTk::ResourceManager &rm,
// own resources we must do this.
fluxbox->load_rc(*this);
// TODO: nls
m_configmenu.reset(createMenu("Configuration"));
m_configmenu.reset(createMenu(_FBTEXT(Menu, Configuration, "Configuration", "Title of configuration menu")));
setupConfigmenu(*m_configmenu.get());
m_configmenu->setInternalMenu();
@ -1646,7 +1648,6 @@ void BScreen::initMenus() {
}
void BScreen::initMenu() {
I18n *i18n = I18n::instance();
if (m_rootmenu.get()) {
// since all menus in root is submenus in m_rootmenu
@ -1668,19 +1669,17 @@ void BScreen::initMenu() {
if (m_rootmenu.get() == 0) {
m_rootmenu.reset(createMenu("Fluxbox default menu"));
_FB_USES_NLS;
m_rootmenu.reset(createMenu(_FBTEXT(Menu, DefaultRootMenu, "Fluxbox default menu", "Title of fallback root menu")));
FbTk::RefCount<FbTk::Command> restart_fb(CommandParser::instance().parseLine("restart"));
FbTk::RefCount<FbTk::Command> exit_fb(CommandParser::instance().parseLine("exit"));
FbTk::RefCount<FbTk::Command> execute_xterm(CommandParser::instance().parseLine("exec xterm"));
m_rootmenu->setInternalMenu();
m_rootmenu->insert(i18n->getMessage(FBNLS::ScreenSet, FBNLS::Screenxterm,
"xterm"),
m_rootmenu->insert(_FBTEXT(Menu, xterm, "xterm", "xterm - in fallback menu"),
execute_xterm);
m_rootmenu->insert(i18n->getMessage(FBNLS::ScreenSet, FBNLS::ScreenRestart,
"Restart"),
m_rootmenu->insert(_FBTEXT(Menu, Restart, "Restart", "Restart command"),
restart_fb);
m_rootmenu->insert(i18n->getMessage(FBNLS::ScreenSet, FBNLS::ScreenExit,
"Exit"),
m_rootmenu->insert(_FBTEXT(Menu, Exit, "Exit", "Exit command"),
exit_fb);
}
@ -1705,8 +1704,7 @@ void BScreen::removeConfigMenu(FbTk::Menu &menu) {
}
void BScreen::setupConfigmenu(FbTk::Menu &menu) {
I18n *i18n = I18n::instance();
using namespace FBNLS;
_FB_USES_NLS;
menu.removeAll();
@ -1720,26 +1718,27 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
// create focus menu
// we don't set this to internal menu so will
// be deleted toghether with the parent
const char *focusmenu_label = i18n->getMessage(ConfigmenuSet, ConfigmenuFocusModel,
"Focus Model");
const char *focusmenu_label = _FBTEXT(Configmenu, FocusModel,
"Focus Model", "Method used to give focus to windows");
FbTk::Menu *focus_menu = createMenu(focusmenu_label ? focusmenu_label : "");
#define _FOCUSITEM(a, b, c, d) focus_menu->insert(new FocusModelMenuItem(i18n->getMessage(a, b, c), *this, d, save_and_reconfigure))
#define _FOCUSITEM(a, b, c, d, e) focus_menu->insert(new FocusModelMenuItem(_FBTEXT(a, b, c, d), *this, e, save_and_reconfigure))
_FOCUSITEM(ConfigmenuSet, ConfigmenuClickToFocus,
"Click To Focus",
_FOCUSITEM(Configmenu, ClickToFocus,
"Click To Focus", "Click to focus",
CLICKTOFOCUS);
_FOCUSITEM(ConfigmenuSet, ConfigmenuSloppyFocus,
"Sloppy Focus",
_FOCUSITEM(Configmenu, SloppyFocus,
"Sloppy Focus", "Sloppy Focus",
SLOPPYFOCUS);
_FOCUSITEM(ConfigmenuSet, ConfigmenuSemiSloppyFocus,
"Semi Sloppy Focus",
_FOCUSITEM(Configmenu, SemiSloppyFocus,
"Semi Sloppy Focus", "Semi Sloppy Focus",
SEMISLOPPYFOCUS);
#undef _FOCUSITEM
focus_menu->insert(new BoolMenuItem(i18n->getMessage(ConfigmenuSet,
ConfigmenuAutoRaise,
"Auto Raise"),
focus_menu->insert(new BoolMenuItem(_FBTEXT(Configmenu,
AutoRaise,
"Auto Raise",
"Auto Raise windows on sloppy"),
*resource.auto_raise,
save_and_reconfigure));
@ -1758,38 +1757,38 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
for (; it != it_end; ++it)
menu.insert(it->first, it->second);
#define _BOOLITEM(a, b, c, d, e) menu.insert(new BoolMenuItem(i18n->getMessage(a, b, c), d, e))
#define _BOOLITEM(a, b, c, d, e, f) menu.insert(new BoolMenuItem(_FBTEXT(a, b, c, d), e, f))
_BOOLITEM(ConfigmenuSet, ConfigmenuImageDithering,
"Image Dithering",
_BOOLITEM(Configmenu, ImageDithering,
"Image Dithering", "Image Dithering",
*resource.image_dither, save_and_reconfigure);
_BOOLITEM(ConfigmenuSet, ConfigmenuOpaqueMove,
"Opaque Window Moving",
_BOOLITEM(Configmenu, OpaqueMove,
"Opaque Window Moving", "Window Moving with whole window visible (as opposed to outline moving)",
*resource.opaque_move, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuFullMax,
"Full Maximization",
_BOOLITEM(Configmenu, FullMax,
"Full Maximization", "Maximise over slit, toolbar, etc",
*resource.full_max, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuFocusNew,
"Focus New Windows",
_BOOLITEM(Configmenu, FocusNew,
"Focus New Windows", "Focus newly created windows",
*resource.focus_new, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuFocusLast,
"Focus Last Window on Workspace",
_BOOLITEM(Configmenu, FocusLast,
"Focus Last Window on Workspace", "Focus Last Window on Workspace",
*resource.focus_last, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuWorkspaceWarping,
"Workspace Warping",
_BOOLITEM(Configmenu, WorkspaceWarping,
"Workspace Warping", "Workspace Warping - dragging windows to the edge and onto the next workspace",
*resource.workspace_warping, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuDesktopWheeling,
"Desktop MouseWheel Switching",
_BOOLITEM(Configmenu, DesktopWheeling,
"Desktop MouseWheel Switching", "Workspace switching using mouse wheel",
*resource.desktop_wheeling, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuDecorateTransient,
"Decorate Transient Windows",
_BOOLITEM(Configmenu, DecorateTransient,
"Decorate Transient Windows", "Decorate Transient Windows",
*resource.decorate_transient, saverc_cmd);
_BOOLITEM(ConfigmenuSet, ConfigmenuClickRaises,
"Click Raises",
_BOOLITEM(Configmenu, ClickRaises,
"Click Raises", "Click Raises",
*resource.click_raises, saverc_cmd);
// setup antialias cmd to reload style and save resource on toggle
_BOOLITEM(ConfigmenuSet, ConfigmenuAntiAlias,
"AntiAlias",
_BOOLITEM(Configmenu, AntiAlias,
"AntiAlias", "Use Anti-aliased fonts",
*resource.antialias, save_and_reconfigure);
#undef _BOOLITEM
@ -1819,7 +1818,7 @@ void BScreen::shutdown() {
void BScreen::showPosition(int x, int y) {
if (!doShowWindowPos())
if (!doShowWindowPos())
return;
if (! pos_visible) {
@ -1839,10 +1838,13 @@ void BScreen::showPosition(int x, int y) {
pos_visible = true;
}
char label[256];
_FB_USES_NLS;
sprintf(label,
I18n::instance()->getMessage(FBNLS::ScreenSet, FBNLS::ScreenPositionFormat,
"X: %4d x Y: %4d"), x, y);
_FBTEXT(Screen, PositionFormat,
"X: %4d x Y: %4d",
"Format for screen coordinates - %4d for X, and %4d for Y"), x, y);
m_pos_window.clear();
@ -1886,10 +1888,13 @@ void BScreen::showGeometry(unsigned int gx, unsigned int gy) {
}
char label[256];
_FB_USES_NLS;
sprintf(label,
I18n::instance()->getMessage(FBNLS::ScreenSet, FBNLS::ScreenGeometryFormat,
"W: %4d x H: %4d"), gx, gy);
_FBTEXT(Screen, GeometryFormat,
"W: %4d x H: %4d",
"Format for width and height window, %4d for widht, and %4d for height"),
gx, gy);
m_geom_window.clear();
@ -1961,10 +1966,12 @@ bool BScreen::doSkipWindow(const WinClient &winclient, int opts) {
}
void BScreen::renderGeomWindow() {
_FB_USES_NLS;
const char *s = I18n::instance()->getMessage(FBNLS::ScreenSet,
FBNLS::ScreenGeometryLength,
"W: 0000 x H: 0000");
const char *s = _FBTEXT(Screen,
GeometryLength,
"W: 0000 x H: 0000",
"Representative maximum sized text for width and height dialog");
int l = strlen(s);
int geom_h = winFrameTheme().font().height() + winFrameTheme().bevelWidth()*2;
@ -2004,10 +2011,12 @@ void BScreen::renderGeomWindow() {
void BScreen::renderPosWindow() {
_FB_USES_NLS;
const char *s = I18n::instance()->getMessage(FBNLS::ScreenSet,
FBNLS::ScreenPositionLength,
"0: 0000 x 0: 0000");
const char *s = _FBTEXT(Screen,
PositionLength,
"0: 0000 x 0: 0000",
"Representative maximum sized text for X and Y dialog");
int l = strlen(s);
int pos_h = winFrameTheme().font().height() + winFrameTheme().bevelWidth()*2;

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Slit.cc,v 1.94 2004/05/17 15:20:32 rathnor Exp $
// $Id: Slit.cc,v 1.95 2004/06/07 11:46:04 rathnor Exp $
#include "Slit.hh"
@ -35,7 +35,6 @@
#include "config.h"
#endif // HAVE_CONFIG_H
#include "I18n.hh"
#include "Screen.hh"
#include "ImageControl.hh"
#include "RefCount.hh"
@ -58,6 +57,7 @@
#include "Xutil.hh"
#include "FbAtoms.hh"
#include "FbTk/StringUtil.hh"
#include "FbTk/I18n.hh"
#include <algorithm>
#include <iostream>
@ -79,8 +79,9 @@ template<>
void FbTk::Resource<Slit::Placement>::setFromString(const char *strval) {
if (strcasecmp(strval, "TopLeft")==0)
m_value = Slit::TOPLEFT;
else if (strcasecmp(strval, "CenterLeft")==0)
m_value = Slit::CENTERLEFT;
else if (strcasecmp(strval, "LeftCenter")==0
|| strcasecmp(strval, "CenterLeft")==0)
m_value = Slit::LEFTCENTER;
else if (strcasecmp(strval, "BottomLeft")==0)
m_value = Slit::BOTTOMLEFT;
else if (strcasecmp(strval, "TopCenter")==0)
@ -89,8 +90,9 @@ void FbTk::Resource<Slit::Placement>::setFromString(const char *strval) {
m_value = Slit::BOTTOMCENTER;
else if (strcasecmp(strval, "TopRight")==0)
m_value = Slit::TOPRIGHT;
else if (strcasecmp(strval, "CenterRight")==0)
m_value = Slit::CENTERRIGHT;
else if (strcasecmp(strval, "RightCenter")==0
|| strcasecmp(strval, "CenterRight")==0)
m_value = Slit::RIGHTCENTER;
else if (strcasecmp(strval, "BottomRight")==0)
m_value = Slit::BOTTOMRIGHT;
else
@ -113,8 +115,8 @@ string FbTk::Resource<Slit::Placement>::getString() {
case Slit::TOPLEFT:
return string("TopLeft");
break;
case Slit::CENTERLEFT:
return string("CenterLeft");
case Slit::LEFTCENTER:
return string("LeftCenter");
break;
case Slit::BOTTOMLEFT:
return string("BottomLeft");
@ -128,8 +130,8 @@ string FbTk::Resource<Slit::Placement>::getString() {
case Slit::TOPRIGHT:
return string("TopRight");
break;
case Slit::CENTERRIGHT:
return string("CenterRight");
case Slit::RIGHTCENTER:
return string("RightCenter");
break;
case Slit::BOTTOMRIGHT:
return string("BottomRight");
@ -198,14 +200,13 @@ public:
}
void setLabel(const char *label) {
I18n *i18n = I18n::instance();
_FB_USES_NLS;
m_label = (label ? label : "");
std::string reallabel = m_label + " " +
( m_slit.direction() == Slit::HORIZONTAL ?
i18n->getMessage(FBNLS::CommonSet, FBNLS::CommonDirectionHoriz,
"Horizontal") :
i18n->getMessage(FBNLS::CommonSet, FBNLS::CommonDirectionVert,
"Vertical") );
_FBTEXT(Align, Horizontal, "Horizontal", "Horizontal"):
_FBTEXT(Align, Vertical, "Vertical", "Vertical"));
FbTk::MenuItem::setLabel(reallabel.c_str());
}
private:
@ -278,6 +279,8 @@ Slit::Slit(BScreen &scr, FbTk::XLayer &layer, const char *filename)
m_rc_layernum(scr.resourceManager(), Fluxbox::Layer(Fluxbox::instance()->getDockLayer()),
scr.name() + ".slit.layer", scr.altName() + ".Slit.Layer") {
_FB_USES_NLS;
// attach to theme and root window change signal
m_slit_theme->reconfigSig().attach(this);
scr.resizeSig().attach(this);
@ -315,9 +318,8 @@ Slit::Slit(BScreen &scr, FbTk::XLayer &layer, const char *filename)
m_layeritem.reset(new FbTk::XLayerItem(frame.window, layer));
moveToLayer((*m_rc_layernum).getNum());
// TODO: nls
if (m_layermenu.get())
m_layermenu->setLabel("Slit Layer");
m_layermenu->setLabel(_FBTEXT(Slit, Layer, "Slit Layer", "Title of Slit Layer Menu"));
// Get client list for sorting purposes
loadClientList(filename);
@ -391,11 +393,11 @@ void Slit::updateStrut() {
else
right = width();
break;
case CENTERLEFT:
case LEFTCENTER:
if (direction() == VERTICAL)
left = width();
break;
case CENTERRIGHT:
case RIGHTCENTER:
if (direction() == VERTICAL)
right = width();
break;
@ -804,7 +806,7 @@ void Slit::reposition() {
}
break;
case CENTERLEFT:
case LEFTCENTER:
frame.x = head_x;
frame.y = head_y + (head_h - frame.height) / 2;
frame.x_hidden = head_x + bevel_width -
@ -856,7 +858,7 @@ void Slit::reposition() {
}
break;
case CENTERRIGHT:
case RIGHTCENTER:
default:
frame.x = head_x + head_w - frame.width - border_width*2;
frame.y = head_y + ((head_h - frame.height) / 2);
@ -1096,15 +1098,16 @@ void Slit::loadClientList(const char *filename) {
void Slit::updateClientmenu() {
if (screen().isShuttingdown())
return;
_FB_USES_NLS;
// clear old items
m_clientlist_menu.removeAll();
m_clientlist_menu.setLabel("Clients");
m_clientlist_menu.setLabel(_FBTEXT(Slit, ClientsMenu, "Clients", "Slit client menu"));
FbTk::RefCount<FbTk::Command> cycle_up(new FbTk::SimpleCommand<Slit>(*this, &Slit::cycleClientsUp));
FbTk::RefCount<FbTk::Command> cycle_down(new FbTk::SimpleCommand<Slit>(*this, &Slit::cycleClientsDown));
m_clientlist_menu.insert("Cycle Up", cycle_up);
m_clientlist_menu.insert("Cycle Down", cycle_down);
m_clientlist_menu.insert(_FBTEXT(Slit, CycleUp, "Cycle Up", "Cycle clients upwards"), cycle_up);
m_clientlist_menu.insert(_FBTEXT(Slit, CycleDown, "Cycle Down", "Cycle clients downwards"), cycle_down);
FbTk::MenuItem *separator = new FbTk::MenuItem("---");
separator->setEnabled(false);
@ -1148,8 +1151,7 @@ void Slit::setAutoHide(bool val) {
}
void Slit::setupMenu() {
I18n *i18n = I18n::instance();
using namespace FBNLS;
_FB_USES_NLS;
using namespace FbTk;
FbTk::MacroCommand *s_a_reconf_macro = new FbTk::MacroCommand();
@ -1168,40 +1170,39 @@ void Slit::setupMenu() {
FbTk::RefCount<FbTk::Command> save_and_reconfigure_slit(s_a_reconf_slit_macro);
// setup base menu
m_slitmenu.setLabel("Slit");
m_slitmenu.insert(i18n->getMessage(CommonSet, CommonPlacementTitle,
"Placement"),
m_slitmenu.setLabel(_FBTEXT(Slit, Slit, "Slit", "The Slit"));
m_slitmenu.insert(_FBTEXT(Menu, Placement, "Placement", "Title of Placement menu"),
&m_placement_menu);
m_slitmenu.insert("Layer...", m_layermenu.get());
m_slitmenu.insert(_FBTEXT(Menu, Layer, "Layer...", "Title of Layer menu"), m_layermenu.get());
#ifdef XINERAMA
if (screen().hasXinerama()) {
// TODO: nls (main label, plus menu heading)
m_slitmenu.insert("On Head...", new XineramaHeadMenu<Slit>(
screen().menuTheme(),
screen(),
screen().imageControl(),
*screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()),
*this,
"Slit on Head"
));
m_slitmenu.insert(_FBTEXT(Menu, OnHead, "On Head...", "Title of On Head menu"),
new XineramaHeadMenu<Slit>(
screen().menuTheme(),
screen(),
screen().imageControl(),
*screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()),
*this,
_FBTEXT(Slit, OnHead, "Slit on Head", "Title of Slits On Head menu")
));
}
#endif //XINERAMA
m_slitmenu.insert(new BoolMenuItem(i18n->getMessage(CommonSet, CommonAutoHide,
"Auto hide"),
m_slitmenu.insert(new BoolMenuItem(_FBTEXT(Common, AutoHide, "Auto hide", "This thing automatically hides when not close by"),
*m_rc_auto_hide,
save_and_reconfigure_slit));
m_slitmenu.insert(new BoolMenuItem("Maximize Over",
m_slitmenu.insert(new BoolMenuItem(_FBTEXT(Common, MaximizeOver,"Maximize Over", "Maximize over this thing when maximizing"),
*m_rc_maximize_over,
save_and_reconfigure_slit));
// this saves resources and clears the slit window to update alpha value
FbTk::MenuItem *alpha_menuitem = new IntResMenuItem("Alpha",
m_rc_alpha,
0, 255);
FbTk::MenuItem *alpha_menuitem =
new IntResMenuItem(_FBTEXT(Common, Alpha, "Alpha", "Transparency level"),
m_rc_alpha,
0, 255);
// setup command for alpha value
MacroCommand *alpha_macrocmd = new MacroCommand();
RefCount<Command> clear_cmd(new SimpleCommand<Slit>(*this, &Slit::clearWindow));
@ -1212,51 +1213,50 @@ void Slit::setupMenu() {
m_slitmenu.insert(alpha_menuitem);
m_slitmenu.insert(new SlitDirMenuItem(i18n->getMessage(SlitSet, SlitSlitDirection,
"Slit Direction"),
m_slitmenu.insert(new SlitDirMenuItem(_FBTEXT(Slit, Direction, "Slit Direction", "Orientation of slit"),
*this,
save_and_reconfigure));
m_slitmenu.insert("Clients", &m_clientlist_menu);
m_slitmenu.insert(_FBTEXT(Slit, ClientsMenu, "Clients", "Slit client menu"), &m_clientlist_menu);
m_slitmenu.update();
// setup sub menu
m_placement_menu.setLabel(i18n->getMessage(SlitSet, SlitSlitPlacement,
"Slit Placement"));
m_placement_menu.setLabel(_FBTEXT(Slit, Placement, "Slit Placement", "Slit Placement"));
m_placement_menu.setMinimumSublevels(3);
m_layermenu->setInternalMenu();
m_clientlist_menu.setInternalMenu();
typedef list<pair<const char *, Slit::Placement> > Placements;
Placements place_menu;
// menu is 3 wide, 5 down
place_menu.push_back(make_pair(_FBTEXT(Align, TopLeft, "Top Left", "Top Left"), Slit::TOPLEFT));
place_menu.push_back(make_pair(_FBTEXT(Align, LeftCenter, "Left Center", "Left Center"), Slit::LEFTCENTER));
place_menu.push_back(make_pair(_FBTEXT(Align, BottomLeft, "Bottom Left", "Bottom Left"), Slit::BOTTOMLEFT));
place_menu.push_back(make_pair(_FBTEXT(Align, TopCenter, "Top Center", "Top Center"), Slit::TOPCENTER));
place_menu.push_back(make_pair((const char *)0, Slit::TOPLEFT));
place_menu.push_back(make_pair(_FBTEXT(Align, BottomCenter, "Bottom Center", "Bottom Center"), Slit::BOTTOMCENTER));
place_menu.push_back(make_pair(_FBTEXT(Align, TopRight, "Top Right", "Top Right"), Slit::TOPRIGHT));
place_menu.push_back(make_pair(_FBTEXT(Align, RightCenter, "Right Center", "Right Center"), Slit::RIGHTCENTER));
place_menu.push_back(make_pair(_FBTEXT(Align, BottomRight, "Bottom Right", "Bottom Right"), Slit::BOTTOMRIGHT));
// setup items in sub menu
struct {
int set;
int base;
const char *default_str;
Placement slit_placement;
} place_menu[] = {
{CommonSet, CommonPlacementTopLeft, "Top Left", Slit::TOPLEFT},
{CommonSet, CommonPlacementCenterLeft, "Center Left", Slit::CENTERLEFT},
{CommonSet, CommonPlacementBottomLeft, "Bottom Left", Slit::BOTTOMLEFT},
{CommonSet, CommonPlacementTopCenter, "Top Center", Slit::TOPCENTER},
{0, 0, 0, Slit::TOPLEFT}, // middle item, empty
{CommonSet, CommonPlacementBottomCenter, "Bottom Center", Slit::BOTTOMCENTER},
{CommonSet, CommonPlacementTopRight, "Top Right", Slit::TOPRIGHT},
{CommonSet, CommonPlacementCenterRight, "Center Right", Slit::CENTERRIGHT},
{CommonSet, CommonPlacementBottomRight, "Bottom Right", Slit::BOTTOMRIGHT}
};
// create items in sub menu
for (size_t i=0; i<9; ++i) {
if (place_menu[i].default_str == 0) {
const char *str = place_menu.front().first;
Slit::Placement placement = place_menu.front().second;
if (str == 0) {
m_placement_menu.insert("");
m_placement_menu.setItemEnabled(i, false);
} else {
const char *i18n_str = i18n->getMessage(place_menu[i].set,
place_menu[i].base,
place_menu[i].default_str);
m_placement_menu.insert(new PlaceSlitMenuItem(i18n_str, *this,
place_menu[i].slit_placement,
m_placement_menu.insert(new PlaceSlitMenuItem(str, *this,
placement,
save_and_reconfigure));
}
place_menu.pop_front();
}
// finaly update sub menu
m_placement_menu.update();
}

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
/// $Id: Slit.hh,v 1.40 2004/05/17 15:20:32 rathnor Exp $
/// $Id: Slit.hh,v 1.41 2004/06/07 11:46:04 rathnor Exp $
#ifndef SLIT_HH
#define SLIT_HH
@ -57,8 +57,8 @@ public:
/**
Placement on screen
*/
enum Placement { TOPLEFT = 1, CENTERLEFT, BOTTOMLEFT, TOPCENTER, BOTTOMCENTER,
TOPRIGHT, CENTERRIGHT, BOTTOMRIGHT };
enum Placement { TOPLEFT = 1, LEFTCENTER, BOTTOMLEFT, TOPCENTER, BOTTOMCENTER,
TOPRIGHT, RIGHTCENTER, BOTTOMRIGHT };
Slit(BScreen &screen, FbTk::XLayer &layer, const char *filename = 0);
virtual ~Slit();

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Toolbar.cc,v 1.139 2004/04/26 15:04:37 rathnor Exp $
// $Id: Toolbar.cc,v 1.140 2004/06/07 11:46:04 rathnor Exp $
#include "Toolbar.hh"
@ -32,7 +32,7 @@
// themes
#include "ToolbarTheme.hh"
#include "I18n.hh"
#include "FbTk/I18n.hh"
#include "fluxbox.hh"
#include "Screen.hh"
#include "IntResMenuItem.hh"
@ -225,7 +225,7 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, size_t width):
scrn.name() + ".toolbar.tools", scrn.altName() + ".Toolbar.Tools"),
m_shape(new Shape(frame.window, 0)),
m_resize_lock(false) {
_FB_USES_NLS;
// we need to get notified when the theme is reloaded
m_theme.reconfigSig().attach(this);
// listen to screen size changes
@ -234,15 +234,14 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, size_t width):
moveToLayer((*m_rc_layernum).getNum());
// TODO: nls
m_layermenu.setLabel("Toolbar Layer");
m_placementmenu.setLabel("Toolbar Placement");
m_layermenu.setLabel(_FBTEXT(Toolbar, Layer, "Toolbar Layer", "Title of toolbar layer menu"));
m_placementmenu.setLabel(_FBTEXT(Toolbar, Placement, "Toolbar Placement", "Title of toolbar placement menu"));
m_layermenu.setInternalMenu();
m_placementmenu.setInternalMenu();
setupMenus();
// add menu to screen
screen().addConfigMenu("Toolbar", menu());
screen().addConfigMenu(_FBTEXT(Toolbar, Toolbar, "Toolbar", "title of toolbar menu item"), menu());
// geometry settings
frame.width = width;
@ -751,8 +750,7 @@ void Toolbar::moveToLayer(int layernum) {
}
void Toolbar::setupMenus() {
const I18n &i18n = *I18n::instance();
using namespace FBNLS;
_FB_USES_NLS;
using namespace FbTk;
typedef RefCount<Command> RefCommand;
@ -762,14 +760,14 @@ void Toolbar::setupMenus() {
RefCommand start_edit(CommandParser::instance().parseLine("setworkspacenamedialog"));
menu().insert(i18n.getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarEditWkspcName,
"Edit current workspace name"),
menu().insert(_FBTEXT(Toolbar, EditWkspcName,
"Edit current workspace name", "Edit current workspace name"),
start_edit);
menu().setLabel(i18n.getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarToolbarTitle,
"Toolbar"));
menu().setLabel(_FBTEXT(Toolbar, ToolbarTitle,
"Toolbar", "Title of Toolbar menu"));
MenuItem *toolbar_menuitem = new IntResMenuItem("Toolbar width percent",
MenuItem *toolbar_menuitem = new IntResMenuItem(_FBTEXT(Toolbar, WidthPercent, "Toolbar width percent", "Percentage of screen width taken by toolbar"),
m_rc_width_percent,
0, 100); // min/max value
@ -785,8 +783,8 @@ void Toolbar::setupMenus() {
menu().insert(toolbar_menuitem);
menu().insert(new BoolMenuItem(i18n.getMessage(FBNLS::CommonSet, FBNLS::CommonAutoHide,
"Auto hide"),
menu().insert(new BoolMenuItem(_FBTEXT(Common, AutoHide,
"Auto hide", "Toggle auto hide of toolbar"),
*m_rc_auto_hide,
reconfig_toolbar_and_save_resource));
@ -795,66 +793,64 @@ void Toolbar::setupMenus() {
visible_macro->add(toggle_visible);
visible_macro->add(save_resources);
RefCommand toggle_visible_cmd(visible_macro);
menu().insert(new BoolMenuItem("Visible", *m_rc_visible, toggle_visible_cmd));
menu().insert(new BoolMenuItem(_FBTEXT(Common, Visible, "Visible", "Whether this item is visible"),
*m_rc_visible, toggle_visible_cmd));
menu().insert(new BoolMenuItem("Maximize Over", *m_rc_maximize_over,
menu().insert(new BoolMenuItem(_FBTEXT(Common, MaximizeOver,"Maximize Over", "Maximize over this thing when maximizing"),
*m_rc_maximize_over,
reconfig_toolbar_and_save_resource));
menu().insert("Layer...", &layermenu());
menu().insert(_FBTEXT(Menu, Layer, "Layer...", "Title of Layer menu"), &layermenu());
if (screen().hasXinerama()) {
// TODO: nls (main label plus menu heading
menu().insert("On Head...", new XineramaHeadMenu<Toolbar>(screen().menuTheme(),
screen(),
screen().imageControl(),
*screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()),
*this,
"Toolbar on Head"));
menu().insert(_FBTEXT(Menu, OnHead, "On Head...", "Title of On Head menu"),
new XineramaHeadMenu<Toolbar>(screen().menuTheme(),
screen(),
screen().imageControl(),
*screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()),
*this,
_FBTEXT(Toolbar, OnHead, "Toolbar on Head", "Title of toolbar on head menu")));
}
// setup items in placement menu
struct {
int set;
int base;
const char *default_str;
Toolbar::Placement placement;
} place_menu[] = {
{0, 0, "Top Left", Toolbar::TOPLEFT},
{0, 0, "Left Top", Toolbar::LEFTTOP},
{0, 0, "Left Center", Toolbar::LEFTCENTER},
{0, 0, "Left Bottom", Toolbar::LEFTBOTTOM},
{0, 0, "Bottom Left", Toolbar::BOTTOMLEFT},
{0, 0, "Top Center", Toolbar::TOPCENTER},
{0, 0, 0, Toolbar::TOPCENTER},
{0, 0, 0, Toolbar::BOTTOMCENTER},
{0, 0, 0, Toolbar::BOTTOMCENTER},
{0, 0, "Bottom Center", Toolbar::BOTTOMCENTER},
{0, 0, "Top Right", Toolbar::TOPRIGHT},
{0, 0, "Right Top", Toolbar::RIGHTTOP},
{0, 0, "Right Center", Toolbar::RIGHTCENTER},
{0, 0, "Right Bottom", Toolbar::RIGHTBOTTOM},
{0, 0, "Bottom Right", Toolbar::BOTTOMRIGHT}
};
typedef list<pair<const char *, Toolbar::Placement> > Placements;
Placements place_menu;
// menu is 3 wide, 5 down
place_menu.push_back(make_pair(_FBTEXT(Align, TopLeft, "Top Left", "Top Left"), Toolbar::TOPLEFT));
place_menu.push_back(make_pair(_FBTEXT(Align, LeftTop, "Left Top", "Left Top"), Toolbar::LEFTTOP));
place_menu.push_back(make_pair(_FBTEXT(Align, LeftCenter, "Left Center", "Left Center"), Toolbar::LEFTCENTER));
place_menu.push_back(make_pair(_FBTEXT(Align, LeftBottom, "Left Bottom", "Left Bottom"), Toolbar::LEFTBOTTOM));
place_menu.push_back(make_pair(_FBTEXT(Align, BottomLeft, "Bottom Left", "Bottom Left"), Toolbar::BOTTOMLEFT));
place_menu.push_back(make_pair(_FBTEXT(Align, TopCenter, "Top Center", "Top Center"), Toolbar::TOPCENTER));
place_menu.push_back(make_pair((const char *)0, Toolbar::TOPLEFT));
place_menu.push_back(make_pair((const char *)0, Toolbar::TOPLEFT));
place_menu.push_back(make_pair((const char *)0, Toolbar::TOPLEFT));
place_menu.push_back(make_pair(_FBTEXT(Align, BottomCenter, "Bottom Center", "Bottom Center"), Toolbar::BOTTOMCENTER));
place_menu.push_back(make_pair(_FBTEXT(Align, TopRight, "Top Right", "Top Right"), Toolbar::TOPRIGHT));
place_menu.push_back(make_pair(_FBTEXT(Align, RightTop, "Right Top", "Right Top"), Toolbar::RIGHTTOP));
place_menu.push_back(make_pair(_FBTEXT(Align, RightCenter, "Right Center", "Right Center"), Toolbar::RIGHTCENTER));
place_menu.push_back(make_pair(_FBTEXT(Align, RightBottom, "Right Bottom", "Right Bottom"), Toolbar::RIGHTBOTTOM));
place_menu.push_back(make_pair(_FBTEXT(Align, BottomRight, "Bottom Right", "Bottom Right"), Toolbar::BOTTOMRIGHT));
placementMenu().setMinimumSublevels(3);
// create items in sub menu
for (size_t i=0; i<15; ++i) {
if (place_menu[i].default_str == 0) {
const char *str = place_menu.front().first;
Toolbar::Placement placement = place_menu.front().second;
if (str == 0) {
placementMenu().insert("");
placementMenu().setItemEnabled(i, false);
} else {
const char *i18n_str = i18n.getMessage(place_menu[i].set,
place_menu[i].base,
place_menu[i].default_str);
RefCommand setplace(new SetToolbarPlacementCmd(*this, place_menu[i].placement));
placementMenu().insert(i18n_str, setplace);
RefCommand setplace(new SetToolbarPlacementCmd(*this, placement));
placementMenu().insert(str, setplace);
}
place_menu.pop_front();
}
menu().insert("Placement", &placementMenu());
menu().insert(_FBTEXT(Menu, Placement, "Placement", "Title of Placement menu"), &placementMenu());
placementMenu().update();
menu().update();
}

View file

@ -19,18 +19,19 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: WinClient.cc,v 1.39 2004/04/28 14:59:12 rathnor Exp $
// $Id: WinClient.cc,v 1.40 2004/06/07 11:46:04 rathnor Exp $
#include "WinClient.hh"
#include "Window.hh"
#include "fluxbox.hh"
#include "Screen.hh"
#include "I18n.hh"
#include "FbAtoms.hh"
#include "EventManager.hh"
#include "Xutil.hh"
#include "FbTk/I18n.hh"
#include <iostream>
#include <algorithm>
#include <iterator>
@ -630,8 +631,10 @@ void WinClient::updateWMProtocols() {
XFree(proto);
if (m_win)
m_win->updateFunctions();
#ifdef DEBUG
} else {
cerr<<"Warning: Failed to read WM Protocols. "<<endl;
#endif // DEBUG
}
}

View file

@ -22,12 +22,11 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Window.cc,v 1.287 2004/05/13 01:48:18 rathnor Exp $
// $Id: Window.cc,v 1.288 2004/06/07 11:46:04 rathnor Exp $
#include "Window.hh"
#include "WinClient.hh"
#include "I18n.hh"
#include "fluxbox.hh"
#include "Screen.hh"
#include "FbWinFrameTheme.hh"
@ -40,6 +39,7 @@
#include "Remember.hh"
#include "MenuCreator.hh"
#include "FbTk/I18n.hh"
#include "FbTk/TextButton.hh"
#include "FbTk/Compose.hh"
#include "FbTk/EventManager.hh"

View file

@ -22,17 +22,17 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Workspace.cc,v 1.96 2004/05/13 01:48:18 rathnor Exp $
// $Id: Workspace.cc,v 1.97 2004/06/07 11:46:04 rathnor Exp $
#include "Workspace.hh"
#include "I18n.hh"
#include "fluxbox.hh"
#include "Screen.hh"
#include "Window.hh"
#include "WinClient.hh"
#include "FbWinFrame.hh"
#include "FbTk/I18n.hh"
#include "FbTk/MenuItem.hh"
#include "FbTk/StringUtil.hh"
@ -352,11 +352,12 @@ void Workspace::setName(const std::string &name) {
if (!name.empty()) {
m_name = name;
} else { //if name == 0 then set default name from nls
_FB_USES_NLS;
char tname[128];
sprintf(tname, I18n::instance()->
getMessage(FBNLS::WorkspaceSet,
FBNLS::WorkspaceDefaultNameFormat,
"Workspace %d"), m_id + 1); //m_id starts at 0
sprintf(tname,
_FBTEXT(Workspace, DefaultNameFormat,
"Workspace %d", "Default workspace names, with a %d for the workspace number"),
m_id + 1); //m_id starts at 0
m_name = tname;
}

View file

@ -19,7 +19,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: WorkspaceMenu.cc,v 1.1 2004/05/02 20:51:36 fluxgen Exp $
// $Id: WorkspaceMenu.cc,v 1.2 2004/06/07 11:46:04 rathnor Exp $
#include "WorkspaceMenu.hh"
@ -27,8 +27,8 @@
#include "fluxbox.hh"
#include "Workspace.hh"
#include "MenuCreator.hh"
#include "I18n.hh"
#include "FbTk/I18n.hh"
#include "FbTk/SimpleCommand.hh"
#include "FbTk/RefCount.hh"
#include "FbTk/MenuItem.hh"
@ -84,21 +84,17 @@ void WorkspaceMenu::init(BScreen &screen) {
screen.currentWorkspaceSig().attach(this);
screen.workspaceCountSig().attach(this);
screen.workspaceNamesSig().attach(this);
I18n &i18n = *I18n::instance();
using namespace FbTk;
using namespace FBNLS;
_FB_USES_NLS;
removeAll();
setLabel(i18n.getMessage(WorkspacemenuSet, WorkspacemenuWorkspacesTitle,
"Workspace"));
setLabel(_FBTEXT(Workspace, MenuTitle, "Workspace", "Title of main workspace menu"));
RefCount<Command> new_workspace(new SimpleCommand<BScreen, int>(screen, &BScreen::addWorkspace));
RefCount<Command> remove_last(new SimpleCommand<BScreen, int>(screen, &BScreen::removeLastWorkspace));
insert(i18n.getMessage(WorkspacemenuSet, WorkspacemenuNewWorkspace,
"New Workspace"),
insert(_FBTEXT(Workspace, NewWorkspace, "New Workspace", "Add a new workspace"),
new_workspace);
insert(i18n.getMessage(WorkspacemenuSet, WorkspacemenuRemoveLast,
"Remove Last"),
insert(_FBTEXT(Workspace, RemoveLast, "Remove Last", "Remove the last workspace"),
remove_last);
// for each workspace add workspace name and it's menu to our workspace menu
for (size_t workspace = 0; workspace < screen.getCount(); ++workspace) {
@ -108,8 +104,7 @@ void WorkspaceMenu::init(BScreen &screen) {
}
setItemSelected(screen.currentWorkspace()->workspaceID() + 2, true);
insert(i18n.getMessage(IconSet, IconIcons,
"Icons"),
insert(_FBTEXT(Menu, Icons, "Icons", "Iconic windows menu title"),
MenuCreator::createMenuType("iconmenu", screen.screenNumber()));
FbMenu::update();
}

View file

@ -20,12 +20,12 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: Xutil.cc,v 1.4 2004/01/30 11:06:25 rathnor Exp $
// $Id: Xutil.cc,v 1.5 2004/06/07 11:46:04 rathnor Exp $
#include "Xutil.hh"
#include "I18n.hh"
#include "App.hh"
#include "FbTk/I18n.hh"
#include "FbTk/App.hh"
#include <X11/Xutil.h>
#include <X11/Xatom.h>
@ -46,7 +46,7 @@ std::string getWMName(Window window) {
text_prop.value = 0;
char **list;
int num;
I18n *i18n = I18n::instance();
_FB_USES_NLS;
std::string name;
if (XGetWMName(display, window, &text_prop)) {
@ -69,13 +69,11 @@ std::string getWMName(Window window) {
XFree(text_prop.value);
} else { // default name
name = i18n->getMessage(FBNLS::WindowSet, FBNLS::WindowUnnamed,
"Unnamed");
name = _FBTEXT(Window, Unnamed, "Unnamed", "Default name for a window without a WM_NAME");
}
} else {
// default name
name = i18n->getMessage(FBNLS::WindowSet, FBNLS::WindowUnnamed,
"Unnamed");
name = _FBTEXT(Window, Unnamed, "Unnamed", "Default name for a window without a WM_NAME");
}
return name;

View file

@ -22,11 +22,10 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: fluxbox.cc,v 1.242 2004/05/02 20:48:16 fluxgen Exp $
// $Id: fluxbox.cc,v 1.243 2004/06/07 11:46:04 rathnor Exp $
#include "fluxbox.hh"
#include "I18n.hh"
#include "Screen.hh"
#include "Window.hh"
#include "Workspace.hh"
@ -37,6 +36,7 @@
#include "FbAtoms.hh"
#include "defaults.hh"
#include "FbTk/I18n.hh"
#include "FbTk/Image.hh"
#include "FbTk/KeyUtil.hh"
#include "FbTk/ImageControl.hh"
@ -432,14 +432,14 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile
m_RC_PATH("fluxbox"),
m_RC_INIT_FILE("init") {
_FB_USES_NLS;
if (s_singleton != 0)
throw string("Fatal! There can only one instance of fluxbox class.");
throw string(_FBTEXT(Fluxbox, FatalSingleton, "Fatal! There can only one instance of fluxbox class.", "Error displayed on weird error where an instance of the Fluxbox class already exists!"));
if (display() == 0) {
//!! TODO: NLS
throw string("Can not connect to X server.\n"
"Make sure you started X before you start Fluxbox.");
throw string(_FBTEXT(Fluxbox, NoDisplay,
"Can not connect to X server.\nMake sure you started X before you start Fluxbox.",
"Error message when no X display appears to exist"));
}
// For KDE dock applets
// KDE v1.x
@ -513,10 +513,10 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile
setupConfigFiles();
if (! XSupportsLocale())
cerr<<"Warning: X server does not support locale"<<endl;
cerr<<_FBTEXT(Fluxbox, WarningLocale, "Warning: X server does not support locale", "XSupportsLocale returned false")<<endl;
if (XSetLocaleModifiers("") == 0)
cerr<<"Warning: cannot set locale modifiers"<<endl;
cerr<<_FBTEXT(Fluxbox, WarningLocaleModifiers, "Warning: cannot set locale modifiers", "XSetLocaleModifiers returned false")<<endl;
#ifdef HAVE_GETPID
@ -599,9 +599,8 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile
m_keyscreen = m_mousescreen = m_screen_list.front();
if (m_screen_list.empty()) {
//!! TODO: NLS
throw string("Couldn't find screens to manage.\n"
"Make sure you don't have another window manager running.");
throw string(_FBTEXT(Fluxbox, ErrorNoScreens,
"Couldn't find screens to manage.\nMake sure you don't have another window manager running.", "Error message when no unmanaged screens found - usually means another window manager is running"));
}
// setup theme manager to have our style file ready to be scanned
@ -728,10 +727,12 @@ void Fluxbox::setupConfigFiles() {
#ifdef DEBUG
cerr <<__FILE__<<"("<<__LINE__<<"): Creating dir: " << dirname.c_str() << endl;
#endif // DEBUG
_FB_USES_NLS;
// create directory with perm 700
if (mkdir(dirname.c_str(), 0700)) {
cerr << "Can't create " << dirname << " directory!" << endl;
fprintf(stderr, _FBTEXT(Fluxbox, ErrorCreatingDirectory,
"Can't create %s directory", "Can't create a directory, one %s for directory name"), dirname.c_str());
cerr<<endl;
return;
}
@ -755,6 +756,7 @@ void Fluxbox::setupConfigFiles() {
}
void Fluxbox::handleEvent(XEvent * const e) {
_FB_USES_NLS;
m_last_event = *e;
// it is possible (e.g. during moving) for a window
@ -885,7 +887,7 @@ void Fluxbox::handleEvent(XEvent * const e) {
screen = searchScreen(e->xmaprequest.parent);
if (screen == 0) {
cerr<<"Fluxbox Warning! Could not find screen to map window on!"<<endl;
cerr<<"Fluxbox "<<_FBTEXT(Fluxbox, CantMapWindow, "Warning! Could not find screen to map window on!", "")<<endl;
} else
win = screen->createWindow(e->xmaprequest.window);
@ -1288,7 +1290,8 @@ void Fluxbox::handleKeyEvent(XKeyEvent &ke) {
/// handle system signals
void Fluxbox::handleSignal(int signum) {
I18n *i18n = I18n::instance();
_FB_USES_NLS;
static int re_enter = 0;
switch (signum) {
@ -1314,25 +1317,19 @@ void Fluxbox::handleSignal(int signum) {
break;
default:
fprintf(stderr,
i18n->getMessage(
FBNLS::BaseDisplaySet, FBNLS::BaseDisplaySignalCaught,
"%s: signal %d caught\n"),
_FBTEXT(BaseDisplay, SignalCaught, "%s: signal %d caught\n", "signal catch debug message. Include %s for command and %d for signal number"),
m_argv[0], signum);
if (! m_starting && ! re_enter) {
re_enter = 1;
fprintf(stderr,
i18n->getMessage(
FBNLS::BaseDisplaySet, FBNLS::BaseDisplayShuttingDown,
"shutting down\n"));
_FBTEXT(BaseDisplay, ShuttingDown, "Shutting Down\n", "Quitting because of signal, end with newline"));
shutdown();
}
fprintf(stderr,
i18n->getMessage(
FBNLS::BaseDisplaySet, FBNLS::BaseDisplayAborting,
"aborting... dumping core\n"));
_FBTEXT(BaseDisplay, Aborting, "Aborting... dumping core\n", "Aboring and dumping core, end with newline"));
abort();
break;
}
@ -1607,7 +1604,7 @@ void Fluxbox::shutdown() {
/// saves resources
void Fluxbox::save_rc() {
_FB_USES_NLS;
XrmDatabase new_blackboxrc = 0;
char rc_string[1024];
@ -1618,7 +1615,7 @@ void Fluxbox::save_rc() {
m_resourcemanager.save(dbfile.c_str(), dbfile.c_str());
m_screen_rm.save(dbfile.c_str(), dbfile.c_str());
} else
cerr<<"database filename is invalid!"<<endl;
cerr<<_FBTEXT(Fluxbox, BadRCFile, "rc filename is invalid!", "Bad settings file")<<endl;
ScreenList::iterator it = m_screen_list.begin();
ScreenList::iterator it_end = m_screen_list.end();
@ -1678,20 +1675,20 @@ void Fluxbox::getDefaultDataFilename(char *name, string &filename) {
/// loads resources
void Fluxbox::load_rc() {
_FB_USES_NLS;
//get resource filename
string dbfile(getRcFilename());
if (!dbfile.empty()) {
if (!m_resourcemanager.load(dbfile.c_str())) {
cerr<<"Failed to load database:"<<dbfile<<endl;
cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFileTrying, "Retrying with", "Retrying rc file loading with (the following file)")<<": "<<DEFAULT_INITFILE<<endl;
if (!m_resourcemanager.load(DEFAULT_INITFILE))
cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
}
} else {
if (!m_resourcemanager.load(DEFAULT_INITFILE))
cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
}
if (m_rc_menufile->empty())
@ -1714,12 +1711,13 @@ void Fluxbox::load_rc() {
*m_rc_stylefile = DEFAULTSTYLE;
if (!Workspace::loadGroups(*m_rc_groupfile)) {
cerr<<"Failed to load groupfile: "<<*m_rc_groupfile<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadGroupFile, "Failed to load groupfile", "Couldn't load the groupfile")<<": "<<*m_rc_groupfile<<endl;
}
}
void Fluxbox::load_rc(BScreen &screen) {
//get resource filename
_FB_USES_NLS;
string dbfile(getRcFilename());
XrmDatabaseHelper database;
@ -1774,16 +1772,15 @@ void Fluxbox::load_rc(BScreen &screen) {
if (!dbfile.empty()) {
if (!m_screen_rm.load(dbfile.c_str())) {
cerr<<"Failed to load database:"<<dbfile<<endl;
cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFileTrying, "Retrying with", "Retrying rc file loading with (the following file)")<<": "<<DEFAULT_INITFILE<<endl;
if (!m_screen_rm.load(DEFAULT_INITFILE))
cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
}
} else {
if (!m_screen_rm.load(DEFAULT_INITFILE))
cerr<<"Failed to load database: "<<DEFAULT_INITFILE<<endl;
cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "")<<": "<<DEFAULT_INITFILE<<endl;
}
}
void Fluxbox::loadRootCommand(BScreen &screen) {

View file

@ -20,14 +20,14 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: main.cc,v 1.29 2004/02/28 10:32:06 fluxgen Exp $
// $Id: main.cc,v 1.30 2004/06/07 11:46:04 rathnor Exp $
#include "fluxbox.hh"
#include "I18n.hh"
#include "version.h"
#include "defaults.hh"
#include "FbTk/Theme.hh"
#include "FbTk/I18n.hh"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -48,26 +48,31 @@
using namespace std;
void showInfo(ostream &ostr) {
ostr<<"Fluxbox version: "<<__fluxbox_version<<endl;
_FB_USES_NLS;
ostr<<_FBTEXT(Common, FluxboxVersion, "Fluxbox version", "Fluxbox version heading")<<": "<<__fluxbox_version<<endl;
#if defined(__DATE__) && defined(__TIME__)
ostr<<"Compiled: "<<__DATE__<<" "<<__TIME__<<endl;
ostr<<_FBTEXT(Common, Compiled, "Compiled", "Time fluxbox was compiled")<<": "<<__DATE__<<" "<<__TIME__<<endl;
#endif
#ifdef __fluxbox_compiler
ostr<<"Compiler: "<<__fluxbox_compiler<<endl;
ostr<<_FBTEXT(Common, Compiler, "Compiler", "Compiler used to build fluxbox")<<": "<<__fluxbox_compiler<<endl;
#endif // __fluxbox_compiler
#ifdef __fluxbox_compiler_version
ostr<<"Compiler version: "<<__fluxbox_compiler_version<<endl;
ostr<<_FBTEXT(Common, CompilerVersion, "Compiler version", "Compiler version used to build fluxbox")<<": "<<__fluxbox_compiler_version<<endl;
#endif // __fluxbox_compiler_version
ostr<<endl<<"Defaults:"<<endl;
ostr<<" menu: "<<DEFAULTMENU<<endl;
ostr<<" style: "<<DEFAULTSTYLE<<endl;
ostr<<endl<<_FBTEXT(Common, Defaults, "Defaults", "Default values compiled in")<<":"<<endl;
ostr<<_FBTEXT(Common, DefaultMenuFile, " menu", "default menu file (right aligned - make sure same width as other default values)")<<": "<<DEFAULTMENU<<endl;
ostr<<_FBTEXT(Common, DefaultStyle, " style", "default style (right aligned - make sure same width as other default values)")<<": "<<DEFAULTSTYLE<<endl;
ostr<<" keys: "<<DEFAULTKEYSFILE<<endl;
ostr<<" init: "<<DEFAULT_INITFILE<<endl;
ostr<<_FBTEXT(Common, DefaultKeyFile, " keys", "default key file (right aligned - make sure same width as other default values)")<<": "<<DEFAULTKEYSFILE<<endl;
ostr<<_FBTEXT(Common, DefaultInitFile, " init", "default init file (right aligned - make sure same width as other default values)")<<": "<<DEFAULT_INITFILE<<endl;
const char NOT[] = "-";
ostr<<endl<<"Compiled options ("<<NOT<<" => disabled): "<<endl<<
ostr<<endl<<
_FBTEXT(Common, CompiledOptions, "Compiled options", "Options used when compiled")
<<" ("<<NOT<<" => "<<
_FBTEXT(Common, Disabled, "disabled", "option is turned off")<<"): "<<endl<<
#ifndef DEBUG
NOT<<
#endif // DEBUG
@ -141,8 +146,8 @@ int main(int argc, char **argv) {
std::string rc_file;
std::string log_filename;
NLSInit("fluxbox.cat");
I18n &i18n = *I18n::instance();
FbTk::NLSInit("fluxbox.cat");
_FB_USES_NLS;
int i;
for (i = 1; i < argc; ++i) {
@ -150,9 +155,8 @@ int main(int argc, char **argv) {
// look for alternative rc file to use
if ((++i) >= argc) {
fprintf(stderr,
i18n.getMessage(FBNLS::mainSet, FBNLS::mainRCRequiresArg,
"error: '-rc' requires and argument\n"));
cerr<<_FBTEXT(main, RCRequiresArg,
"error: '-rc' requires an argument", "the -rc option requires a file argument")<<endl;;
exit(1);
}
@ -162,19 +166,18 @@ int main(int argc, char **argv) {
// set by the environment variable DISPLAY
if ((++i) >= argc) {
fprintf(stderr,
i18n.getMessage(FBNLS::mainSet, FBNLS::mainDISPLAYRequiresArg,
"error: '-display' requires an argument\n"));
cerr<<_FBTEXT(main, DISPLAYRequiresArg,
"error: '-display' requires an argument",
"")<<endl;
exit(1);
}
session_display = argv[i];
std::string display_env = "DISPLAY=" + session_display;
if (putenv(const_cast<char *>(display_env.c_str()))) {
fprintf(stderr,
i18n.
getMessage(FBNLS::mainSet, FBNLS::mainWarnDisplaySet,
"warning: couldn't set environment variable 'DISPLAY'\n"));
cerr<<_FBTEXT(main, WarnDisplaySet,
"warning: couldn't set environment variable 'DISPLAY'",
"")<<endl;
perror("putenv()");
}
} else if (strcmp(argv[i], "-version") == 0 || strcmp(argv[i], "-v") == 0) {
@ -183,22 +186,23 @@ int main(int argc, char **argv) {
exit(0);
} else if (strcmp(argv[i], "-log") == 0 ) {
if (i + 1 >= argc) {
cerr<<"error: '-log' needs an argument"<<endl;
cerr<<_FBTEXT(main, LOGRequiresArg, "error: '-log' needs an argument", "")<<endl;
exit(1);
}
log_filename = argv[++i];
} else if (strcmp(argv[i], "-help") == 0 || strcmp(argv[i], "-h") == 0) {
// print program usage and command line options
printf(i18n.
getMessage(FBNLS::mainSet, FBNLS::mainUsage,
"Fluxbox %s : (c) %s Henrik Kinnunen\n"
"Website: http://www.fluxbox.org/ \n\n"
" -display <string>\t\tuse display connection.\n"
" -rc <string>\t\t\tuse alternate resource file.\n"
" -version\t\t\tdisplay version and exit.\n"
" -info\t\t\t\tdisplay some useful information.\n"
"\t-log <filename>\t\t\tlog output to file.\n"
" -help\t\t\t\tdisplay this help text and exit.\n\n"),
printf(_FBTEXT(main, Usage,
"Fluxbox %s : (c) %s Henrik Kinnunen\n"
"Website: http://www.fluxbox.org/ \n\n"
"\t-display <string>\t\tuse display connection.\n"
"\t-rc <string>\t\t\tuse alternate resource file.\n"
"\t-version\t\t\tdisplay version and exit.\n"
"\t-info\t\t\t\tdisplay some useful information.\n"
"\t-log <filename>\t\t\tlog output to file.\n"
"\t-help\t\t\t\tdisplay this help text and exit.\n\n",
"Main usage string. Please lay it out nicely. There is one %s that is given the version"),
__fluxbox_version, "2001-2004");
exit(0);
} else if (strcmp(argv[i], "-info") == 0 || strcmp(argv[i], "-i") == 0) {
@ -222,9 +226,9 @@ int main(int argc, char **argv) {
// setup log file
if (log_file) {
cerr<<"Loggin to: "<<log_filename<<endl;
cerr<<_FBTEXT(main, LoggingTo, "Logging to", "Logging to a file")<<": "<<log_filename<<endl;
log_file<<"------------------------------------------"<<endl;
log_file<<"Logfile: "<<log_filename<<endl;
log_file<<_FBTEXT(main, LogFile, "Log File", "")<<": "<<log_filename<<endl;
showInfo(log_file);
log_file<<"------------------------------------------"<<endl;
// setup log to use cout and cerr stream
@ -240,19 +244,19 @@ int main(int argc, char **argv) {
exitcode = EXIT_SUCCESS;
} catch (std::out_of_range &oor) {
cerr<<"Fluxbox: Out of range: "<<oor.what()<<endl;
cerr<<"Fluxbox: "<<_FBTEXT(main, ErrorOutOfRange, "Out of range", "Error message")<<": "<<oor.what()<<endl;
} catch (std::runtime_error &re) {
cerr<<"Fluxbox: Runtime error: "<<re.what()<<endl;
cerr<<"Fluxbox: "<<_FBTEXT(main, ErrorRuntime, "Runtime error", "Error message")<<": "<<re.what()<<endl;
} catch (std::bad_cast &bc) {
cerr<<"Fluxbox: Bad cast: "<<bc.what()<<endl;
cerr<<"Fluxbox: "<<_FBTEXT(main, ErrorBadCast, "Bad cast", "Error message")<<": "<<bc.what()<<endl;
} catch (std::bad_alloc &ba) {
cerr<<"Fluxbox: Bad Alloc: "<<ba.what()<<endl;
cerr<<"Fluxbox: "<<_FBTEXT(main, ErrorBadAlloc, "Bad Alloc", "Error message")<<": "<<ba.what()<<endl;
} catch (std::exception &e) {
cerr<<"Fluxbox: Standard exception: "<<e.what()<<endl;
cerr<<"Fluxbox: "<<_FBTEXT(main, ErrorStandardException, "Standard Exception", "Error message")<<": "<<e.what()<<endl;
} catch (std::string error_str) {
cerr<<"Error: "<<error_str<<endl;
cerr<<_FBTEXT(Common, Error, "Error", "Error message header")<<": "<<error_str<<endl;
} catch (...) {
cerr<<"Fluxbox: Unknown error."<<endl;
cerr<<"Fluxbox: "<<_FBTEXT(main, ErrorUnknown, "Unknown error", "Error message")<<"."<<endl;
abort();
}
// destroy fluxbox