32 : m_tagChooserWidget(tagChooser)
34 QImage image = resource->image();
35 QIcon icon(QPixmap::fromImage(image));
36 QAction *label =
new QAction(resource->name(),
this);
41 QMenu *removableTagsMenu;
42 QMenu *assignableTagsMenu;
53 for (
int i = 0; i < tagResourceModel.rowCount(); ++i) {
55 if (!tag.isNull() && tag->valid() && !
isSpecialTag(tag)) {
61 for (
int i = 0; i <
m_tagModel->rowCount(); i++) {
64 if (!tag.isNull() && tag->valid() && !
isSpecialTag(tag)) {
65 assignableTags << tag;
71 bool currentTagInRemovables = !currentlySelectedTag.isNull();
72 currentTagInRemovables = currentTagInRemovables
73 && (std::find_if(removableTags.begin(), removableTags.end(), comparer) != removableTags.end());
75 assignableTagsMenu = addMenu(
koIcon(
"list-add"),i18n(
"Assign to tag"));
77 if (!removableTags.isEmpty()) {
79 KisTagSP currentTag = currentlySelectedTag;
81 if (!currentTag.isNull() && currentTagInRemovables) {
83 removableTags.erase(std::remove_if(removableTags.begin(),
87 assignableTags.erase(std::remove_if(assignableTags.begin(),
90 assignableTags.end());
93 removeTagAction->setText(i18n(
"Remove from this tag"));
94 removeTagAction->setIcon(
koIcon(
"list-remove"));
98 addAction(removeTagAction);
101 if (!removableTags.isEmpty()) {
102 removableTagsMenu = addMenu(
koIcon(
"list-remove"),i18n(
"Remove from other tag"));
106 foreach (
const KisTagSP tag, removableTags) {
113 assignableTags.erase(std::remove_if(assignableTags.begin(),
114 assignableTags.end(),
115 compareWithRemovable),
116 assignableTags.end());
122 removableTagsMenu->addAction(removeTagAction);
128 foreach (
const KisTagSP &tag, assignableTags) {
138 assignableTagsMenu->addAction(addTagAction);
141 assignableTagsMenu->addSeparator();
146 assignableTagsMenu->addAction(addNewTagAction);