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(); } } }