Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / editors / sc-ide / widgets / documents_dialog.hpp
blob63593be7dbcb1c2f84c583838e0b5ba0f59fc58a
1 /*
2 SuperCollider Qt IDE
3 Copyright (c) 2012 Jakob Leben & Tim Blechmann
4 http://www.audiosynth.com
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 #ifndef SCIDE_WIDGETS_UTIL_DOCUMENTS_DIALOG_HPP_INCLUDED
22 #define SCIDE_WIDGETS_UTIL_DOCUMENTS_DIALOG_HPP_INCLUDED
24 #include "../core/doc_manager.hpp"
26 #include <QDialog>
27 #include <QTreeWidget>
28 #include <QLabel>
30 namespace ScIDE {
32 class Document;
34 class DocumentsDialog : public QDialog
36 Q_OBJECT
38 public:
39 enum Mode
41 ExternalChange,
42 Quit
45 DocumentsDialog(Mode, QWidget *parent = 0);
46 DocumentsDialog(const QList<Document*> & docs, Mode, QWidget *parent = 0);
47 void setText( const QString &text ) { mLabel->setText(text); }
48 void addDocument( Document * );
49 int count() { return mDocTree->topLevelItemCount(); }
51 public slots:
52 void selectAll();
53 void selectNone();
55 private slots:
56 void saveSelected();
57 void reloadSelected();
58 void ignoreSelected();
59 void closeSelected();
60 void onDocumentChangedExternally( Document * );
62 private:
64 class Item : public QTreeWidgetItem
66 public:
67 Item(Document *doc);
68 Document *document() const { return mDoc; }
69 bool isChecked() const { return checkState(0) == Qt::Checked; }
70 void setChecked( bool checked ) { setCheckState(0, checked ? Qt::Checked : Qt::Unchecked); }
71 void update();
72 private:
73 void setTitle( const QString &title ) { setText(0, title); }
74 void setPath( const QString &path ) { setText(1, path); }
75 void setStatus( const QString &status ) { setText(2, status); }
76 Document *mDoc;
79 void init( Mode mode, const QList<Document*> & = QList<Document*>() );
80 Item *item( int idx ) { return static_cast<Item*>(mDocTree->topLevelItem(idx)); }
82 Mode mMode;
83 QLabel *mLabel;
84 QTreeWidget *mDocTree;
87 } // namespace ScIDE
89 #endif // SCIDE_WIDGETS_UTIL_DOCUMENTS_DIALOG_HPP_INCLUDED