]> git.lyx.org Git - features.git/blobdiff - src/insets/insetindex.C
read the Changelog
[features.git] / src / insets / insetindex.C
index a4868a40692b0a6bc8487d4d3556dfed8da449bd..c009b38848e6c891fa41c3989606f3e39823f7a6 100644 (file)
 #include "LaTeXFeatures.h"
 #include "gettext.h"
 #include "LString.h"
-#include "lyx_gui_misc.h" // WarnReadonly()
+#include "lyx_gui_misc.h" // WarnReadonly
  
-extern BufferView * current_view;
-extern void UpdateInset(Inset * inset, bool mark_dirty = true);
-
 FD_index_form * index_form = 0;
 
-extern "C" void index_cb(FL_OBJECT *, long data)
+extern "C"
+void index_cb(FL_OBJECT *, long data)
 {
-       InsetIndex * inset = static_cast<InsetIndex*>(index_form->index_form->u_vdata);
-       
-       switch (data) {
-       case 1: // OK
-               if(!current_view->buffer()->isReadonly()) {
-                       string tmp = fl_get_input(index_form->key);
-                       if(tmp != inset->getContents()) {
-                               inset->setContents(tmp);
-                               fl_hide_form(index_form->index_form);
-                               UpdateInset(inset);
-                               break;
-                       }
-               } // fall through to Cancel on RO
-       case 0: // Cancel
-               fl_hide_form(index_form->index_form); break;
-       }
-}
+       InsetIndex::Holder * holder =
+               static_cast<InsetIndex::Holder*>
+               (index_form->index_form->u_vdata);
 
+       holder->inset->callback( index_form, data );
+}
+       
 
 static
 FD_index_form * create_form_index_form()
@@ -48,19 +35,19 @@ FD_index_form * create_form_index_form()
        FD_index_form *fdui = (FD_index_form *) fl_calloc(1, sizeof(FD_index_form));
 
        fdui->index_form = fl_bgn_form(FL_NO_BOX, 258, 196);
-       obj = fl_add_box(FL_UP_BOX,0,0,258,196,"");
-       fdui->key = obj = fl_add_input(FL_NORMAL_INPUT,93,26,130,30,
+       obj = fl_add_box(FL_UP_BOX, 0, 0, 258, 196, "");
+       fdui->key = obj = fl_add_input(FL_NORMAL_INPUT, 93, 26, 130, 30,
                                       idex(_("Keyword:|#K")));
-         fl_set_object_shortcut(obj,scex(_("Keyword:|#K")),1);
-         fl_set_object_lsize(obj,FL_NORMAL_SIZE);
-       obj = fl_add_button(FL_RETURN_BUTTON,50,140,80,30,_("OK"));
+         fl_set_object_shortcut(obj, scex(_("Keyword:|#K")), 1);
+         fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+       obj = fl_add_button(FL_RETURN_BUTTON, 50, 140, 80, 30, _("OK"));
          obj->u_vdata = index_form;
-         fl_set_object_callback(obj,index_cb,1);
-       obj = fl_add_button(FL_NORMAL_BUTTON,150,140,80,30,
+         fl_set_object_callback(obj, index_cb, 1);
+       obj = fl_add_button(FL_NORMAL_BUTTON, 150, 140, 80, 30,
                            idex(_("Cancel|^[")));
-         fl_set_object_shortcut(obj,scex(_("Cancel|^[")),1);
+         fl_set_object_shortcut(obj, scex(_("Cancel|^[")), 1);
          obj->u_vdata = index_form;
-         fl_set_object_callback(obj,index_cb,0);
+         fl_set_object_callback(obj, index_cb, 0);
        fl_end_form();
 
        return fdui;
@@ -73,28 +60,54 @@ FD_index_form * create_form_index_form()
 
 InsetIndex::InsetIndex(string const & key)
        : InsetCommand("index", key) 
-{
-}
+{}
 
 
 InsetIndex::~InsetIndex()
 {
        if(index_form && index_form->index_form
           && index_form->index_form->visible
-          && index_form->index_form->u_vdata == this)
+          && index_form->index_form->u_vdata == &holder)
                fl_hide_form(index_form->index_form);
 }
 
 
-void InsetIndex::Edit(int, int)
+void InsetIndex::callback( FD_index_form * form, long data )
 {
-       if(current_view->buffer()->isReadonly())
-               WarnReadonly();
+       switch (data)
+       {
+       case 1: // OK
+               if(!holder.view->buffer()->isReadonly())
+               {
+                       string tmp = fl_get_input(form->key);
+                       if(tmp != getContents())
+                       {
+                               setContents(tmp);
+                               holder.view->updateInset( this, true );
+                       }
+               } // fall through to Cancel
+       case 0:
+               fl_hide_form(form->index_form);
+               break;
+       }
+}
+
 
-       if (!index_form)
+void InsetIndex::Edit(BufferView * bv, int, int, unsigned int)
+{
+       if(bv->buffer()->isReadonly())
+               WarnReadonly(bv->buffer()->fileName());
+
+       if (!index_form) {
                index_form = create_form_index_form();
+               fl_set_form_atclose(index_form->index_form,
+                                   CancelCloseBoxCB, 0);
+       }
+
+       holder.inset = this;
+       holder.view = bv;
        
-       index_form->index_form->u_vdata = this;
+       index_form->index_form->u_vdata =  &holder;
        fl_set_input(index_form->key, getContents().c_str());
        if (index_form->index_form->visible) {
                fl_raise_form(index_form->index_form);
@@ -116,22 +129,25 @@ string InsetIndex::getScreenLabel() const
 // InsetPrintIndex
 //
 
+#if 0
 InsetPrintIndex::InsetPrintIndex()
        : InsetCommand("printindex")
 {
        owner = 0;
 }
+#endif
 
 
 InsetPrintIndex::InsetPrintIndex(Buffer * o)
        : InsetCommand("printindex"), owner(o)
-{
-}
+{}
 
 
+#if 0
 InsetPrintIndex::~InsetPrintIndex()
 {
 }
+#endif
 
 
 string InsetPrintIndex::getScreenLabel() const