# HG changeset patch # User Chris Cannam # Date 1299791098 0 # Node ID 5fa5c908ca009085fcc33603f5d782d252133867 # Parent 306ffd9130719faadc765ce9bc2b3477c001d4f2 Add right-button menus (not yet functional, but hopefully with the right things in them) diff -r 306ffd913071 -r 5fa5c908ca00 filestates.cpp --- a/filestates.cpp Thu Mar 10 18:45:50 2011 +0000 +++ b/filestates.cpp Thu Mar 10 21:04:58 2011 +0000 @@ -184,6 +184,17 @@ return activitiesSupportedBy(s).contains(a); } +int FileStates::activityGroup(Activity a) +{ + switch (a) { + case Annotate: case Diff: return 0; + case Commit: case Revert: return 1; + case Add: case Remove: return 2; + case RedoMerge: case MarkResolved: return 3; + case Ignore: case UnIgnore: return 4; + } +} + bool FileStates::supportsActivity(QString file, Activity a) const { return supportsActivity(stateOf(file), a); diff -r 306ffd913071 -r 5fa5c908ca00 filestates.h --- a/filestates.h Thu Mar 10 18:45:50 2011 +0000 +++ b/filestates.h Thu Mar 10 21:04:58 2011 +0000 @@ -68,12 +68,16 @@ Annotate, Diff, + Commit, Revert, + Add, Remove, + RedoMerge, MarkResolved, + Ignore, UnIgnore, @@ -85,6 +89,7 @@ static bool supportsActivity(State s, Activity a); static Activities activitiesSupportedBy(State s); + static int activityGroup(Activity a); bool supportsActivity(QString file, Activity a) const; QStringList filesSupportingActivity(Activity) const; diff -r 306ffd913071 -r 5fa5c908ca00 filestatuswidget.cpp --- a/filestatuswidget.cpp Thu Mar 10 18:45:50 2011 +0000 +++ b/filestatuswidget.cpp Thu Mar 10 21:04:58 2011 +0000 @@ -57,6 +57,17 @@ m_simpleLabels[FileStates::Unknown] = tr("Untracked:"); m_simpleLabels[FileStates::Ignored] = tr("Ignored:"); + m_actionLabels[FileStates::Annotate] = tr("Annotate"); + m_actionLabels[FileStates::Diff] = tr("Diff"); + m_actionLabels[FileStates::Commit] = tr("Commit..."); + m_actionLabels[FileStates::Revert] = tr("Revert"); + m_actionLabels[FileStates::Add] = tr("Add"); + m_actionLabels[FileStates::Remove] = tr("Remove"); + m_actionLabels[FileStates::RedoMerge] = tr("Redo Merge"); + m_actionLabels[FileStates::MarkResolved] = tr("Mark Resolved"); + m_actionLabels[FileStates::Ignore] = tr("Ignore"); + m_actionLabels[FileStates::UnIgnore] = tr("Stop Ignoring"); + m_descriptions[FileStates::Clean] = tr("You have not changed these files."); m_descriptions[FileStates::Modified] = tr("You have changed these files since you last committed them."); m_descriptions[FileStates::Added] = tr("These files will be added to version control next time you commit them."); @@ -107,7 +118,19 @@ connect(w, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged())); - w->insertAction(0, new QAction(tr("Commit"), w)); + FileStates::Activities activities = m_fileStates.activitiesSupportedBy(s); + int prevGroup = -1; + foreach (FileStates::Activity a, activities) { + int group = FileStates::activityGroup(a); + if (group != prevGroup && prevGroup != -1) { + QAction *sep = new QAction("", w); + sep->setSeparator(true); + w->insertAction(0, sep); + } + prevGroup = group; + QAction *act = new QAction(m_actionLabels[a], w); + w->insertAction(0, act); + } w->setContextMenuPolicy(Qt::ActionsContextMenu); boxlayout->addItem(new QSpacerItem(2, 2), 3, 0); diff -r 306ffd913071 -r 5fa5c908ca00 filestatuswidget.h --- a/filestatuswidget.h Thu Mar 10 18:45:50 2011 +0000 +++ b/filestatuswidget.h Thu Mar 10 21:04:58 2011 +0000 @@ -84,6 +84,7 @@ QMap m_simpleLabels; QMap m_descriptions; QMap m_stateListMap; + QMap m_actionLabels; QString m_highlightExplanation; QFileInfo *m_dateReference;