]> git.lyx.org Git - lyx.git/commitdiff
Replace Type combo, which was considered irritating, with a Type filter
authorJuergen Spitzmueller <spitz@lyx.org>
Thu, 21 Mar 2019 18:23:33 +0000 (19:23 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Thu, 21 Mar 2019 18:25:10 +0000 (19:25 +0100)
The new one allows to display only user or system files.

src/frontends/qt4/GuiLyXFiles.cpp
src/frontends/qt4/GuiLyXFiles.h
src/frontends/qt4/ui/LyXFilesUi.ui

index 7e99515e72619502c68c52b0906c3e9a0911de60..598bfc0d88c351e3806062f6f6cbab3b0eaa21e5 100644 (file)
@@ -39,8 +39,9 @@ namespace lyx {
 namespace frontend {
 
 
-void GuiLyXFiles::getFiles(QMap<QString, QString> & in, QString const type)
+QMap<QString, QString> GuiLyXFiles::getFiles()
 {
+       QMap<QString, QString> result;
        // We look for lyx files in the subdirectory dir of
        //   1) user_lyxdir
        //   2) build_lyxdir (if not empty)
@@ -52,16 +53,20 @@ void GuiLyXFiles::getFiles(QMap<QString, QString> & in, QString const type)
        QStringList relpaths;
 
        // The three locations to look at.
-       string const user = addPath(package().user_support().absFileName(), fromqstr(type));
-       string const build = addPath(package().build_support().absFileName(), fromqstr(type));
-       string const system = addPath(package().system_support().absFileName(), fromqstr(type));
+       string const user = addPath(package().user_support().absFileName(), fromqstr(type_));
+       string const build = addPath(package().build_support().absFileName(), fromqstr(type_));
+       string const system = addPath(package().system_support().absFileName(), fromqstr(type_));
 
        available_languages_.insert(toqstr("en"), qt_("English"));
 
-       // Search in the base path
-       dirs << toqstr(user)
-            << toqstr(build)
-            << toqstr(system);
+       QString const type = fileTypeCO->itemData(fileTypeCO->currentIndex()).toString();
+
+       // Search in the base paths
+       if (type == "all" || type == "user")
+               dirs << toqstr(user);
+       if (type == "all" || type == "system")
+               dirs << toqstr(build)
+                    << toqstr(system);
 
        for (int i = 0; i < dirs.size(); ++i) {
                QString const dir = dirs.at(i);
@@ -103,7 +108,7 @@ void GuiLyXFiles::getFiles(QMap<QString, QString> & in, QString const type)
                                if (localization != "en")
                                        // strip off lang/
                                        relpath = relpath.mid(relpath.indexOf('/') + 1);
-                               in.insert(relpath, cat);
+                               result.insert(relpath, cat);
                                                                        
                                QMap<QString, QString> lm;
                                if (localizations_.contains(relpath))
@@ -139,6 +144,7 @@ void GuiLyXFiles::getFiles(QMap<QString, QString> & in, QString const type)
        }
        setLanguage();
        languageLA->setText(qt_("Preferred &Language:"));
+       return result;
 }
 
 
@@ -210,6 +216,12 @@ GuiLyXFiles::GuiLyXFiles(GuiView & lv)
        //filesLW->setViewMode(QListView::ListMode);
        filesLW->setIconSize(QSize(22, 22));
 
+       QIcon user_icon(getPixmap("images/", "lyxfiles-user", "svgz,png"));
+       QIcon system_icon(getPixmap("images/", "lyxfiles-system", "svgz,png"));
+       fileTypeCO->addItem(qt_("User and System Files"), toqstr("all"));
+       fileTypeCO->addItem(user_icon, qt_("User Files Only"), toqstr("user"));
+       fileTypeCO->addItem(system_icon, qt_("System Files Only"), toqstr("system"));
+
        setFocusProxy(filter_);
 }
 
@@ -342,10 +354,8 @@ void GuiLyXFiles::on_browsePB_pressed()
 
 void GuiLyXFiles::updateContents()
 {
-       QString type = fileTypeCO->itemData(fileTypeCO->currentIndex()).toString();
-       QMap<QString, QString> files;
        languageCO->clear();
-       getFiles(files, type);
+       QMap<QString, QString> files = getFiles();
        languageCO->model()->sort(0);
 
        filesLW->clear();
@@ -494,20 +504,6 @@ bool GuiLyXFiles::initialiseParams(string const & type)
 
 void GuiLyXFiles::paramsToDialog()
 {
-       fileTypeCO->clear();
-       if (type_ == "examples" || type_ == "templates") {
-               fileTypeCO->addItem(qt_("Templates"), toqstr("templates"));
-               fileTypeCO->addItem(qt_("Examples"), toqstr("examples"));
-       } else if (type_ == "ui")
-               fileTypeCO->addItem(qt_("User Interface Files"), toqstr("ui"));
-       else if (type_ == "bind")
-               fileTypeCO->addItem(qt_("Key Binding Files"), toqstr("bind"));
-
-       if (!type_.isEmpty()) {
-               int i = fileTypeCO->findData(type_);
-               if (i != -1)
-                       fileTypeCO->setCurrentIndex(i);
-       }
        if (type_ == "examples")
                setTitle(qt_("Open Example File"));
        else if (type_ == "templates")
index 2ee22c888b2e40f288c6ee5c1f4a3784ca24a082..e4213353b8cb058e7f8e04620a7520e3825904d9 100644 (file)
@@ -69,7 +69,7 @@ private:
        ///
        bool translateName() const;
        ///
-       void getFiles(QMap<QString, QString> &, QString const);
+       QMap<QString, QString> getFiles();
        /// Get the full file path in the selected localization
        QString const getRealPath(QString relpath = QString());
        ///
index e90beb707266107c5b7cafa4fcb4bcde3f91228c..7807b4b28d3fb756634f98df39890a012ef6d318 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>381</width>
-    <height>474</height>
+    <width>284</width>
+    <height>479</height>
    </rect>
   </property>
   <property name="windowTitle">
   </property>
   <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
-    <layout class="QGridLayout" name="gridLayout">
-     <item row="0" column="0">
-      <widget class="QLabel" name="filesTypeLA">
-       <property name="text">
-        <string>&amp;Type:</string>
-       </property>
-       <property name="buddy">
-        <cstring>fileTypeCO</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="2">
-      <widget class="QComboBox" name="fileTypeCO">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0" colspan="2">
+    <widget class="QGroupBox" name="filterGB">
+     <property name="title">
+      <string>Filter</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QLabel" name="filesTypeLA">
+        <property name="text">
+         <string>&amp;Type:</string>
+        </property>
+        <property name="buddy">
+         <cstring>fileTypeCO</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QComboBox" name="fileTypeCO">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="toolTip">
+         <string>Determines whether only personal user files, system files or all files are displayed</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="findKeysLA">
+        <property name="text">
+         <string>&amp;Name:</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_3">
+          <item>
+           <layout class="QHBoxLayout" name="filterBarL"/>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="csFindCB">
+            <property name="toolTip">
+             <string>Filter case-sensitively</string>
+            </property>
+            <property name="text">
+             <string>Case Sensiti&amp;ve</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
       <widget class="QLabel" name="languageLA">
        <property name="toolTip">
         <string/>
        </property>
       </widget>
      </item>
-     <item row="1" column="2">
+     <item>
       <widget class="QComboBox" name="languageCO">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="toolTip">
         <string>The available language(s) of the selected file will be displayed here</string>
        </property>
       </widget>
      </item>
-     <item row="2" column="0">
-      <widget class="QLabel" name="findKeysLA">
-       <property name="text">
-        <string>&amp;Filter:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="1" colspan="2">
-      <layout class="QVBoxLayout" name="verticalLayout_2">
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_3">
-         <item>
-          <layout class="QHBoxLayout" name="filterBarL"/>
-         </item>
-         <item>
-          <widget class="QCheckBox" name="csFindCB">
-           <property name="toolTip">
-            <string>Filter case-sensitively</string>
-           </property>
-           <property name="text">
-            <string>Case Sensiti&amp;ve</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </item>
     </layout>
    </item>
-   <item row="1" column="0">
+   <item row="2" column="0">
     <widget class="QTreeWidget" name="filesLW">
      <property name="rootIsDecorated">
       <bool>true</bool>
      </column>
     </widget>
    </item>
-   <item row="2" column="0">
+   <item row="3" column="0">
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <spacer name="horizontalSpacer">
      </item>
     </layout>
    </item>
-   <item row="3" column="0">
+   <item row="4" column="0">
     <layout class="QHBoxLayout">
      <property name="spacing">
       <number>6</number>