/* This file is part of the KDE project Copyright (C) 2001 Ian Reinhart Geiser This program is free software; you can redistribute it and/or modify it under the terms of the Lesser 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 Lesser GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "tdemainwindowiface.h" #include #include #include #include #include #include #include #include #include // INTERNAL // Originally from http://permalink.gmane.org/gmane.comp.lib.qt.general/4733 void wmMessage(TDEMainWindow * mainWindow, long type, long l0, long l1, long l2, long l3, long l4) { XClientMessageEvent xev; xev.type = ClientMessage; xev.window = mainWindow->winId(); xev.message_type = type; xev.format = 32; xev.data.l[0] = l0; xev.data.l[1] = l1; xev.data.l[2] = l2; xev.data.l[3] = l3; xev.data.l[4] = l4; XSendEvent(mainWindow->x11Display(), mainWindow->winId(), False, (SubstructureNotifyMask | SubstructureRedirectMask), (XEvent *)&xev); } TDEMainWindowInterface::TDEMainWindowInterface(TDEMainWindow * mainWindow) : DCOPObject( mainWindow->name()) { m_MainWindow = mainWindow; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); m_dcopPropertyProxy = new KDCOPPropertyProxy(TQT_TQOBJECT(m_MainWindow)); } TDEMainWindowInterface::~TDEMainWindowInterface() { delete m_dcopActionProxy; delete m_dcopPropertyProxy; } QCStringList TDEMainWindowInterface::actions() { delete m_dcopActionProxy; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); QCStringList tmp_actions; TQValueList lst = m_dcopActionProxy->actions(); TQValueList::ConstIterator it = lst.begin(); TQValueList::ConstIterator end = lst.end(); for (; it != end; ++it ) if ((*it)->isPlugged()) tmp_actions.append( (TQCString)(*it)->name() ); return tmp_actions; } bool TDEMainWindowInterface::activateAction( TQCString action) { delete m_dcopActionProxy; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); TDEAction *tmp_Action = m_dcopActionProxy->action(action); if (tmp_Action) { tmp_Action->activate(); return true; } else return false; } bool TDEMainWindowInterface::disableAction( TQCString action) { delete m_dcopActionProxy; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); TDEAction *tmp_Action = m_dcopActionProxy->action(action); if (tmp_Action) { tmp_Action->setEnabled(false); return true; } else return false; } bool TDEMainWindowInterface::enableAction( TQCString action) { delete m_dcopActionProxy; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); TDEAction *tmp_Action = m_dcopActionProxy->action(action); if (tmp_Action) { tmp_Action->setEnabled(true); return true; } else return false; } bool TDEMainWindowInterface::actionIsEnabled( TQCString action) { delete m_dcopActionProxy; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); TDEAction *tmp_Action = m_dcopActionProxy->action(action); if (tmp_Action) { return tmp_Action->isEnabled(); } else return false; } TQCString TDEMainWindowInterface::actionToolTip( TQCString action) { delete m_dcopActionProxy; m_dcopActionProxy = new KDCOPActionProxy( m_MainWindow->actionCollection(), this ); TDEAction *tmp_Action = m_dcopActionProxy->action(action); if (tmp_Action) { return tmp_Action->toolTip().utf8(); } else return "Error no such object!"; } DCOPRef TDEMainWindowInterface::action( const TQCString &name ) { return DCOPRef( kapp->dcopClient()->appId(), m_dcopActionProxy->actionObjectId( name ) ); } TQMap TDEMainWindowInterface::actionMap() { return m_dcopActionProxy->actionMap(); } int TDEMainWindowInterface::getWinID() { return (int) m_MainWindow->winId(); } void TDEMainWindowInterface::grabWindowToClipBoard() { TQClipboard *clipboard = TQApplication::clipboard(); clipboard->setPixmap(TQPixmap::grabWidget(m_MainWindow)); } void TDEMainWindowInterface::hide() { m_MainWindow->hide(); } void TDEMainWindowInterface::maximize() { m_MainWindow->showMaximized(); } void TDEMainWindowInterface::minimize() { m_MainWindow->showMinimized(); } void TDEMainWindowInterface::resize(int newX, int newY) { m_MainWindow->resize(newX, newY); } void TDEMainWindowInterface::move(int newX, int newY) { m_MainWindow->move(newX, newY); } void TDEMainWindowInterface::setGeometry(int newX, int newY, int newWidth, int newHeight) { m_MainWindow->setGeometry(newX, newY, newWidth, newHeight); } void TDEMainWindowInterface::raise() { m_MainWindow->raise(); } void TDEMainWindowInterface::lower() { m_MainWindow->lower(); } void TDEMainWindowInterface::restore() { m_MainWindow->showNormal(); } void TDEMainWindowInterface::close() { m_MainWindow->close(); } void TDEMainWindowInterface::show() { m_MainWindow->show(); } void TDEMainWindowInterface::setActiveWindow() { m_MainWindow->setActiveWindow(); } void TDEMainWindowInterface::setActiveWindowFocused() { // just in case we don't have a WM running m_MainWindow->raise(); m_MainWindow->setActiveWindow(); // activate window (try to work around focus-stealing prevention) static Atom NET_ACTIVE_WINDOW = XInternAtom(m_MainWindow->x11Display(), "_NET_ACTIVE_WINDOW", False); wmMessage(m_MainWindow, NET_ACTIVE_WINDOW, 2, CurrentTime, 0, 0, 0); } QCStringList TDEMainWindowInterface::functionsDynamic() { return m_dcopPropertyProxy->functions(); } bool TDEMainWindowInterface::processDynamic(const TQCString &fun, const TQByteArray &data, TQCString& replyType, TQByteArray &replyData) { return m_dcopPropertyProxy->processPropertyRequest( fun, data, replyType, replyData); }