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