You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
618 lines
19 KiB
618 lines
19 KiB
/***************************************************************************
|
|
* Copyright (C) 2004 by Thomas Lübking *
|
|
* thomas@home *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
***************************************************************************/
|
|
|
|
#include "bab.h"
|
|
#include <tqpushbutton.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqcombobox.h>
|
|
#include <tqdir.h>
|
|
#include <tqlayout.h>
|
|
#include <tqsettings.h>
|
|
#include <tqtabwidget.h>
|
|
#include <tqtooltip.h>
|
|
#include <tqtimer.h>
|
|
#include <tqvbox.h>
|
|
#include <tqpainter.h>
|
|
#include <dcopclient.h>
|
|
#include <tdeapplication.h>
|
|
// #include <tdeconfig.h>
|
|
#include <kiconloader.h>
|
|
#include <tdeaboutdata.h>
|
|
#include <tdecmdlineargs.h>
|
|
#include <kipc.h>
|
|
#include <klibloader.h>
|
|
#include <tdelocale.h>
|
|
#include <kprocess.h>
|
|
#if KDE_IS_VERSION(3,4,0)
|
|
#include <twin.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#include <X11/Xlib.h>
|
|
#include <X11/extensions/shape.h>
|
|
|
|
#include "styleconfdialog.h"
|
|
|
|
static const char description[] =
|
|
I18N_NOOP("Baghira Aqua/Brushed");
|
|
|
|
static const char version[] = "cvs";
|
|
|
|
static TDECmdLineOptions options[] =
|
|
{
|
|
// { "+[URL]", I18N_NOOP( "Document to open." ), 0 },
|
|
TDECmdLineLastOption
|
|
};
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
TDEAboutData about("baghira-switcher", I18N_NOOP("BAB - Baghira Aqua/Brushed Switcher"), version, description,
|
|
TDEAboutData::License_GPL, "(C) 2004/2005 Thomas Lübking", 0, 0, "baghira-style@gmx.net");
|
|
about.addAuthor( "Thomas Lübking", 0, "baghira-style@gmx.net" );
|
|
TDECmdLineArgs::init(argc, argv, &about);
|
|
TDECmdLineArgs::addCmdLineOptions( options );
|
|
TDEApplication app;
|
|
DCOPClient* client = app.dcopClient();
|
|
client->registerAs( "bab", false);
|
|
client->setDefaultObject( "babInterface" );
|
|
bab* mainBAB = 0;
|
|
mainBAB = new bab;
|
|
app.setMainWidget(mainBAB);
|
|
Corner leftCorner(Corner::left);
|
|
Corner rightCorner(Corner::right);
|
|
#if KDE_IS_VERSION(3,4,0)
|
|
KWin::setShadowSize(leftCorner.winId(), 0);
|
|
KWin::setShadowSize(rightCorner.winId(), 0);
|
|
#endif
|
|
if (!mainBAB->cornerCheck->isChecked())
|
|
{
|
|
leftCorner.hide();
|
|
rightCorner.hide();
|
|
}
|
|
leftCorner.connect( mainBAB->cornerCheck, SIGNAL(toggled(bool)), SLOT(toggle(bool)) );
|
|
rightCorner.connect( mainBAB->cornerCheck, SIGNAL(toggled(bool)), SLOT(toggle(bool)) );
|
|
|
|
int ret = app.exec();
|
|
if (mainBAB) delete mainBAB;
|
|
return ret;
|
|
}
|
|
|
|
|
|
bab::bab() : TDEMainWindow(0,"bab",TQt::WStyle_StaysOnTop | TQt::WX11BypassWM ){
|
|
bSwitcher = new BabSwitcher(this,"switcher");
|
|
TQToolTip::add(bSwitcher, i18n("leftclick toggles state<br>rightclick toggles setupmenu"));
|
|
bSwitcher->show();
|
|
|
|
TQDir d( TQDir::homeDirPath() + "/.baghira");
|
|
if (!d.exists())
|
|
d.mkdir(TQDir::homeDirPath() + "/.baghira");
|
|
d = TQDir( TQDir::homeDirPath() + "/.baghira/.bab");
|
|
if (!d.exists())
|
|
d.mkdir(TQDir::homeDirPath() + "/.baghira/.bab");
|
|
FILE *file = NULL;
|
|
TQString tmpString = TQDir::homeDirPath() + "/.baghira/Jaguar";
|
|
if (!TQFile::exists(tmpString))
|
|
{
|
|
if( (file = fopen(tmpString.latin1(), "w")) != NULL )
|
|
{
|
|
fprintf(file,"0\n0\n0\n0\n0\n1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n1\n");
|
|
fclose(file);
|
|
}
|
|
}
|
|
tmpString = TQDir::homeDirPath() + "/.baghira/Panther";
|
|
if (!TQFile::exists(tmpString))
|
|
{
|
|
if( (file = fopen(tmpString.latin1(), "w")) != NULL )
|
|
{
|
|
fprintf(file,"1\n1\n1\n1\n1\n1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n1\n");
|
|
fclose(file);
|
|
}
|
|
}
|
|
tmpString = TQDir::homeDirPath() + "/.baghira/Brushed";
|
|
if (!TQFile::exists(tmpString))
|
|
{
|
|
if( (file = fopen(tmpString.latin1(), "w")) != NULL )
|
|
{
|
|
fprintf(file,"2\n2\n1\n2\n1\n1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n0\n");
|
|
fclose(file);
|
|
}
|
|
}
|
|
tmpString = TQDir::homeDirPath() + "/.baghira/Tiger";
|
|
if (!TQFile::exists(tmpString))
|
|
{
|
|
if( (file = fopen(tmpString.latin1(), "w")) != NULL )
|
|
{
|
|
fprintf(file,"3\n3\n1\n1\n0\n1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n-1\n1\n");
|
|
fclose(file);
|
|
}
|
|
}
|
|
tmpString = TQDir::homeDirPath() + "/.baghira/Milk";
|
|
if (!TQFile::exists(tmpString))
|
|
{
|
|
if( (file = fopen(tmpString.latin1(), "w")) != NULL )
|
|
{
|
|
fprintf(file,"4\n4\n4\n4\n1\n0\n-592138\n-4930834\n-1\n-16777216\n-13009982\n-1\n-16777216\n-1116417\n1\n");
|
|
fclose(file);
|
|
}
|
|
}
|
|
|
|
TQVBox *vb = new TQVBox(this);
|
|
vb->setLineWidth(2);
|
|
vb->setMargin(2);
|
|
// vb->setFrameStyle(TQFrame::Panel | TQFrame::Plain );
|
|
|
|
TQLabel *DefStyleLabel = new TQLabel("Default Style is", vb);
|
|
DefStyle = new TQComboBox(vb);
|
|
DefStyle->insertItem ( "Jaguar" );
|
|
DefStyle->insertItem ( "Panther" );
|
|
DefStyle->insertItem ( "Brushed" );
|
|
DefStyle->insertItem ( "Tiger" );
|
|
DefStyle->insertItem ( "Milk" );
|
|
cornerCheck = new TQCheckBox("Round upper screen corners", vb);
|
|
TQSettings config;
|
|
config.beginGroup("/baghira/BAB");
|
|
DefStyle->setCurrentItem(config.readNumEntry("defaultState", BabSwitcher::Panther ));
|
|
cornerCheck->setChecked( config.readBoolEntry("roundCorners", true ) );
|
|
config.endGroup();
|
|
TQPushButton *configBaghira = new TQPushButton("Configure Baghira", vb);
|
|
TQPushButton *Quit = new TQPushButton("Quit BAB", vb);
|
|
TQPushButton *Close = new TQPushButton("Close Menu", vb);
|
|
vb->adjustSize();
|
|
bSwitcher->setStyle(DefStyle->currentText());
|
|
bSwitcher->setDeco(DefStyle->currentText());
|
|
|
|
connect(DefStyle, SIGNAL(activated(int)), this, SLOT(saveSettings()));
|
|
connect(cornerCheck, SIGNAL(toggled(bool)), this, SLOT(saveSettings()));
|
|
connect(configBaghira, SIGNAL(clicked()), this, SLOT(configureBaghira()));
|
|
connect(Close, SIGNAL(clicked()), this, SLOT(hide()));
|
|
connect(Quit, SIGNAL(clicked()), this, SLOT(close()));
|
|
|
|
resize(vb->width(),vb->height());
|
|
|
|
// show();
|
|
}
|
|
|
|
bab::~ bab()
|
|
{
|
|
bSwitcher->setStyle(DefStyle->currentText());
|
|
bSwitcher->setDeco(DefStyle->currentText());
|
|
if (bSwitcher) delete bSwitcher;
|
|
}
|
|
|
|
/*Taken from kcontrol, tdecmshell style*/
|
|
void bab::configureBaghira()
|
|
{
|
|
|
|
|
|
// Use KLibLoader to get the library, handling
|
|
// any errors that arise
|
|
KLibLoader* loader = KLibLoader::self();
|
|
|
|
KLibrary* library = loader->library( TQFile::encodeName("tdestyle_baghira_config") );
|
|
if (!library)
|
|
{
|
|
tqWarning("There was an error loading the configuration dialog for this style.");
|
|
return;
|
|
}
|
|
|
|
void* allocPtr = library->symbol("allocate_tdestyle_config");
|
|
|
|
if (!allocPtr)
|
|
{
|
|
tqWarning("There was an error loading the configuration dialog for this style.");
|
|
return;
|
|
}
|
|
|
|
//Create the container dialog
|
|
StyleConfigDialog* dial = new StyleConfigDialog(this, "Baghira Configuration");
|
|
dial->enableButtonSeparator(true);
|
|
|
|
typedef TQWidget*(* factoryRoutine)( TQWidget* parent );
|
|
|
|
//Get the factory, and make the widget.
|
|
factoryRoutine factory = (factoryRoutine)(allocPtr);
|
|
TQWidget* styleConfig = factory( dial );
|
|
|
|
TQTabWidget* tw = (TQTabWidget*)styleConfig->child("tabWidget");
|
|
|
|
TQWidget* decoConfig = 0;
|
|
TQObject *decoObject = 0;
|
|
if (tw)
|
|
{
|
|
KLibrary* library2 = loader->library( TQFile::encodeName("twin_baghira_config") );
|
|
if (!library2)
|
|
{
|
|
tqWarning("There was an error loading the configuration dialog for the deco.");
|
|
return;
|
|
}
|
|
void* allocPtr2 = library2->symbol("allocate_config");
|
|
if (!allocPtr2)
|
|
{
|
|
tqWarning("There was an error loading the configuration dialog for this style.");
|
|
return;
|
|
}
|
|
typedef TQObject*(* factoryRoutine2)( TDEConfig* conf, TQWidget* parent );
|
|
factoryRoutine2 factory2 = (factoryRoutine2)(allocPtr2);
|
|
decoObject = factory2( 0, tw );
|
|
decoConfig = (TQWidget*)tw->child("ConfigDialog");
|
|
tw->addTab(decoConfig, "Decoration");
|
|
}
|
|
|
|
//Insert it in...
|
|
dial->setMainWidget( styleConfig );
|
|
|
|
TQWidget *desktop = TQApplication::desktop();
|
|
TQPoint nPos((desktop->width() - dial->width())/2, (desktop->height() - dial->height() - 100)/2);
|
|
dial->move(nPos);
|
|
//..and connect it to the wrapper
|
|
connect(styleConfig, SIGNAL(changed(bool)), dial, SLOT(setStyleDirty(bool)));
|
|
connect(decoObject, SIGNAL(changed()), dial, SLOT(setDecoDirty()));
|
|
connect(dial, SIGNAL(defaults()), styleConfig, SLOT(defaults()));
|
|
connect(dial, SIGNAL(save()), styleConfig, SLOT(save()));
|
|
connect(dial, SIGNAL(defaults()), decoObject, SLOT(defaults()));
|
|
connect(dial, SIGNAL(save(TDEConfig*)), decoObject, SLOT(save(TDEConfig*)));
|
|
|
|
if (dial->exec() == TQDialog::Accepted)
|
|
{
|
|
//For now, ask all KDE apps to recreate their styles to apply the setitngs
|
|
if (dial->isStyleDirty())
|
|
{
|
|
KIPC::sendMessageAll(KIPC::StyleChanged);
|
|
KIPC::sendMessageAll(KIPC::ToolbarStyleChanged);
|
|
}
|
|
if (dial->isDecoDirty())
|
|
kapp->dcopClient()->send("twin", "KWinInterface", "reconfigure()", TQByteArray());
|
|
}
|
|
tw->removeChild( decoObject );
|
|
dial->insertChild( decoObject );
|
|
decoConfig->reparent(dial, TQPoint(0,0));
|
|
delete dial;
|
|
}
|
|
|
|
/* overwrite the show event for repositioning the window on top
|
|
of the icon, adapted from kkeyled */
|
|
void bab::showEvent(TQShowEvent *e){
|
|
if ( bSwitcher->globalPos->x() >= 0) {
|
|
TQWidget *desktop = TQApplication::desktop();
|
|
int w = desktop->width();
|
|
TQPoint nPos;
|
|
if (bSwitcher->globalPos->y() - height() >= 0 )
|
|
{ // it's not on top
|
|
nPos.setY(bSwitcher->globalPos->y() -height());
|
|
nPos.setX(bSwitcher->globalPos->x() - (width() / 2));
|
|
}
|
|
else if ( bSwitcher->globalPos->y() >= 0 )
|
|
{
|
|
nPos.setY(bSwitcher->globalPos->y() + bSwitcher->height() );
|
|
nPos.setX(bSwitcher->globalPos->x() - (width() / 2));
|
|
}
|
|
if ( nPos.x() < 0 )
|
|
{
|
|
nPos.setX(bSwitcher->globalPos->x() + bSwitcher->width());
|
|
}
|
|
else if ( bSwitcher->globalPos->x() + (width() / 2) > w )
|
|
{
|
|
nPos.setX(bSwitcher->globalPos->x() - width());
|
|
}
|
|
move(nPos);
|
|
}
|
|
|
|
// If it was set by the normal sessionmanagement it needs
|
|
// to set the Flags again
|
|
setWFlags(TQt::WStyle_StaysOnTop | TQt::WX11BypassWM);
|
|
TQWidget::showEvent(e); // execute the normal showevent
|
|
raise();
|
|
}
|
|
|
|
void bab::saveSettings(){
|
|
TQSettings *config = new TQSettings();
|
|
// TDEConfig *config = new TDEConfig("baghirarc");
|
|
config->beginGroup("/baghira/BAB");
|
|
config->writeEntry("defaultState", DefStyle->currentItem());
|
|
config->writeEntry("roundCorners", cornerCheck->isChecked());
|
|
config->endGroup();
|
|
delete config;
|
|
}
|
|
|
|
TQPoint *BabSwitcher::globalPos = new TQPoint(0,0);
|
|
|
|
BabSwitcher::BabSwitcher(bab *parent, const char *name)
|
|
: KSystemTray(parent,name), DCOPObject("babInterface") {
|
|
TDEIconLoader* iLoader = TDEGlobal::iconLoader();
|
|
JaguarIcon = iLoader->loadIcon("bab_jaguar", TDEIcon::Small, 22);
|
|
PantherIcon = iLoader->loadIcon("bab_panther", TDEIcon::Small, 22);
|
|
iTunesIcon = iLoader->loadIcon("bab_itunes", TDEIcon::Small, 22);
|
|
TigerIcon = iLoader->loadIcon("bab_tiger", TDEIcon::Small, 22);
|
|
MilkIcon = iLoader->loadIcon("bab_milk", TDEIcon::Small, 22);
|
|
installEventFilter(this);
|
|
}
|
|
|
|
BabSwitcher::~BabSwitcher(){
|
|
}
|
|
|
|
void BabSwitcher::toggle()
|
|
{
|
|
if ( state_ < Milk )
|
|
state_++;
|
|
else
|
|
state_ = Jaguar;
|
|
decoState_ = state_;
|
|
TQString nameString;
|
|
switch (state_)
|
|
{
|
|
case Jaguar:
|
|
nameString = "Jaguar";
|
|
break;
|
|
case Panther:
|
|
nameString = "Panther";
|
|
break;
|
|
case iTunes:
|
|
nameString = "Brushed";
|
|
break;
|
|
case Tiger:
|
|
nameString = "Tiger";
|
|
break;
|
|
case Milk:
|
|
nameString = "Milk";
|
|
}
|
|
TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + nameString;
|
|
TQString tmpString2 = TQDir::homeDirPath() + "/.baghira/.bab/.style";
|
|
remove(tmpString2.latin1());
|
|
symlink (tmpString.latin1(), tmpString2.latin1());
|
|
tmpString2 = TQDir::homeDirPath() + "/.baghira/.bab/.deco";
|
|
remove(tmpString2.latin1());
|
|
symlink (tmpString.latin1(), tmpString2.latin1());
|
|
repaint();
|
|
}
|
|
|
|
void BabSwitcher::setStyle(TQString style)
|
|
{
|
|
if (style == "Jaguar")
|
|
state_ = Jaguar;
|
|
else if (style == "Brushed")
|
|
state_ = iTunes;
|
|
else if (style == "Tiger")
|
|
state_ = Tiger;
|
|
else if (style == "Milk")
|
|
state_ = Milk;
|
|
else
|
|
{
|
|
if (style != "Panther")
|
|
style = "Panther";
|
|
state_ = Panther;
|
|
}
|
|
TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + style;
|
|
TQString tmpString2 = TQDir::homeDirPath() + "/.baghira/.bab/.style";
|
|
remove(tmpString2.latin1());
|
|
symlink (tmpString.latin1(), tmpString2.latin1());
|
|
repaint();
|
|
}
|
|
|
|
void BabSwitcher::setDeco(TQString deco)
|
|
{
|
|
if (deco == "Jaguar")
|
|
decoState_ = Jaguar;
|
|
else if (deco == "Brushed")
|
|
decoState_ = iTunes;
|
|
else if (deco == "Tiger")
|
|
decoState_ = Tiger;
|
|
else if (deco == "Milk")
|
|
decoState_ = Milk;
|
|
else
|
|
{
|
|
if (deco != "Panther")
|
|
deco = "Panther";
|
|
decoState_ = Panther;
|
|
}
|
|
TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + deco;
|
|
TQString tmpString2 = TQDir::homeDirPath() + "/.baghira/.bab/.deco";
|
|
remove(tmpString2.latin1());
|
|
symlink (tmpString.latin1(), tmpString2.latin1());
|
|
}
|
|
|
|
TQString BabSwitcher::style()
|
|
{
|
|
switch (state_)
|
|
{
|
|
case Jaguar:
|
|
return "Jaguar";
|
|
default:
|
|
case Panther:
|
|
return "Panther";
|
|
case iTunes:
|
|
return "Brushed";
|
|
case Tiger:
|
|
return "Tiger";
|
|
case Milk:
|
|
return "Milk";
|
|
}
|
|
}
|
|
|
|
TQString BabSwitcher::deco()
|
|
{
|
|
switch (decoState_)
|
|
{
|
|
case Jaguar:
|
|
return "Jaguar";
|
|
default:
|
|
case Panther:
|
|
return "Panther";
|
|
case iTunes:
|
|
return "Brushed";
|
|
case Tiger:
|
|
return "Tiger";
|
|
case Milk:
|
|
return "Milk";
|
|
}
|
|
}
|
|
|
|
void BabSwitcher::start(TQString name, TQString settings)
|
|
{
|
|
TDEProcess proc;
|
|
TQString section; int i = 0; bool done = false;
|
|
if (name.contains(' '))
|
|
{
|
|
while (!done)
|
|
{
|
|
section = name.section(' ',i,i);
|
|
if (i == 0)
|
|
{
|
|
TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + settings;
|
|
TQString tmpString2 = TQDir::homeDirPath() + "/.baghira/.bab/" + section;
|
|
remove(tmpString2.latin1());
|
|
symlink (tmpString.latin1(), tmpString2.latin1());
|
|
}
|
|
if (!section.isEmpty())
|
|
proc << section;
|
|
else
|
|
done = true;
|
|
i++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
TQString tmpString = TQDir::homeDirPath() + "/.baghira/" + settings;
|
|
TQString tmpString2 = TQDir::homeDirPath() + "/.baghira/.bab/" + name;
|
|
remove(tmpString2.latin1());
|
|
symlink (tmpString.latin1(), tmpString2.latin1());
|
|
proc << name;
|
|
}
|
|
proc.start(TDEProcess::DontCare);
|
|
proc.detach();
|
|
}
|
|
|
|
void BabSwitcher::emitStyleChanged()
|
|
{
|
|
KIPC::sendMessageAll(KIPC::StyleChanged);
|
|
KIPC::sendMessageAll(KIPC::ToolbarStyleChanged);
|
|
}
|
|
|
|
void BabSwitcher::mousePressEvent(TQMouseEvent *e){
|
|
|
|
TQWidget *daddy = parentWidget();
|
|
|
|
globalPos->setX(e->globalX() - e->x());
|
|
globalPos->setY(e->globalY() - e->y());
|
|
|
|
switch ( e->button() )
|
|
{
|
|
case LeftButton:
|
|
{
|
|
toggle();
|
|
break;
|
|
}
|
|
case RightButton:
|
|
default:
|
|
{
|
|
if ( daddy->isVisible() )
|
|
daddy->hide();
|
|
else
|
|
daddy->show();
|
|
}
|
|
}
|
|
}
|
|
|
|
void BabSwitcher::paintEvent(TQPaintEvent *ev){
|
|
KSystemTray::paintEvent(ev);
|
|
TQPainter icyApainter(this);
|
|
switch (state_)
|
|
{
|
|
case Jaguar:
|
|
JaguarIcon.isNull() ? icyApainter.fillRect(rect(), TQt::blue) : icyApainter.drawPixmap(0, 0, JaguarIcon);
|
|
break;
|
|
case Panther:
|
|
PantherIcon.isNull() ? icyApainter.fillRect(rect(), TQt::black) : icyApainter.drawPixmap(0, 0, PantherIcon);
|
|
break;
|
|
case iTunes:
|
|
iTunesIcon.isNull() ? icyApainter.fillRect(rect(), TQt::gray) : icyApainter.drawPixmap(0, 0, iTunesIcon);
|
|
break;
|
|
case Tiger:
|
|
TigerIcon.isNull() ? icyApainter.fillRect(rect(), TQt::yellow) : icyApainter.drawPixmap(0, 0, TigerIcon);
|
|
break;
|
|
case Milk:
|
|
MilkIcon.isNull() ? icyApainter.fillRect(rect(), TQt::white) : icyApainter.drawPixmap(0, 0, MilkIcon);
|
|
default:
|
|
break;
|
|
}
|
|
icyApainter.end();
|
|
}
|
|
|
|
Corner::Corner(Side side) : TQWidget(0, (side == left)?"left_corner":"right_corner", TQt::WType_TopLevel | TQt::WStyle_NoBorder | TQt::WStyle_StaysOnTop | TQt::WX11BypassWM )
|
|
{
|
|
if (side == left) {
|
|
setFixedSize(5,4);
|
|
move(0,0);
|
|
show();
|
|
setPaletteBackgroundColor(TQt::black);
|
|
XRectangle* xrects = new XRectangle[4];
|
|
xrects[ 0 ].x = 0;
|
|
xrects[ 0 ].y = 0;
|
|
xrects[ 0 ].width = 5;
|
|
xrects[ 0 ].height = 1;
|
|
xrects[ 1 ].x = 0;
|
|
xrects[ 1 ].y = 1;
|
|
xrects[ 1 ].width = 3;
|
|
xrects[ 1 ].height = 1;
|
|
xrects[ 2 ].x = 0;
|
|
xrects[ 2 ].y = 2;
|
|
xrects[ 2 ].width = 2;
|
|
xrects[ 2 ].height = 1;
|
|
xrects[ 3 ].x = 0;
|
|
xrects[ 3 ].y = 3;
|
|
xrects[ 3 ].width = 1;
|
|
xrects[ 3 ].height = 2;
|
|
XShapeCombineRectangles( tqt_xdisplay(), winId(), ShapeBounding, 0, 0,
|
|
xrects, 4, ShapeSet, 0 );
|
|
delete[] xrects;
|
|
}
|
|
else {
|
|
setFixedSize(5,4);
|
|
move(TQApplication::desktop()->width()-5,0);
|
|
show();
|
|
setPaletteBackgroundColor(TQt::black);
|
|
XRectangle* xrects = new XRectangle[4];
|
|
xrects[ 0 ].x = 0;
|
|
xrects[ 0 ].y = 0;
|
|
xrects[ 0 ].width = 5;
|
|
xrects[ 0 ].height = 1;
|
|
xrects[ 1 ].x = 2;
|
|
xrects[ 1 ].y = 1;
|
|
xrects[ 1 ].width = 3;
|
|
xrects[ 1 ].height = 1;
|
|
xrects[ 2 ].x = 3;
|
|
xrects[ 2 ].y = 2;
|
|
xrects[ 2 ].width = 2;
|
|
xrects[ 2 ].height = 1;
|
|
xrects[ 3 ].x = 4;
|
|
xrects[ 3 ].y = 3;
|
|
xrects[ 3 ].width = 1;
|
|
xrects[ 3 ].height = 2;
|
|
XShapeCombineRectangles( tqt_xdisplay(), winId(), ShapeBounding, 0, 0,
|
|
xrects, 4, ShapeSet, 0 );
|
|
delete[] xrects;
|
|
}
|
|
}
|
|
|
|
void Corner::toggle(bool b)
|
|
{
|
|
b?show():hide();
|
|
}
|
|
|
|
#include "bab.moc"
|