]> git.lyx.org Git - lyx.git/blob - src/figureForm.C
fix compilation pb ; update eu.po
[lyx.git] / src / figureForm.C
1 /* This file is part of
2  * ====================================================== 
3  * 
4  *           LyX, The Document Processor
5  *       
6  *          Copyright 1995 Matthias Ettrich,
7  *          Copyright 1995-2000 The LyX Team.
8  *
9  * ====================================================== */
10
11 #include <config.h>
12
13 #include <fstream>
14 #include <algorithm>
15 #include <utility> 
16 #include <iostream>
17
18 #include FORMS_H_LOCATION
19
20 #include "figure_form.h"
21 #include "insets/figinset.h"
22 #include "BufferView.h"
23 #include "lyxtext.h"
24 #include "LyXView.h"
25 #include "gettext.h"
26
27 extern FD_form_figure * fd_form_figure;
28 extern BufferView * current_view;
29
30 void Figure()
31 {
32         if (fd_form_figure->form_figure->visible) {
33                 fl_raise_form(fd_form_figure->form_figure);
34         } else {
35                 fl_show_form(fd_form_figure->form_figure,
36                              FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT,
37                              _("Insert Figure"));
38         }
39 }
40
41
42 /* callbacks for form form_figure */
43 extern "C"
44 void FigureApplyCB(FL_OBJECT *, long)
45 {
46         if (!current_view->available())
47                 return;
48
49         Buffer * buffer = current_view->buffer();
50         if (buffer->isReadonly()) // paranoia
51                 return;
52
53         current_view->owner()->message(_("Inserting figure..."));
54         if (fl_get_button(fd_form_figure->radio_inline)) {
55                 InsetFig * new_inset = new InsetFig(100, 20, *buffer);
56                 current_view->insertInset(new_inset);
57                 current_view->owner()->message(_("Figure inserted"));
58                 new_inset->Edit(current_view, 0, 0, 0);
59                 return;
60         }
61         
62         current_view->hideCursor();
63         current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR);
64         current_view->beforeChange(current_view->text);
65       
66         current_view->text->SetCursorParUndo(current_view->buffer()); 
67         current_view->text->FreezeUndo();
68
69         current_view->text->BreakParagraph(current_view);
70         current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
71
72 #ifndef NEW_INSETS
73         if (current_view->text->cursor.par()->Last()) {
74 #else
75         if (current_view->text->cursor.par()->size()) {
76 #endif
77                 current_view->text->CursorLeft(current_view);
78          
79                 current_view->text->BreakParagraph(current_view);
80                 current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
81         }
82
83         // The standard layout should always be numer 0;
84         current_view->text->SetLayout(current_view, 0);
85
86 #ifndef NEW_INSETS
87         if (current_view->text->cursor.par()->footnoteflag == 
88             LyXParagraph::NO_FOOTNOTE) {
89 #endif
90                 current_view->text->
91                         SetParagraph(current_view, 0, 0,
92                                      0, 0,
93                                      VSpace (0.3 * buffer->params.spacing.getValue(),
94                                              LyXLength::CM),
95                                      VSpace (0.3 *
96                                              buffer->params.spacing.getValue(),
97                                              LyXLength::CM),
98                                      LYX_ALIGN_CENTER, string(), 0);
99 #ifndef NEW_INSETS
100         } else {
101                 current_view->text->SetParagraph(current_view, 0, 0,
102                                                  0, 0,
103                                                  VSpace(VSpace::NONE),
104                                                  VSpace(VSpace::NONE),
105                                                  LYX_ALIGN_CENTER, 
106                                                  string(),
107                                                  0);
108         }
109 #endif
110         
111         current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
112       
113         Inset * new_inset = new InsetFig(100, 100, *buffer);
114         current_view->insertInset(new_inset);
115         new_inset->Edit(current_view, 0, 0, 0);
116         current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR);
117         current_view->owner()->message(_("Figure inserted"));
118         current_view->text->UnFreezeUndo();
119         current_view->setState();
120 }
121
122
123 extern "C"
124 void FigureCancelCB(FL_OBJECT *, long)
125 {
126         fl_hide_form(fd_form_figure->form_figure);
127 }
128
129
130 extern "C"
131 void FigureOKCB(FL_OBJECT * ob, long data)
132 {
133         FigureApplyCB(ob, data);
134         FigureCancelCB(ob, data);
135 }