]> git.lyx.org Git - lyx.git/blob - src/insets/insetindex.C
clear()->erase() ; lots of using directives for cxx
[lyx.git] / src / insets / insetindex.C
1 #include <config.h>
2
3 #include <cstdlib>
4
5 #ifdef __GNUG__
6 #pragma implementation
7 #endif
8
9 #include FORMS_H_LOCATION  
10 #include "insetindex.h"
11 #include "buffer.h"
12 #include "debug.h"
13 #include "LaTeXFeatures.h"
14 #include "gettext.h"
15 #include "LString.h"
16 #include "lyx_gui_misc.h" // WarnReadonly
17  
18 extern BufferView * current_view;
19
20 FD_index_form * index_form = 0;
21
22 extern "C" void index_cb(FL_OBJECT *, long data)
23 {
24         InsetIndex * inset = static_cast<InsetIndex*>(index_form->index_form->u_vdata);
25         
26         switch (data) {
27         case 1: // OK
28                 if(!current_view->buffer()->isReadonly()) {
29                         string tmp = fl_get_input(index_form->key);
30                         if(tmp != inset->getContents()) {
31                                 inset->setContents(tmp);
32                                 fl_hide_form(index_form->index_form);
33                                 current_view->updateInset(inset, true);
34                                 break;
35                         }
36                 } // fall through to Cancel on RO
37         case 0: // Cancel
38                 fl_hide_form(index_form->index_form); break;
39         }
40 }
41
42
43 static
44 FD_index_form * create_form_index_form()
45 {
46         FL_OBJECT * obj;
47         FD_index_form *fdui = (FD_index_form *) fl_calloc(1, sizeof(FD_index_form));
48
49         fdui->index_form = fl_bgn_form(FL_NO_BOX, 258, 196);
50         obj = fl_add_box(FL_UP_BOX, 0, 0, 258, 196, "");
51         fdui->key = obj = fl_add_input(FL_NORMAL_INPUT, 93, 26, 130, 30,
52                                        idex(_("Keyword:|#K")));
53           fl_set_object_shortcut(obj, scex(_("Keyword:|#K")), 1);
54           fl_set_object_lsize(obj, FL_NORMAL_SIZE);
55         obj = fl_add_button(FL_RETURN_BUTTON, 50, 140, 80, 30, _("OK"));
56           obj->u_vdata = index_form;
57           fl_set_object_callback(obj, index_cb, 1);
58         obj = fl_add_button(FL_NORMAL_BUTTON, 150, 140, 80, 30,
59                             idex(_("Cancel|^[")));
60           fl_set_object_shortcut(obj, scex(_("Cancel|^[")), 1);
61           obj->u_vdata = index_form;
62           fl_set_object_callback(obj, index_cb, 0);
63         fl_end_form();
64
65         return fdui;
66 }
67
68
69
70 /*---------------------------------------*/
71
72
73 InsetIndex::InsetIndex(string const & key)
74         : InsetCommand("index", key) 
75 {
76 }
77
78
79 InsetIndex::~InsetIndex()
80 {
81         if(index_form && index_form->index_form
82            && index_form->index_form->visible
83            && index_form->index_form->u_vdata == this)
84                 fl_hide_form(index_form->index_form);
85 }
86
87
88 void InsetIndex::Edit(BufferView * bv, int, int, unsigned int)
89 {
90         if(bv->buffer()->isReadonly())
91                 WarnReadonly(bv->buffer()->fileName());
92
93         if (!index_form)
94                 index_form = create_form_index_form();
95         
96         index_form->index_form->u_vdata = this;
97         fl_set_input(index_form->key, getContents().c_str());
98         if (index_form->index_form->visible) {
99                 fl_raise_form(index_form->index_form);
100         } else {
101                 fl_show_form(index_form->index_form,
102                              FL_PLACE_MOUSE, FL_FULLBORDER,
103                              _("Index"));
104         }
105 }
106
107
108 string InsetIndex::getScreenLabel() const
109 {
110         return _("Idx");
111 }
112
113
114 //
115 // InsetPrintIndex
116 //
117
118 InsetPrintIndex::InsetPrintIndex()
119         : InsetCommand("printindex")
120 {
121         owner = 0;
122 }
123
124
125 InsetPrintIndex::InsetPrintIndex(Buffer * o)
126         : InsetCommand("printindex"), owner(o)
127 {
128 }
129
130
131 InsetPrintIndex::~InsetPrintIndex()
132 {
133 }
134
135
136 string InsetPrintIndex::getScreenLabel() const
137 {
138         return _("PrintIndex");
139 }
140
141
142 void InsetPrintIndex::Validate(LaTeXFeatures & features) const
143 {
144         features.makeidx = true;
145 }
146
147
148 Inset::Code InsetPrintIndex::LyxCode() const
149 {
150         return Inset::INDEX_CODE;
151 }