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"