Ejemplo n.º 1
0
void Editor::editColor()
{
	if (!activeStack() || selection_->empty())
		return;

	KMenu menu(i18n("Select Color"));
	menu.addTitle(i18n("Shortcuts"));

	ColorManager *cm = Application::self()->colorManager();

	foreach (const ldraw::color &it, cm->colorList()) {
		QAction *action = menu.addAction(QIcon(ColorManager::colorPixmap(it)), it.get_entity()->name.c_str());
		action->setData(it.get_id());
	}

	menu.addTitle(i18n("Recently Used"));

	foreach (const ColorManager::RecentColorPair &it, cm->recentlyUsed()) {
		QAction *action = menu.addAction(QIcon(ColorManager::colorPixmap(it.first)), it.first.get_entity()->name.c_str());
		action->setData(it.first.get_id());
	}
	
	menu.addSeparator();
	QAction *customize = menu.addAction(i18n("&More..."));

	QAction *result = menu.exec(QCursor::pos());
	if (result) {
		if (result == customize) {
			ColorDialog *colordialog = new ColorDialog(Application::self()->rootWindow());

			if (colordialog->exec() == QDialog::Accepted) {
				activeStack()->push(new CommandColor(colordialog->getSelected(), *selection_, model_));
				cm->hit(colordialog->getSelected());
				
				emit modified();
			}
			
			delete colordialog;
		} else {
			ldraw::color selected(result->data().toInt());
			
			activeStack()->push(new CommandColor(selected, *selection_, model_));
			cm->hit(selected);
			
			emit modified();
		}
	}
}