summaryrefslogtreecommitdiffstats
path: root/kompare/kompare_shell.h
blob: be3bb1507e934c725285933683b27909ff8b7e4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/***************************************************************************
                                kompare_shell.h  -  description
                                -------------------
        begin                   : Sun Mar 4 2001
        copyright               : (C) 2001-2003 by Otto Bruggeman
                                  and John Firebaugh
        email                   : otto.bruggeman@home.nl
                                  jfirebaugh@kde.org
****************************************************************************/

/***************************************************************************
**
**   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.
**
***************************************************************************/

#ifndef KOMPARESHELL_H
#define KOMPARESHELL_H

#include <kapplication.h>
#include <kparts/dockmainwindow.h>

#include "kompare.h"

class KToggleAction;

class KSqueezedTextLabel;
class KomparePart;
class KompareNavTreePart;

namespace KTextEditor {
	class Document;
	class EditInterface;
	class View;
}

/**
* This is the application "Shell".  It has a menubar, toolbar, and
* statusbar but relies on the "Part" to do all the real work.
*
* Adapted the shell a bit so it now handles seperate view and navigation parts
*
* @short Application Shell
* @author John Firebaugh <jfirebaugh@kde.org>
* @author Otto Bruggeman <bruggie@home.nl>
* @version 3.2.90
*/
class KompareShell : public KParts::DockMainWindow
{
	Q_OBJECT
public:
	/**
	* Default Constructor
	*/
	KompareShell();

	/**
	* Default Destructor
	*/
	virtual ~KompareShell();

	/**
	* Use this method to load whatever file/URL you have
	*/
	void openDiff( const KURL& url );

	/**
	* Use this method to load the diff from stdin
	*/
	void openStdin();

	/**
	 * Use this method to compare 2 URLs (files or directories)
	 */
	void compare( const KURL& source, const KURL& destination );

	/**
	 * Use this method to blend diff into url1 (file or directory)
	 */
	void blend( const KURL& url1, const KURL& diff );

public slots:
	void slotUpdateStatusBar( int modelIndex, int differenceIndex, int modelCount, int differenceCount, int appliedCount );
	void setCaption( const QString& caption );

	/**
	 * This method only exists because i cant make main a frined of this class
	 */
	KomparePart* viewPart() const { return m_viewPart; }

protected:
	virtual bool queryClose();

	/**
	* This method is called when it is time for the app to save its
	* properties for session management purposes.
	*/
	void saveProperties(KConfig *);

	/**
	* This method is called when this app is restored.  The KConfig
	* object points to the session management config file that was saved
	* with @ref saveProperties
	*/
	void readProperties(KConfig *);

private slots:
	void slotSetStatusBarText( const QString& text );
	void slotFileOpen();
	void slotFileCompareFiles();
	void slotFileBlendURLAndDiff();
	void slotShowTextView();
	void slotFileClose();
	void optionsConfigureKeys();
	void optionsConfigureToolbars();
	void slotSetDiffString( const QString& diffString );
	void newToolbarConfig();

private:
	void setupAccel();
	void setupActions();
	void setupStatusBar();

private:
	KURL                        m_sourceURL;
	KURL                        m_destinationURL;
	KURL                        m_diffURL;

	KomparePart*                m_viewPart;
	KompareNavTreePart*         m_navTreePart;
	KTextEditor::Document*      m_textViewPart;
	KTextEditor::View*          m_textView;
	KTextEditor::EditInterface* m_textEditIface;

	KDockWidget*                m_textViewWidget;
	KDockWidget*                m_mainViewDock;
	KDockWidget*                m_navTreeDock;

	KToggleAction*              m_showTextView;

	enum Kompare::Mode          m_mode;
	// This is the statusbarwidget for displaying the general stuff
	KSqueezedTextLabel*         m_generalLabel;
};

#endif // KOMPARE_H