This commit was manufactured by cvs2svn to create tag
[lyx.git] / src / insets / insetindex.C
bloba46d471e2d7cea918e3fd7b2fdec249f7d2cc508
1 #include <config.h>
3 #include <cstdlib>
5 #ifdef __GNUG__
6 #pragma implementation
7 #endif
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()
18 extern BufferView * current_view;
19 extern void UpdateInset(Inset * inset, bool mark_dirty = true);
21 FD_index_form * index_form = 0;
23 extern "C" void index_cb(FL_OBJECT *, long data)
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         }
44 static
45 FD_index_form * create_form_index_form()
47         FL_OBJECT * obj;
48         FD_index_form *fdui = (FD_index_form *) fl_calloc(1, sizeof(FD_index_form));
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();
66         return fdui;
71 /*---------------------------------------*/
74 InsetIndex::InsetIndex(string const & key)
75         : InsetCommand("index", key) 
80 InsetIndex::~InsetIndex()
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);
89 void InsetIndex::Edit(int, int)
91         if(current_view->currentBuffer()->isReadonly())
92                 WarnReadonly();
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         }
109 string InsetIndex::getScreenLabel() const
111         return _("Idx");
116 // InsetPrintIndex
119 InsetPrintIndex::InsetPrintIndex()
120         : InsetCommand("printindex")
122         owner = 0;
126 InsetPrintIndex::InsetPrintIndex(Buffer * o)
127         : InsetCommand("printindex"), owner(o)
132 InsetPrintIndex::~InsetPrintIndex()
137 string InsetPrintIndex::getScreenLabel() const
139         return _("PrintIndex");
143 void InsetPrintIndex::Validate(LaTeXFeatures & features) const
145         features.makeidx = true;
149 Inset::Code InsetPrintIndex::LyxCode() const
151         return Inset::INDEX_CODE;