]> git.lyx.org Git - lyx.git/blob - src/frontends/kde/FormDocument.C
small cleanup, doxygen, formatting changes
[lyx.git] / src / frontends / kde / FormDocument.C
1 /**
2  * \file FormDocument.C
3  * Copyright 2001 the LyX Team
4  * Read the file COPYING
5  *
6  * \author John Levon
7  */
8
9 #include <config.h>
10
11 #include "docdlg.h"
12
13 #include "Dialogs.h"
14 #include "FormDocument.h"
15
16 #include "CutAndPaste.h" 
17 #include "buffer.h"
18 #include "Liason.h"
19
20 #include "QtLyXView.h"
21 #include "debug.h"
22
23 #ifdef CXX_WORKING_NAMESPACES
24 using Liason::setMinibuffer;
25 #endif
26
27 FormDocument::FormDocument(LyXView *v, Dialogs *d)
28         : dialog_(0), lv_(v), d_(d), h_(0)
29 {
30         d->showLayoutDocument.connect(slot(this, &FormDocument::show));
31 }
32
33
34 FormDocument::~FormDocument()
35 {
36         delete dialog_;
37 }
38
39
40 void FormDocument::update(bool)
41 {
42         if (!lv_->view()->available())
43                 return;
44
45         Buffer *buf = lv_->buffer();
46
47         if (readonly!=buf->isReadonly()) {
48                 readonly = buf->isReadonly();
49                 dialog_->setReadOnly(readonly);
50         }
51
52         dialog_->setFromParams(buf->params);
53 }
54
55
56 void FormDocument::apply()
57 {
58         if (readonly)
59                 return;
60         
61         if (!lv_->view()->available())
62                 return;
63
64         BufferParams & params = lv_->buffer()->params;
65
66         if (dialog_->updateParams(params))
67                 lv_->view()->redoCurrentBuffer();
68
69         lv_->buffer()->markDirty();
70         setMinibuffer(lv_, _("Document layout set"));
71 }
72  
73
74 void FormDocument::show()
75 {
76         if (!dialog_)
77                 dialog_ = new DocDialog(this, 0, _("LyX: Document Options"), false);
78
79         if (!dialog_->isVisible())
80                 h_ = d_->hideBufferDependent.connect(slot(this, &FormDocument::hide));
81
82
83         dialog_->raise();
84         dialog_->setActiveWindow();
85         update();
86  
87         dialog_->show();
88 }
89
90
91 bool FormDocument::changeClass(BufferParams & params, int new_class)
92 {
93         if (textclasslist.Load(new_class)) {
94                 // successfully loaded
95                 setMinibuffer(lv_, _("Converting document to new document class..."));
96
97                 CutAndPaste cap;
98                 int ret = cap.SwitchLayoutsBetweenClasses(
99                         params.textclass, new_class,
100                         lv_->buffer()->paragraph);
101                 if (ret) {
102                         /* FIXME: error message */
103                 }
104
105                 params.textclass = new_class;
106         } else
107                 return false;
108
109         return true;
110 }
111
112  
113 void FormDocument::close()
114 {
115         h_.disconnect();
116 }
117
118
119 void FormDocument::hide()
120 {
121         dialog_->hide();
122         close();
123 }