//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    using System.Collections.Generic;
    /// <remarks> See <see cref="IQItemSelectionModelSignals"></see> for signals emitted by QItemSelectionModel
    /// </remarks>
    [SmokeClass("QItemSelectionModel")]
    public class QItemSelectionModel : QObject, IDisposable {
        protected QItemSelectionModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QItemSelectionModel), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static QItemSelectionModel() {
            staticInterceptor = new SmokeInvocation(typeof(QItemSelectionModel), null);
        }
        public enum SelectionFlag {
            NoUpdate = 0x0000,
            Clear = 0x0001,
            Select = 0x0002,
            Deselect = 0x0004,
            Toggle = 0x0008,
            Current = 0x0010,
            Rows = 0x0020,
            Columns = 0x0040,
            SelectCurrent = Select|Current,
            ToggleCurrent = Toggle|Current,
            ClearAndSelect = Clear|Select,
        }
        // QItemSelectionModel* QItemSelectionModel(QItemSelectionModelPrivate& arg1,QAbstractItemModel* arg2); >>>> NOT CONVERTED
        public QItemSelectionModel(QAbstractItemModel model) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QItemSelectionModel#", "QItemSelectionModel(QAbstractItemModel*)", typeof(void), typeof(QAbstractItemModel), model);
        }
        public QItemSelectionModel(QAbstractItemModel model, QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QItemSelectionModel##", "QItemSelectionModel(QAbstractItemModel*, QObject*)", typeof(void), typeof(QAbstractItemModel), model, typeof(QObject), parent);
        }
        public QModelIndex CurrentIndex() {
            return (QModelIndex) interceptor.Invoke("currentIndex", "currentIndex() const", typeof(QModelIndex));
        }
        public bool IsSelected(QModelIndex index) {
            return (bool) interceptor.Invoke("isSelected#", "isSelected(const QModelIndex&) const", typeof(bool), typeof(QModelIndex), index);
        }
        public bool IsRowSelected(int row, QModelIndex parent) {
            return (bool) interceptor.Invoke("isRowSelected$#", "isRowSelected(int, const QModelIndex&) const", typeof(bool), typeof(int), row, typeof(QModelIndex), parent);
        }
        public bool IsColumnSelected(int column, QModelIndex parent) {
            return (bool) interceptor.Invoke("isColumnSelected$#", "isColumnSelected(int, const QModelIndex&) const", typeof(bool), typeof(int), column, typeof(QModelIndex), parent);
        }
        public bool RowIntersectsSelection(int row, QModelIndex parent) {
            return (bool) interceptor.Invoke("rowIntersectsSelection$#", "rowIntersectsSelection(int, const QModelIndex&) const", typeof(bool), typeof(int), row, typeof(QModelIndex), parent);
        }
        public bool ColumnIntersectsSelection(int column, QModelIndex parent) {
            return (bool) interceptor.Invoke("columnIntersectsSelection$#", "columnIntersectsSelection(int, const QModelIndex&) const", typeof(bool), typeof(int), column, typeof(QModelIndex), parent);
        }
        public bool HasSelection() {
            return (bool) interceptor.Invoke("hasSelection", "hasSelection() const", typeof(bool));
        }
        public List<QModelIndex> SelectedIndexes() {
            return (List<QModelIndex>) interceptor.Invoke("selectedIndexes", "selectedIndexes() const", typeof(List<QModelIndex>));
        }
        public List<QModelIndex> SelectedRows(int column) {
            return (List<QModelIndex>) interceptor.Invoke("selectedRows$", "selectedRows(int) const", typeof(List<QModelIndex>), typeof(int), column);
        }
        public List<QModelIndex> SelectedRows() {
            return (List<QModelIndex>) interceptor.Invoke("selectedRows", "selectedRows() const", typeof(List<QModelIndex>));
        }
        public List<QModelIndex> SelectedColumns(int row) {
            return (List<QModelIndex>) interceptor.Invoke("selectedColumns$", "selectedColumns(int) const", typeof(List<QModelIndex>), typeof(int), row);
        }
        public List<QModelIndex> SelectedColumns() {
            return (List<QModelIndex>) interceptor.Invoke("selectedColumns", "selectedColumns() const", typeof(List<QModelIndex>));
        }
        public QItemSelection Selection() {
            return (QItemSelection) interceptor.Invoke("selection", "selection() const", typeof(QItemSelection));
        }
        public QAbstractItemModel Model() {
            return (QAbstractItemModel) interceptor.Invoke("model", "model() const", typeof(QAbstractItemModel));
        }
        [Q_SLOT("void setCurrentIndex(QModelIndex, QItemSelectionModel::SelectionFlags)")]
        public void SetCurrentIndex(QModelIndex index, uint command) {
            interceptor.Invoke("setCurrentIndex#$", "setCurrentIndex(const QModelIndex&, QItemSelectionModel::SelectionFlags)", typeof(void), typeof(QModelIndex), index, typeof(uint), command);
        }
        [Q_SLOT("void select(QModelIndex, QItemSelectionModel::SelectionFlags)")]
        [SmokeMethod("select(const QModelIndex&, QItemSelectionModel::SelectionFlags)")]
        public virtual void Select(QModelIndex index, uint command) {
            interceptor.Invoke("select#$", "select(const QModelIndex&, QItemSelectionModel::SelectionFlags)", typeof(void), typeof(QModelIndex), index, typeof(uint), command);
        }
        [Q_SLOT("void select(QItemSelection, QItemSelectionModel::SelectionFlags)")]
        [SmokeMethod("select(const QItemSelection&, QItemSelectionModel::SelectionFlags)")]
        public virtual void Select(QItemSelection selection, uint command) {
            interceptor.Invoke("select#$", "select(const QItemSelection&, QItemSelectionModel::SelectionFlags)", typeof(void), typeof(QItemSelection), selection, typeof(uint), command);
        }
        [Q_SLOT("void clear()")]
        [SmokeMethod("clear()")]
        public virtual void Clear() {
            interceptor.Invoke("clear", "clear()", typeof(void));
        }
        [Q_SLOT("void reset()")]
        [SmokeMethod("reset()")]
        public virtual void Reset() {
            interceptor.Invoke("reset", "reset()", typeof(void));
        }
        [Q_SLOT("void clearSelection()")]
        public void ClearSelection() {
            interceptor.Invoke("clearSelection", "clearSelection()", typeof(void));
        }
        protected void EmitSelectionChanged(QItemSelection newSelection, QItemSelection oldSelection) {
            interceptor.Invoke("emitSelectionChanged##", "emitSelectionChanged(const QItemSelection&, const QItemSelection&)", typeof(void), typeof(QItemSelection), newSelection, typeof(QItemSelection), oldSelection);
        }
        ~QItemSelectionModel() {
            interceptor.Invoke("~QItemSelectionModel", "~QItemSelectionModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~QItemSelectionModel", "~QItemSelectionModel()", typeof(void));
        }
        public static new string Tr(string s, string c) {
            return (string) staticInterceptor.Invoke("tr$$", "tr(const char*, const char*)", typeof(string), typeof(string), s, typeof(string), c);
        }
        public static new string Tr(string s) {
            return (string) staticInterceptor.Invoke("tr$", "tr(const char*)", typeof(string), typeof(string), s);
        }
        protected new IQItemSelectionModelSignals Emit {
            get { return (IQItemSelectionModelSignals) Q_EMIT; }
        }
    }

    public interface IQItemSelectionModelSignals : IQObjectSignals {
        [Q_SIGNAL("void selectionChanged(QItemSelection, QItemSelection)")]
        void SelectionChanged(QItemSelection selected, QItemSelection deselected);
        [Q_SIGNAL("void currentChanged(QModelIndex, QModelIndex)")]
        void CurrentChanged(QModelIndex current, QModelIndex previous);
        [Q_SIGNAL("void currentRowChanged(QModelIndex, QModelIndex)")]
        void CurrentRowChanged(QModelIndex current, QModelIndex previous);
        [Q_SIGNAL("void currentColumnChanged(QModelIndex, QModelIndex)")]
        void CurrentColumnChanged(QModelIndex current, QModelIndex previous);
    }
}
