QDockWidget *TikzCommandInserter::getDockWidget(QWidget *parent) { QDockWidget *tikzDock = new QDockWidget(parent); tikzDock->setObjectName("CommandsDock"); tikzDock->setAllowedAreas(Qt::AllDockWidgetAreas); tikzDock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); tikzDock->setWindowTitle(m_tikzSections.title); tikzDock->setWhatsThis(tr("<p>This is a list of TikZ " "commands. You can insert these commands in your code by " "clicking on them. You can obtain more commands by " "changing the category in the combo box.</p>")); QAction *focusTikzDockAction = new QAction(parent); focusTikzDockAction->setShortcut(QKeySequence(tr("Alt+I"))); tikzDock->addAction(focusTikzDockAction); connect(focusTikzDockAction, SIGNAL(triggered()), tikzDock, SLOT(setFocus())); QLabel *commandsComboLabel = new QLabel(tr("Category:")); ComboBox *commandsCombo = new ComboBox; commandsCombo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); QStackedWidget *commandsStack = new QStackedWidget; connect(commandsCombo, SIGNAL(currentIndexChanged(int)), commandsStack, SLOT(setCurrentIndex(int))); QListWidget *tikzListWidget = new QListWidget; addListWidgetItems(tikzListWidget, m_tikzSections, false); // don't add children tikzListWidget->setMouseTracking(true); connect(tikzListWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(setListStatusTip(QListWidgetItem*))); connect(tikzListWidget, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(setListStatusTip(QListWidgetItem*))); connect(tikzListWidget, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(insertTag(QListWidgetItem*))); // connect(tikzListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(insertTag(QListWidgetItem*))); commandsCombo->addItem(tr("General")); commandsStack->addWidget(tikzListWidget); for (int i = 0; i < m_tikzSections.children.size(); ++i) { QListWidget *tikzListWidget = new QListWidget; addListWidgetItems(tikzListWidget, m_tikzSections.children.at(i)); tikzListWidget->setMouseTracking(true); connect(tikzListWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(setListStatusTip(QListWidgetItem*))); connect(tikzListWidget, SIGNAL(itemEntered(QListWidgetItem*)), this, SLOT(setListStatusTip(QListWidgetItem*))); connect(tikzListWidget, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(insertTag(QListWidgetItem*))); // connect(tikzListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(insertTag(QListWidgetItem*))); QString comboItemText = m_tikzSections.children.at(i).title; commandsCombo->addItem(comboItemText.remove('&')); commandsStack->addWidget(tikzListWidget); } QGridLayout *tikzLayout = new QGridLayout; tikzLayout->addWidget(commandsComboLabel, 0, 0); tikzLayout->addWidget(commandsCombo, 0, 1); tikzLayout->addWidget(commandsStack, 1, 0, 1, 2); tikzLayout->setMargin(5); TikzCommandWidget *tikzWidget = new TikzCommandWidget; tikzWidget->setLayout(tikzLayout); tikzDock->setWidget(tikzWidget); tikzDock->setFocusProxy(commandsCombo); return tikzDock; }