src/configDialog.cc

changeset 675
450827da2376
parent 674
3d8ab0f89102
parent 629
b75c6cce02e2
child 676
f7f965742fd5
--- a/src/configDialog.cc	Tue Jan 21 01:29:12 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,800 +0,0 @@
-/*
- *  LDForge: LDraw parts authoring CAD
- *  Copyright (C) 2013, 2014 Santeri Piippo
- *
- *  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 3 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, see <http://www.gnu.org/licenses/>.
- *  =====================================================================
- *
- *  configDialog.cpp: Settings dialog and everything related to it.
- *  Actual configuration core is in config.cpp.
- */
-
-#include <QGridLayout>
-#include <QFileDialog>
-#include <QColorDialog>
-#include <QBoxLayout>
-#include <QKeyEvent>
-#include <QGroupBox>
-#include <QDoubleSpinBox>
-#include <QLineEdit>
-#include <QCheckBox>
-#include "main.h"
-#include "configDialog.h"
-#include "document.h"
-#include "config.h"
-#include "misc.h"
-#include "colors.h"
-#include "colorSelectDialog.h"
-#include "gldraw.h"
-#include "ui_config.h"
-#include "moc_configDialog.cpp"
-
-extern_cfg (String, gl_bgcolor);
-extern_cfg (String, gl_maincolor);
-extern_cfg (Bool, lv_colorize);
-extern_cfg (Bool, gl_colorbfc);
-extern_cfg (Float, gl_maincolor_alpha);
-extern_cfg (Int, gl_linethickness);
-extern_cfg (String, gui_colortoolbar);
-extern_cfg (Bool, edit_schemanticinline);
-extern_cfg (Bool, gl_blackedges);
-extern_cfg (Bool, gl_aa);
-extern_cfg (Bool, gui_implicitfiles);
-extern_cfg (String, net_downloadpath);
-extern_cfg (Bool, net_guesspaths);
-extern_cfg (Bool, net_autoclose);
-extern_cfg (Bool, gl_logostuds);
-extern_cfg (Bool,	gl_linelengths);
-extern_cfg (String, ld_defaultname);
-extern_cfg (String, ld_defaultuser);
-extern_cfg (Int, ld_defaultlicense);
-extern_cfg (String, gl_selectcolor);
-extern_cfg (String, prog_ytruder);
-extern_cfg (String, prog_rectifier);
-extern_cfg (String, prog_intersector);
-extern_cfg (String, prog_coverer);
-extern_cfg (String, prog_isecalc);
-extern_cfg (String, prog_edger2);
-extern_cfg (Bool, prog_ytruder_wine);
-extern_cfg (Bool, prog_rectifier_wine);
-extern_cfg (Bool, prog_intersector_wine);
-extern_cfg (Bool, prog_coverer_wine);
-extern_cfg (Bool, prog_isecalc_wine);
-extern_cfg (Bool, prog_edger2_wine);
-
-const char* g_extProgPathFilter =
-#ifdef _WIN32
-	"Applications (*.exe)(*.exe);;All files (*.*)(*.*)";
-#else
-	"";
-#endif
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-ConfigDialog::ConfigDialog (ConfigDialog::Tab deftab, QWidget* parent, Qt::WindowFlags f) :
-	QDialog (parent, f)
-{
-	assert (g_win != null);
-	ui = new Ui_ConfigUI;
-	ui->setupUi (this);
-
-	// Interface tab
-	setButtonBackground (ui->backgroundColorButton, gl_bgcolor);
-	connect (ui->backgroundColorButton, SIGNAL (clicked()),
-			 this, SLOT (slot_setGLBackground()));
-
-	setButtonBackground (ui->mainColorButton, gl_maincolor);
-	connect (ui->mainColorButton, SIGNAL (clicked()),
-			 this, SLOT (slot_setGLForeground()));
-
-	setButtonBackground (ui->selColorButton, gl_selectcolor);
-	connect (ui->selColorButton, SIGNAL (clicked()),
-			 this, SLOT (slot_setGLSelectColor()));
-
-	ui->mainColorAlpha->setValue (gl_maincolor_alpha * 10.0f);
-	ui->lineThickness->setValue (gl_linethickness);
-	ui->colorizeObjects->setChecked (lv_colorize);
-	ui->colorBFC->setChecked (gl_colorbfc);
-	ui->blackEdges->setChecked (gl_blackedges);
-	ui->m_aa->setChecked (gl_aa);
-	ui->implicitFiles->setChecked (gui_implicitfiles);
-	ui->m_logostuds->setChecked (gl_logostuds);
-	ui->linelengths->setChecked (gl_linelengths);
-
-	int i = 0;
-
-	for (QAction* act : g_win->findChildren<QAction*>())
-	{
-		KeySequenceConfig* cfg = g_win->shortcutForAction (act);
-
-		if (cfg)
-			addShortcut (*cfg, act, i);
-	}
-
-	ui->shortcutsList->setSortingEnabled (true);
-	ui->shortcutsList->sortItems();
-
-	connect (ui->shortcut_set, SIGNAL (clicked()), this, SLOT (slot_setShortcut()));
-	connect (ui->shortcut_reset, SIGNAL (clicked()), this, SLOT (slot_resetShortcut()));
-	connect (ui->shortcut_clear, SIGNAL (clicked()), this, SLOT (slot_clearShortcut()));
-
-	quickColors = quickColorsFromConfig();
-	updateQuickColorList();
-
-	connect (ui->quickColor_add, SIGNAL (clicked()), this, SLOT (slot_setColor()));
-	connect (ui->quickColor_remove, SIGNAL (clicked()), this, SLOT (slot_delColor()));
-	connect (ui->quickColor_edit, SIGNAL (clicked()), this, SLOT (slot_setColor()));
-	connect (ui->quickColor_addSep, SIGNAL (clicked()), this, SLOT (slot_addColorSeparator()));
-	connect (ui->quickColor_moveUp, SIGNAL (clicked()), this, SLOT (slot_moveColor()));
-	connect (ui->quickColor_moveDown, SIGNAL (clicked()), this, SLOT (slot_moveColor()));
-	connect (ui->quickColor_clear, SIGNAL (clicked()), this, SLOT (slot_clearColors()));
-
-	ui->downloadPath->setText (net_downloadpath);
-	ui->guessNetPaths->setChecked (net_guesspaths);
-	ui->autoCloseNetPrompt->setChecked (net_autoclose);
-	connect (ui->findDownloadPath, SIGNAL (clicked (bool)), this, SLOT (slot_findDownloadFolder()));
-
-	ui->m_profileName->setText (ld_defaultname);
-	ui->m_profileUsername->setText (ld_defaultuser);
-	ui->m_profileLicense->setCurrentIndex (ld_defaultlicense);
-
-	initGrids();
-	initExtProgs();
-	selectPage (deftab);
-
-	connect (ui->buttonBox, SIGNAL (clicked (QAbstractButton*)),
-		this, SLOT (buttonClicked (QAbstractButton*)));
-
-	connect (ui->m_pages, SIGNAL (currentChanged (int)),
-		this, SLOT (selectPage (int)));
-
-	connect (ui->m_pagelist, SIGNAL (currentRowChanged (int)),
-		this, SLOT (selectPage (int)));
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-ConfigDialog::~ConfigDialog()
-{
-	delete ui;
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-void ConfigDialog::selectPage (int row)
-{
-	ui->m_pagelist->setCurrentRow (row);
-	ui->m_pages->setCurrentIndex (row);
-}
-
-// =============================================================================
-// Adds a shortcut entry to the list of shortcuts.
-// -----------------------------------------------------------------------------
-void ConfigDialog::addShortcut (KeySequenceConfig& cfg, QAction* act, int& i)
-{
-	ShortcutListItem* item = new ShortcutListItem;
-	item->setIcon (act->icon());
-	item->setKeyConfig (&cfg);
-	item->setAction (act);
-	setShortcutText (item);
-
-	// If the action doesn't have a valid icon, use an empty one
-	// so that the list is kept aligned.
-	if (act->icon().isNull())
-		item->setIcon (getIcon ("empty"));
-
-	ui->shortcutsList->insertItem (i++, item);
-}
-
-// =============================================================================
-// Initializes the table of grid stuff
-// -----------------------------------------------------------------------------
-void ConfigDialog::initGrids()
-{
-	QGridLayout* gridlayout = new QGridLayout;
-	QLabel* xlabel = new QLabel ("X"),
-	*ylabel = new QLabel ("Y"),
-	*zlabel = new QLabel ("Z"),
-	*anglabel = new QLabel ("Angle");
-	int i = 1;
-
-	for (QLabel* label : initlist<QLabel*> ({xlabel, ylabel, zlabel, anglabel}))
-	{
-		label->setAlignment (Qt::AlignCenter);
-		gridlayout->addWidget (label, 0, i++);
-	}
-
-	for (int i = 0; i < g_NumGrids; ++i)
-	{
-		// Icon
-		lb_gridIcons[i] = new QLabel;
-		lb_gridIcons[i]->setPixmap (getIcon (fmt ("grid-%1", QString (g_GridInfo[i].name).toLower())));
-
-		// Text label
-		lb_gridLabels[i] = new QLabel (fmt ("%1:", g_GridInfo[i].name));
-
-		QHBoxLayout* labellayout = new QHBoxLayout;
-		labellayout->addWidget (lb_gridIcons[i]);
-		labellayout->addWidget (lb_gridLabels[i]);
-		gridlayout->addLayout (labellayout, i + 1, 0);
-
-		// Add the widgets
-		for (int j = 0; j < 4; ++j)
-		{
-			dsb_gridData[i][j] = new QDoubleSpinBox;
-
-			// Set the maximum angle
-			if (j == 3)
-				dsb_gridData[i][j]->setMaximum (360);
-
-			dsb_gridData[i][j]->setValue (*g_GridInfo[i].confs[j]);
-			gridlayout->addWidget (dsb_gridData[i][j], i + 1, j + 1);
-		}
-	}
-
-	ui->grids->setLayout (gridlayout);
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-static struct LDExtProgInfo
-{
-	const QString		name,
-						iconname;
-	QString* const		path;
-	QLineEdit*		input;
-	QPushButton*	setPathButton;
-#ifndef _WIN32
-	bool* const		wine;
-	QCheckBox*		wineBox;
-#endif // _WIN32
-} g_LDExtProgInfo[] =
-{
-#ifndef _WIN32
-# define EXTPROG(NAME, LOWNAME) { #NAME, #LOWNAME, &prog_##LOWNAME, null, null, &prog_##LOWNAME##_wine, null },
-#else
-# define EXTPROG(NAME, LOWNAME) { #NAME, #LOWNAME, &prog_##LOWNAME, null, null },
-#endif
-	EXTPROG (Ytruder, ytruder)
-	EXTPROG (Rectifier, rectifier)
-	EXTPROG (Intersector, intersector)
-	EXTPROG (Isecalc, isecalc)
-	EXTPROG (Coverer, coverer)
-	EXTPROG (Edger2, edger2)
-#undef EXTPROG
-};
-
-// =============================================================================
-// Initializes the stuff in the ext programs tab
-// -----------------------------------------------------------------------------
-void ConfigDialog::initExtProgs()
-{
-	QGridLayout* pathsLayout = new QGridLayout;
-	int row = 0;
-
-	for (LDExtProgInfo& info : g_LDExtProgInfo)
-	{
-		QLabel* icon = new QLabel,
-		*progLabel = new QLabel (info.name);
-		QLineEdit* input = new QLineEdit;
-		QPushButton* setPathButton = new QPushButton;
-
-		icon->setPixmap (getIcon (info.iconname));
-		input->setText (*info.path);
-		setPathButton->setIcon (getIcon ("folder"));
-		info.input = input;
-		info.setPathButton = setPathButton;
-
-		connect (setPathButton, SIGNAL (clicked()), this, SLOT (slot_setExtProgPath()));
-
-		pathsLayout->addWidget (icon, row, 0);
-		pathsLayout->addWidget (progLabel, row, 1);
-		pathsLayout->addWidget (input, row, 2);
-		pathsLayout->addWidget (setPathButton, row, 3);
-
-#ifndef _WIN32
-		QCheckBox* wineBox = new QCheckBox ("Wine");
-		wineBox->setChecked (*info.wine);
-		info.wineBox = wineBox;
-		pathsLayout->addWidget (wineBox, row, 4);
-#endif
-
-		++row;
-	}
-
-	ui->extProgs->setLayout (pathsLayout);
-}
-
-// =============================================================================
-// Set the settings based on widget data.
-// -----------------------------------------------------------------------------
-void ConfigDialog::applySettings()
-{
-	// Apply configuration
-	lv_colorize = ui->colorizeObjects->isChecked();
-	gl_colorbfc = ui->colorBFC->isChecked();
-	gl_blackedges = ui->blackEdges->isChecked();
-	gl_maincolor_alpha = ( (double) ui->mainColorAlpha->value()) / 10.0f;
-	gl_linethickness = ui->lineThickness->value();
-	gui_implicitfiles = ui->implicitFiles->isChecked();
-	net_downloadpath = ui->downloadPath->text();
-	net_guesspaths = ui->guessNetPaths->isChecked();
-	net_autoclose = ui->autoCloseNetPrompt->isChecked();
-	gl_logostuds = ui->m_logostuds->isChecked();
-	gl_linelengths = ui->linelengths->isChecked();
-	ld_defaultuser = ui->m_profileUsername->text();
-	ld_defaultname = ui->m_profileName->text();
-	ld_defaultlicense = ui->m_profileLicense->currentIndex();
-	gl_aa = ui->m_aa->isChecked();
-
-	// Rebuild the quick color toolbar
-	g_win->setQuickColors (quickColors);
-	gui_colortoolbar = quickColorString();
-
-	// Set the grid settings
-	for (int i = 0; i < g_NumGrids; ++i)
-		for (int j = 0; j < 4; ++j)
-			*g_GridInfo[i].confs[j] = dsb_gridData[i][j]->value();
-
-	// Apply key shortcuts
-	g_win->updateActionShortcuts();
-
-	// Ext program settings
-	for (const LDExtProgInfo& info : g_LDExtProgInfo)
-	{
-		*info.path = info.input->text();
-
-#ifndef _WIN32
-		*info.wine = info.wineBox->isChecked();
-#endif // _WIN32
-	}
-
-	Config::save();
-	reloadAllSubfiles();
-	loadLogoedStuds();
-	g_win->R()->setBackground();
-	g_win->doFullRefresh();
-	g_win->updateToolBars();
-	g_win->updateDocumentList();
-}
-
-// =============================================================================
-// A dialog button was clicked
-// -----------------------------------------------------------------------------
-void ConfigDialog::buttonClicked (QAbstractButton* button)
-{
-	typedef QDialogButtonBox QDDB;
-	QDialogButtonBox* dbb = ui->buttonBox;
-
-	if (button == dbb->button (QDDB::Ok))
-	{
-		applySettings();
-		accept();
-	} elif (button == dbb->button (QDDB::Apply))
-	{
-		applySettings();
-	} elif (button == dbb->button (QDDB::Cancel))
-	{
-		reject();
-	}
-}
-
-// =============================================================================
-// Update the list of color toolbar items in the quick color tab.
-// -----------------------------------------------------------------------------
-void ConfigDialog::updateQuickColorList (LDQuickColor* sel)
-{
-	for (QListWidgetItem * item : quickColorItems)
-		delete item;
-
-	quickColorItems.clear();
-
-	// Init table items
-	for (LDQuickColor& entry : quickColors)
-	{
-		QListWidgetItem* item = new QListWidgetItem;
-
-		if (entry.isSeparator())
-		{
-			item->setText ("--------");
-			item->setIcon (getIcon ("empty"));
-		}
-		else
-		{
-			LDColor* col = entry.getColor();
-
-			if (col == null)
-			{
-				item->setText ("[[unknown color]]");
-				item->setIcon (getIcon ("error"));
-			}
-			else
-			{
-				item->setText (col->name);
-				item->setIcon (makeColorIcon (col, 16));
-			}
-		}
-
-		ui->quickColorList->addItem (item);
-		quickColorItems << item;
-
-		if (sel && &entry == sel)
-		{
-			ui->quickColorList->setCurrentItem (item);
-			ui->quickColorList->scrollToItem (item);
-		}
-	}
-}
-
-// =============================================================================
-// Quick colors: add or edit button was clicked.
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_setColor()
-{
-	LDQuickColor* entry = null;
-	QListWidgetItem* item = null;
-	const bool isNew = static_cast<QPushButton*> (sender()) == ui->quickColor_add;
-
-	if (isNew == false)
-	{
-		item = getSelectedQuickColor();
-
-		if (!item)
-			return;
-
-		int i = getItemRow (item, quickColorItems);
-		entry = &quickColors[i];
-
-		if (entry->isSeparator() == true)
-			return; // don't color separators
-	}
-
-	int defval = entry ? entry->getColor()->index : -1;
-	int val;
-
-	if (ColorSelector::selectColor (val, defval, this) == false)
-		return;
-
-	if (entry)
-		entry->setColor (getColor (val));
-	else
-	{
-		LDQuickColor entry (getColor (val), null);
-
-		item = getSelectedQuickColor();
-		int idx = (item) ? getItemRow (item, quickColorItems) + 1 : quickColorItems.size();
-
-		quickColors.insert (idx, entry);
-		entry = quickColors[idx];
-	}
-
-	updateQuickColorList (entry);
-}
-
-// =============================================================================
-// Remove a quick color
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_delColor()
-{
-	if (ui->quickColorList->selectedItems().isEmpty())
-		return;
-
-	QListWidgetItem* item = ui->quickColorList->selectedItems() [0];
-	quickColors.removeAt (getItemRow (item, quickColorItems));
-	updateQuickColorList();
-}
-
-// =============================================================================
-// Move a quick color up/down
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_moveColor()
-{
-	const bool up = (static_cast<QPushButton*> (sender()) == ui->quickColor_moveUp);
-
-	if (ui->quickColorList->selectedItems().isEmpty())
-		return;
-
-	QListWidgetItem* item = ui->quickColorList->selectedItems() [0];
-	int idx = getItemRow (item, quickColorItems);
-	int dest = up ? (idx - 1) : (idx + 1);
-
-	if (dest < 0 || dest >= quickColorItems.size())
-		return; // destination out of bounds
-
-	LDQuickColor tmp = quickColors[dest];
-	quickColors[dest] = quickColors[idx];
-	quickColors[idx] = tmp;
-
-	updateQuickColorList (&quickColors[dest]);
-}
-
-// =============================================================================
-// Add a separator to quick colors
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_addColorSeparator()
-{
-	quickColors << LDQuickColor::getSeparator();
-	updateQuickColorList (&quickColors[quickColors.size() - 1]);
-}
-
-// =============================================================================
-// Clear all quick colors
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_clearColors()
-{
-	quickColors.clear();
-	updateQuickColorList();
-}
-
-// =============================================================================
-// Pick a color and set the appropriate configuration option.
-// -----------------------------------------------------------------------------
-void ConfigDialog::pickColor (QString& conf, QPushButton* button)
-{
-	QColor col = QColorDialog::getColor (QColor (conf));
-
-	if (col.isValid())
-	{
-		int r = col.red(),
-			g = col.green(),
-			b = col.blue();
-
-		QString colname;
-		colname.sprintf ("#%.2X%.2X%.2X", r, g, b);
-		conf = colname;
-		setButtonBackground (button, colname);
-	}
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_setGLBackground()
-{
-	pickColor (gl_bgcolor, ui->backgroundColorButton);
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_setGLForeground()
-{
-	pickColor (gl_maincolor, ui->mainColorButton);
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_setGLSelectColor()
-{
-	pickColor (gl_selectcolor, ui->selColorButton);
-}
-
-// =============================================================================
-// Sets background color of a given button.
-// -----------------------------------------------------------------------------
-void ConfigDialog::setButtonBackground (QPushButton* button, QString value)
-{
-	button->setIcon (getIcon ("colorselect"));
-	button->setAutoFillBackground (true);
-	button->setStyleSheet (fmt ("background-color: %1", value));
-}
-
-// =============================================================================
-// Finds the given list widget item in the list of widget items given.
-// -----------------------------------------------------------------------------
-int ConfigDialog::getItemRow (QListWidgetItem* item, QList<QListWidgetItem*>& haystack)
-{
-	int i = 0;
-
-	for (QListWidgetItem* it : haystack)
-	{
-		if (it == item)
-			return i;
-
-		++i;
-	}
-
-	return -1;
-}
-
-// =============================================================================
-// Which quick color is currently selected?
-// -----------------------------------------------------------------------------
-QListWidgetItem* ConfigDialog::getSelectedQuickColor()
-{
-	if (ui->quickColorList->selectedItems().isEmpty())
-		return null;
-
-	return ui->quickColorList->selectedItems() [0];
-}
-
-// =============================================================================
-// Get the list of shortcuts selected
-// -----------------------------------------------------------------------------
-QList<ShortcutListItem*> ConfigDialog::getShortcutSelection()
-{
-	QList<ShortcutListItem*> out;
-
-	for (QListWidgetItem* entry : ui->shortcutsList->selectedItems())
-		out << static_cast<ShortcutListItem*> (entry);
-
-	return out;
-}
-
-// =============================================================================
-// Edit the shortcut of a given action.
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_setShortcut()
-{
-	QList<ShortcutListItem*> sel = getShortcutSelection();
-
-	if (sel.size() < 1)
-		return;
-
-	ShortcutListItem* item = sel[0];
-
-	if (KeySequenceDialog::staticDialog (item->getKeyConfig(), this))
-		setShortcutText (item);
-}
-
-// =============================================================================
-// Reset a shortcut to defaults
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_resetShortcut()
-{
-	QList<ShortcutListItem*> sel = getShortcutSelection();
-
-	for (ShortcutListItem* item : sel)
-	{
-		item->getKeyConfig()->reset();
-		setShortcutText (item);
-	}
-}
-
-// =============================================================================
-// Remove the shortcut of an action.
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_clearShortcut()
-{
-	QList<ShortcutListItem*> sel = getShortcutSelection();
-
-	for (ShortcutListItem* item : sel)
-	{
-		item->getKeyConfig()->setValue (QKeySequence());
-		setShortcutText (item);
-	}
-}
-
-// =============================================================================
-// Set the path of an external program
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_setExtProgPath()
-{
-	const LDExtProgInfo* info = null;
-
-	for (const LDExtProgInfo& it : g_LDExtProgInfo)
-	{
-		if (it.setPathButton == sender())
-		{
-			info = &it;
-			break;
-		}
-	}
-
-	assert (info != null);
-	QString fpath = QFileDialog::getOpenFileName (this, fmt ("Path to %1", info->name), *info->path, g_extProgPathFilter);
-
-	if (fpath.isEmpty())
-		return;
-
-	info->input->setText (fpath);
-}
-
-// =============================================================================
-// '...' button pressed for the download path
-// -----------------------------------------------------------------------------
-void ConfigDialog::slot_findDownloadFolder()
-{
-	QString dpath = QFileDialog::getExistingDirectory();
-	ui->downloadPath->setText (dpath);
-}
-
-// =============================================================================
-// Updates the text string for a given shortcut list item
-// -----------------------------------------------------------------------------
-void ConfigDialog::setShortcutText (ShortcutListItem* item)
-{
-	QAction* act = item->getAction();
-	QString label = act->iconText();
-	QString keybind = item->getKeyConfig()->getValue().toString();
-	item->setText (fmt ("%1 (%2)", label, keybind));
-}
-
-// =============================================================================
-// Gets the configuration string of the quick color toolbar
-// -----------------------------------------------------------------------------
-QString ConfigDialog::quickColorString()
-{
-	QString val;
-
-	for (const LDQuickColor& entry : quickColors)
-	{
-		if (val.length() > 0)
-			val += ':';
-
-		if (entry.isSeparator())
-			val += '|';
-		else
-			val += fmt ("%1", entry.getColor()->index);
-	}
-
-	return val;
-}
-
-// ===============================================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// ===============================================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// ===============================================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// ===============================================================================================
-KeySequenceDialog::KeySequenceDialog (QKeySequence seq, QWidget* parent, Qt::WindowFlags f) :
-	QDialog (parent, f), seq (seq)
-{
-	lb_output = new QLabel;
-	IMPLEMENT_DIALOG_BUTTONS
-
-	setWhatsThis (tr ("Into this dialog you can input a key sequence for use as a "
-		"shortcut in LDForge. Use OK to confirm the new shortcut and Cancel to "
-		"dismiss."));
-
-	QVBoxLayout* layout = new QVBoxLayout;
-	layout->addWidget (lb_output);
-	layout->addWidget (bbx_buttons);
-	setLayout (layout);
-
-	updateOutput();
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-bool KeySequenceDialog::staticDialog (KeySequenceConfig* cfg, QWidget* parent)
-{
-	KeySequenceDialog dlg (cfg->getValue(), parent);
-
-	if (dlg.exec() == false)
-		return false;
-
-	cfg->setValue (dlg.seq);
-	return true;
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-void KeySequenceDialog::updateOutput()
-{
-	QString shortcut = seq.toString();
-
-	if (seq == QKeySequence())
-		shortcut = "&lt;empty&gt;";
-
-	QString text = fmt ("<center><b>%1</b></center>", shortcut);
-	lb_output->setText (text);
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-void KeySequenceDialog::keyPressEvent (QKeyEvent* ev)
-{
-	seq = ev->key() + ev->modifiers();
-	updateOutput();
-}

mercurial