File indexing completed on 2024-03-24 04:05:23
0001 /*************************************************************************** 0002 cmultilineinput.cpp - multi line input handler 0003 This file is a part of KMuddy distribution. 0004 ------------------- 0005 begin : Po Aug 26 2002 0006 copyright : (C) 2002 by Tomas Mecir 0007 email : kmuddy@kmuddy.com 0008 ***************************************************************************/ 0009 0010 /*************************************************************************** 0011 * * 0012 * This program is free software; you can redistribute it and/or modify * 0013 * it under the terms of the GNU General Public License as published by * 0014 * the Free Software Foundation; either version 2 of the License, or * 0015 * (at your option) any later version. * 0016 * * 0017 ***************************************************************************/ 0018 0019 #include "cmultilineinput.h" 0020 0021 #include "cactionmanager.h" 0022 #include "ccmdqueue.h" 0023 #include "ccmdqueues.h" 0024 #include "cglobalsettings.h" 0025 #include "csessionmanager.h" 0026 #include "dialogs/dlgmultiline.h" 0027 0028 #include <kmainwindow.h> 0029 0030 cMultiLineInput *cMultiLineInput::_self = nullptr; 0031 0032 cMultiLineInput *cMultiLineInput::self () 0033 { 0034 if (!_self) 0035 _self = new cMultiLineInput; 0036 return _self; 0037 } 0038 0039 cMultiLineInput::cMultiLineInput () : cActionBase ("multi-line-input", 0) 0040 { 0041 init (); 0042 addGlobalEventHandler ("global-settings-changed", 50, PT_NOTHING); 0043 } 0044 0045 cMultiLineInput::~cMultiLineInput () 0046 { 0047 removeGlobalEventHandler ("global-settings-changed"); 0048 delete multiline; 0049 _self = nullptr; 0050 } 0051 0052 QDockWidget *cMultiLineInput::dialog () 0053 { 0054 return multiline; 0055 } 0056 0057 void cMultiLineInput::eventNothingHandler (QString event, int) 0058 { 0059 if (event == "global-settings-changed") { 0060 setFont (cGlobalSettings::self()->getFont ("multi-line-font")); 0061 } 0062 } 0063 0064 void cMultiLineInput::init () 0065 { 0066 KMainWindow *wnd = cActionManager::self()->mainWindow(); 0067 multiline = new dlgMultiLine (wnd); 0068 multiline->hide(); 0069 multiline->setObjectName ("multiline"); 0070 wnd->addDockWidget (Qt::BottomDockWidgetArea, multiline); 0071 multiline->setFloating (true); 0072 connect (multiline, &dlgMultiLine::commands, this, &cMultiLineInput::sendInput); 0073 } 0074 0075 void cMultiLineInput::sendInput (const QStringList &list) 0076 { 0077 cActionManager *am = cActionManager::self(); 0078 int asess = cSessionManager::self()->activeSession(); 0079 cCmdQueues *queues = (cCmdQueues *) am->object ("cmdqueues", asess); 0080 if (!queues) return; 0081 // create a command queue with all the commands 0082 cCmdQueue *queue = new cCmdQueue (asess); 0083 QStringList::const_iterator it; 0084 for (it = list.begin(); it != list.end(); ++it) 0085 queue->addCommand (*it); 0086 queues->addQueue (queue); 0087 } 0088 0089 void cMultiLineInput::setFont (QFont font) 0090 { 0091 if (multiline) multiline->setFont (font); 0092 } 0093 0094 #include "moc_cmultilineinput.cpp"