]> git.lyx.org Git - lyx.git/commitdiff
GuiBibtex: add button to edit individual databases externally
authorJuergen Spitzmueller <spitz@lyx.org>
Sat, 30 Mar 2019 10:37:28 +0000 (11:37 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 30 Mar 2019 10:37:28 +0000 (11:37 +0100)
This complements the inset context menu function, which only allows for
editing all databases externally

src/frontends/qt4/GuiBibtex.cpp
src/frontends/qt4/GuiBibtex.h
src/frontends/qt4/ui/BibtexUi.ui
src/insets/InsetBibtex.cpp
src/insets/InsetBibtex.h

index a6aa95a703c2f01cc7ed7fcf58e9184fbd5fad07..d9c19051fbf66fc28bb429910bc5a2a0f83b0a74 100644 (file)
@@ -185,6 +185,7 @@ void GuiBibtex::setButtons()
 void GuiBibtex::selUpdated()
 {
        selectionManager->update();
+       editPB->setEnabled(deletePB->isEnabled());
        changed();
 }
 
@@ -240,6 +241,19 @@ void GuiBibtex::browseBibPressed()
 }
 
 
+void GuiBibtex::on_editPB_clicked()
+{
+       QModelIndexList selIdx =
+               selectedLV->selectionModel()->selectedIndexes();
+       if (selIdx.isEmpty())
+               return;
+       QModelIndex idx = selIdx.first();
+       QString sel = idx.data().toString();
+       FuncRequest fr(LFUN_INSET_EDIT, fromqstr(sel));
+       dispatch(fr);
+}
+
+
 void GuiBibtex::rescanClicked()
 {
        rescanBibStyles();
@@ -297,6 +311,7 @@ void GuiBibtex::setSelectedBibs(QStringList const sl)
                                   "encoding than specified below, set it here"));
                selectedLV->setIndexWidget(selected_model_.index(i, 1), cb);
        }
+       editPB->setEnabled(deletePB->isEnabled());
 }
 
 
@@ -392,6 +407,7 @@ void GuiBibtex::updateContents()
                biblatexOptsLE->setText(toqstr(params_["biblatexopts"]));
 
        setFileEncodings(getVectorFromString(params_["file_encodings"], from_ascii("\t")));
+       editPB->setEnabled(deletePB->isEnabled());
 }
 
 
@@ -399,8 +415,8 @@ void GuiBibtex::applyView()
 {
        docstring dbs;
 
-       unsigned int maxCount = selected_bibs_.count();
-       for (unsigned int i = 0; i < maxCount; i++) {
+       int maxCount = selected_bibs_.count();
+       for (int i = 0; i < maxCount; i++) {
                if (i != 0)
                        dbs += ',';
                QString item = selected_bibs_.at(i);
index 9cbd0d61a481032dd4e065e06d95f766192c877a..997902e4ab9954a65e0ae96e92ec8d720838ad52 100644 (file)
@@ -39,6 +39,7 @@ private Q_SLOTS:
        void on_buttonBox_accepted();
        void browseBstPressed();
        void browseBibPressed();
+       void on_editPB_clicked();
        void databaseChanged();
        void rescanClicked();
        void selUpdated();
index b66bffde24c0ebe36422932c226d87998eab5ccd..1439e1864e382e62e5a20e99f8fbcdfb560d0b53 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>523</width>
-    <height>576</height>
+    <height>617</height>
    </rect>
   </property>
   <property name="windowTitle">
           </property>
          </widget>
         </item>
+        <item>
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QPushButton" name="editPB">
+          <property name="toolTip">
+           <string>Edit selected database externally</string>
+          </property>
+          <property name="text">
+           <string>&amp;Edit...</string>
+          </property>
+          <property name="icon">
+           <iconset>
+            <normaloff>.</normaloff>.</iconset>
+          </property>
+         </widget>
+        </item>
         <item>
          <spacer name="verticalSpacer">
           <property name="orientation">
index 0b879e1c50f03890220495211717538265356293..a8965566fb44b811a009d06de289296a55927580 100644 (file)
@@ -85,7 +85,7 @@ void InsetBibtex::doDispatch(Cursor & cur, FuncRequest & cmd)
        switch (cmd.action()) {
 
        case LFUN_INSET_EDIT:
-               editDatabases();
+               editDatabases(cmd.argument());
                break;
 
        case LFUN_INSET_MODIFY: {
@@ -132,7 +132,7 @@ bool InsetBibtex::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
-void InsetBibtex::editDatabases() const
+void InsetBibtex::editDatabases(docstring const db) const
 {
        vector<docstring> bibfilelist = getVectorFromString(getParam("bibfiles"));
 
@@ -140,7 +140,7 @@ void InsetBibtex::editDatabases() const
                return;
 
        size_t nr_databases = bibfilelist.size();
-       if (nr_databases > 1) {
+       if (nr_databases > 1 && db.empty()) {
                        docstring const engine = usingBiblatex() ? _("Biblatex") : _("BibTeX");
                        docstring message = bformat(_("The %1$s[[BibTeX/Biblatex]] inset includes %2$s databases.\n"
                                                       "If you proceed, all of them will be opened."),
@@ -155,6 +155,8 @@ void InsetBibtex::editDatabases() const
        vector<docstring>::const_iterator it = bibfilelist.begin();
        vector<docstring>::const_iterator en = bibfilelist.end();
        for (; it != en; ++it) {
+               if (!db.empty() && db != *it)
+                       continue;
                FileName const bibfile = buffer().getBibfilePath(*it);
                theFormats().edit(buffer(), bibfile,
                     theFormats().getFormatFromFile(bibfile));
index 4f38d840704055a4e19c391aaeb6d94febbb8773..e6345b856662515c704ac7171d836ac7222a462e 100644 (file)
@@ -82,7 +82,7 @@ public:
 
 private:
        ///
-       void editDatabases() const;
+       void editDatabases(docstring const db = docstring()) const;
        ///
        void parseBibTeXFiles(support::FileNameList &) const;
        ///