view hgaction.h @ 111:151209bc5bd6

* Fixes to terminal lifecycle (only the first of a series of interactive commands was working before). Also switch from openpty to POSIX/Unix98 openpt
author Chris Cannam
date Fri, 26 Nov 2010 16:28:18 +0000
parents 0f039d3cc38e
children 5fc7b4fc77a8
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    EasyMercurial

    Based on HgExplorer by Jari Korhonen
    Copyright (c) 2010 Jari Korhonen
    Copyright (c) 2010 Chris Cannam
    Copyright (c) 2010 Queen Mary, University of London
    
    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 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#ifndef HGACTION_H
#define HGACTION_H

#include <QString>
#include <QStringList>

enum HGACTIONS
{
    ACT_NONE,
    ACT_QUERY_PATHS,
    ACT_QUERY_BRANCH,
    ACT_STAT,
    ACT_QUERY_HEADS,
    ACT_QUERY_PARENTS,
    ACT_LOG,
    ACT_REMOVE,
    ACT_ADD,
    ACT_INCOMING,
    ACT_PUSH,
    ACT_PULL,
    ACT_CLONEFROMREMOTE,
    ACT_INIT,
    ACT_COMMIT,
    ACT_ANNOTATE,
    ACT_FILEDIFF,
    ACT_FOLDERDIFF,
    ACT_CHGSETDIFF,
    ACT_UPDATE,
    ACT_REVERT,
    ACT_MERGE,
    ACT_RESOLVE_LIST,
    ACT_SERVE,
    ACT_RESOLVE_MARK,
    ACT_RETRY_MERGE,
    ACT_TAG,
    ACT_HG_IGNORE,
};

struct HgAction
{
    HGACTIONS action;
    QString workingDir;
    QStringList params;

    QString executable; // empty for normal Hg

    HgAction() : action(ACT_NONE) { }

    HgAction(HGACTIONS _action, QString _wd, QStringList _params) :
        action(_action), workingDir(_wd), params(_params) { }

    bool operator==(const HgAction &a) {
        return (a.action == action && a.workingDir == workingDir &&
                a.params == params && a.executable == executable);
    }

    bool mayBeInteractive() const {
	switch (action) {
	case ACT_INCOMING:
	case ACT_PUSH:
	case ACT_PULL:
	case ACT_CLONEFROMREMOTE:
	case ACT_FILEDIFF:
	case ACT_FOLDERDIFF:
	case ACT_CHGSETDIFF:
	case ACT_SERVE:
	    return true;
	default:
	    return false;
	}
    }
};

#endif