Richard Heck wrote:
> The parts of this that touch the Graph class make me uncomfortable. The 
> Graph class should be just that: a representation of a Graph, with 
> methods for searching it, etc. I would much prefer that we leave 
> Graph::getReachable() alone, and do whatever filtering we need to do 
> where we need to do it (in this case, in Converters::getReachable(), I 
> would suppose).

Please take this instead.

We could also merge the uiflags into the flags, but I feel that the two should 
be separated internally.

Jürgen
Index: src/Format.h
===================================================================
--- src/Format.h	(Revision 37596)
+++ src/Format.h	(Arbeitskopie)
@@ -35,10 +35,16 @@
 		/// Set if this format can contain vector graphics.
 		vector = 2
 	};
+	/// UI behaviour
+	enum UiFlags {
+		no_flag = 0,
+		/// This format should  appear in the File > Export menu
+		export_menu = 1
+	};
 	///
 	Format(std::string const & n, std::string const & e, std::string const & p,
 	       std::string const & s, std::string const & v, std::string const & ed,
-	       int);
+	       int, int);
 	///
 	bool dummy() const;
 	/// Tell whether this format is a child format.
@@ -76,6 +82,10 @@
 	bool vectorFormat() const { return flags_ & vector; }
 	///
 	void setFlags(int v) { flags_ = v; }
+	///
+	bool inExportMenu() const { return uiflags_ & export_menu; }
+	///
+	void setUiFlags(int v) { uiflags_ = v; }
 private:
 	/// Internal name. Needs to be unique.
 	std::string name_;
@@ -97,6 +107,8 @@
 	std::string editor_;
 	///
 	int flags_;
+	///
+	int uiflags_;
 };
 
 
@@ -134,7 +146,7 @@
 	void add(std::string const & name, std::string const & extension,
 		 std::string const & prettyname, std::string const & shortcut,
 		 std::string const & viewer, std::string const & editor,
-		 int flags);
+		 int flags, int ui_flags);
 	///
 	void erase(std::string const & name);
 	///
Index: src/frontends/qt4/GuiPrefs.cpp
===================================================================
--- src/frontends/qt4/GuiPrefs.cpp	(Revision 37596)
+++ src/frontends/qt4/GuiPrefs.cpp	(Arbeitskopie)
@@ -1927,6 +1927,8 @@
 		toqstr(l10n_shortcut(f.prettyname(), f.shortcut())));
 	documentCB->setChecked((f.documentFormat()));
 	vectorCB->setChecked((f.vectorFormat()));
+	exportMenuCB->setChecked((f.inExportMenu()));
+	exportMenuCB->setEnabled((f.documentFormat()));
 	updateViewers();
 	updateEditors();
 }
@@ -1940,6 +1942,7 @@
 	if (vectorCB->isChecked())
 		flags |= Format::vector;
 	currentFormat().setFlags(flags);
+	exportMenuCB->setEnabled(documentCB->isChecked());
 	changed();
 }
 
@@ -2021,6 +2024,16 @@
 }
 
 
+void PrefFileformats::on_exportMenuCB_stateChanged(int state)
+{
+	if (state == Qt::Checked)
+		currentFormat().setUiFlags(Format::export_menu);
+	else
+		currentFormat().setUiFlags(Format::no_flag);
+	changed();
+}
+
+
 void PrefFileformats::updatePrettyname()
 {
 	QString const newname = formatsCB->currentText();
@@ -2129,7 +2142,7 @@
 
 void PrefFileformats::on_formatNewPB_clicked()
 {
-	form_->formats().add("", "", "", "", "", "", Format::none);
+	form_->formats().add("", "", "", "", "", "", Format::none, Format::no_flag);
 	updateView();
 	formatsCB->setCurrentIndex(0);
 	formatsCB->setFocus(Qt::OtherFocusReason);
Index: src/frontends/qt4/ui/PrefFileformatsUi.ui
===================================================================
--- src/frontends/qt4/ui/PrefFileformatsUi.ui	(Revision 37596)
+++ src/frontends/qt4/ui/PrefFileformatsUi.ui	(Arbeitskopie)
@@ -23,7 +23,7 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="2">
+   <item row="0" column="1">
     <widget class="QComboBox" name="formatsCB">
      <property name="editable">
       <bool>true</bool>
@@ -159,7 +159,17 @@
    <item row="8" column="1" colspan="2">
     <widget class="QLineEdit" name="copierED"/>
    </item>
-   <item row="9" column="0" colspan="5">
+   <item row="9" column="0" colspan="3">
+    <widget class="QCheckBox" name="exportMenuCB">
+     <property name="toolTip">
+      <string>Check this to  ahow the current format in the File &gt; Export menu</string>
+     </property>
+     <property name="text">
+      <string>Sho&amp;w in export menu</string>
+     </property>
+    </widget>
+   </item>
+   <item row="10" column="0" colspan="5">
     <widget class="QGroupBox" name="defaultFormatGB">
      <property name="toolTip">
       <string>Specify the default output format when using (PDF)LaTeX</string>
@@ -200,7 +210,7 @@
      </layout>
     </widget>
    </item>
-   <item row="10" column="1" colspan="2">
+   <item row="11" column="1" colspan="3">
     <spacer>
      <property name="orientation">
       <enum>Qt::Vertical</enum>
Index: src/frontends/qt4/Menus.cpp
===================================================================
--- src/frontends/qt4/Menus.cpp	(Revision 37596)
+++ src/frontends/qt4/Menus.cpp	(Arbeitskopie)
@@ -1055,7 +1055,7 @@
 				continue;
 			}
 		case MenuItem::ExportFormats:
-			if (!(*fit)->documentFormat())
+			if (!(*fit)->inExportMenu())
 				continue;
 			break;
 		default:
Index: src/frontends/qt4/GuiPrefs.h
===================================================================
--- src/frontends/qt4/GuiPrefs.h	(Revision 37596)
+++ src/frontends/qt4/GuiPrefs.h	(Arbeitskopie)
@@ -373,6 +373,7 @@
 	void on_viewerCO_currentIndexChanged(int i);
 	void on_editorCO_currentIndexChanged(int i);
 	void setFlags();
+	void on_exportMenuCB_stateChanged(int);
 	void updatePrettyname();
 
 private:
Index: src/Format.cpp
===================================================================
--- src/Format.cpp	(Revision 37596)
+++ src/Format.cpp	(Arbeitskopie)
@@ -87,9 +87,9 @@
 
 Format::Format(string const & n, string const & e, string const & p,
 	       string const & s, string const & v, string const & ed,
-	       int flags)
+	       int flags, int ui_flags)
 	: name_(n), extension_(e), prettyname_(p), shortcut_(s), viewer_(v),
-	  editor_(ed), flags_(flags)
+	  editor_(ed), flags_(flags), uiflags_(ui_flags)
 {}
 
 
@@ -201,24 +201,24 @@
 {
 	if (!getFormat(name))
 		add(name, name, name, string(), string(), string(),
-		    Format::document);
+		    Format::document, Format::no_flag);
 }
 
 
 void Formats::add(string const & name, string const & extension,
 		  string const & prettyname, string const & shortcut,
 		  string const & viewer, string const & editor,
-		  int flags)
+		  int flags, int ui_flags)
 {
 	FormatList::iterator it =
 		find_if(formatlist.begin(), formatlist.end(),
 			FormatNamesEqual(name));
 	if (it == formatlist.end())
 		formatlist.push_back(Format(name, extension, prettyname,
-					    shortcut, viewer, editor, flags));
+					    shortcut, viewer, editor, flags, ui_flags));
 	else
 		*it = Format(name, extension, prettyname, shortcut, viewer,
-			     editor, flags);
+			     editor, flags, ui_flags);
 }
 
 
Index: src/LyXRC.cpp
===================================================================
--- src/LyXRC.cpp	(Revision 37596)
+++ src/LyXRC.cpp	(Arbeitskopie)
@@ -1083,6 +1083,7 @@
 				}
 			}
 			int flgs = Format::none;
+			int uiflgs = Format::no_flag;
 			while (!flags.empty()) {
 				string flag;
 				flags = split(flags, flag, ',');
@@ -1090,6 +1091,8 @@
 					flgs |= Format::document;
 				else if (flag == "vector")
 					flgs |= Format::vector;
+				else if (flag == "menu=export")
+					uiflgs = Format::export_menu;
 				else
 					LYXERR0("Ignoring unknown flag `"
 					       << flag << "' for format `"
@@ -1102,7 +1105,7 @@
 					formats.erase(format);
 			} else {
 				formats.add(format, extension, prettyname,
-					    shortcut, viewer, editor, flgs);
+					    shortcut, viewer, editor, flgs, uiflgs);
 			}
 			break;
 		}
Index: lib/configure.py
===================================================================
--- lib/configure.py	(Revision 37596)
+++ lib/configure.py	(Arbeitskopie)
@@ -498,19 +498,19 @@
 \Format asciiimage asc    "Plain text (image)"         "" ""	"%%"	""
 \Format asciixfig  asc    "Plain text (Xfig output)"   "" ""	"%%"	""
 \Format dateout    tmp    "date (output)"         "" ""	"%%"	""
-\Format docbook    sgml    DocBook                B  ""	"%%"	"document"
-\Format docbook-xml xml   "Docbook (XML)"         "" ""	"%%"	"document"
+\Format docbook    sgml    DocBook                B  ""	"%%"	"document,menu=export"
+\Format docbook-xml xml   "Docbook (XML)"         "" ""	"%%"	"document,menu=export"
 \Format dot        dot    "Graphviz Dot"          "" ""	"%%"	"vector"
-\Format platex     tex    "LaTeX (pLaTeX)"        "" "" "%%"    "document"
-\Format literate   nw      NoWeb                  N  ""	"%%"	"document"
-\Format sweave     Rnw    "Sweave"                S  "" "%%"    "document"
+\Format platex     tex    "LaTeX (pLaTeX)"        "" "" "%%"    "document,menu=export"
+\Format literate   nw      NoWeb                  N  ""	"%%"	"document,menu=export"
+\Format sweave     Rnw    "Sweave"                S  "" "%%"    "document,menu=export"
 \Format lilypond   ly     "LilyPond music"        "" ""	"%%"	"vector"
 \Format lilypond-book    lytex "LilyPond book (LaTeX)"   "" ""	"%%"	"document"
-\Format latex      tex    "LaTeX (plain)"         L  ""	"%%"	"document"
-\Format luatex     tex    "LaTeX (LuaTeX)"        "" ""	"%%"	"document"
-\Format pdflatex   tex    "LaTeX (pdflatex)"      "" ""	"%%"	"document"
-\Format xetex      tex    "LaTeX (XeTeX)"         "" ""	"%%"	"document"
-\Format text       txt    "Plain text"            a  ""	"%%"	"document"
+\Format latex      tex    "LaTeX (plain)"         L  ""	"%%"	"document,menu=export"
+\Format luatex     tex    "LaTeX (LuaTeX)"        "" ""	"%%"	"document,menu=export"
+\Format pdflatex   tex    "LaTeX (pdflatex)"      "" ""	"%%"	"document,menu=export"
+\Format xetex      tex    "LaTeX (XeTeX)"         "" ""	"%%"	"document,menu=export"
+\Format text       txt    "Plain text"            a  ""	"%%"	"document,menu=export"
 \Format text2      txt    "Plain text (pstotext)" "" ""	"%%"	"document"
 \Format text3      txt    "Plain text (ps2ascii)" "" ""	"%%"	"document"
 \Format text4      txt    "Plain text (catdvi)"   "" ""	"%%"	"document"
@@ -522,9 +522,9 @@
 \Format oocalc     ods    "OpenOffice spreadsheet" "" "" "%%"    "document"''']) 
  #
     path, xhtmlview = checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
-        rc_entry = [r'\Format xhtml      xhtml   "LyXHTML"              y "%%" ""    "document"'])
+        rc_entry = [r'\Format xhtml      xhtml   "LyXHTML"              y "%%" ""    "document,menu=export"'])
     if xhtmlview == "":
-        addToRC(r'\Format xhtml      xhtml   "LyXHTML"              y "" ""  "document"')
+        addToRC(r'\Format xhtml      xhtml   "LyXHTML"              y "" ""  "document,menu=export"')
  #
     checkEditor('a BibTeX editor', ['sensible-editor', 'jabref', 'JabRef', \
         'pybliographic', 'bibdesk', 'gbib', 'kbib', \
@@ -541,32 +541,32 @@
     # for xdg-open issues look here: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg151818.html
     checkViewer('a PDF previewer', ['kpdf', 'okular', 'evince', 'kghostview', 'xpdf', 'acrobat', 'acroread', \
 		    'gv', 'ghostview'],
-        rc_entry = [r'''\Format pdf        pdf    "PDF (ps2pdf)"          P  "%%"	""	"document,vector"
-\Format pdf2       pdf    "PDF (pdflatex)"        F  "%%"	""	"document,vector"
-\Format pdf3       pdf    "PDF (dvipdfm)"         m  "%%"	""	"document,vector"
-\Format pdf4       pdf    "PDF (XeTeX)"           X  "%%"	""	"document,vector"
-\Format pdf5       pdf    "PDF (LuaTeX)"          u  "%%"	""	"document,vector"'''])
+        rc_entry = [r'''\Format pdf        pdf    "PDF (ps2pdf)"          P  "%%"	""	"document,vector,menu=export"
+\Format pdf2       pdf    "PDF (pdflatex)"        F  "%%"	""	"document,vector,menu=export"
+\Format pdf3       pdf    "PDF (dvipdfm)"         m  "%%"	""	"document,vector,menu=export"
+\Format pdf4       pdf    "PDF (XeTeX)"           X  "%%"	""	"document,vector,menu=export"
+\Format pdf5       pdf    "PDF (LuaTeX)"          u  "%%"	""	"document,vector,menu=export"'''])
     #
     checkViewer('a DVI previewer', ['xdvi', 'kdvi', 'okular', 'yap', 'dviout -Set=!m'],
-        rc_entry = [r'''\Format dvi        dvi     DVI                    D  "%%"	""	"document,vector"
-\Format dvi3       dvi     "DVI (LuaTeX)"          V  "%%"	""	"document,vector"'''])
+        rc_entry = [r'''\Format dvi        dvi     DVI                    D  "%%"	""	"document,vector,menu=export"
+\Format dvi3       dvi     "DVI (LuaTeX)"          V  "%%"	""	"document,vector,menu=export"'''])
     if dtl_tools:
         # Windows only: DraftDVI
         addToRC(r'\Format dvi2       dvi     DraftDVI               ""	""	""	"vector"')
     #
     checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
-        rc_entry = [r'\Format html       html    HTML                   H  "%%"	""	"document"'])
+        rc_entry = [r'\Format html       html    HTML                   H  "%%"	""	"document,menu=export"'])
     #
     checkViewerEditor('Noteedit', ['noteedit'],
         rc_entry = [r'\Format noteedit   not     Noteedit               "" "%%"	"%%"	"vector"'])
     #
     checkViewerEditor('an OpenDocument/OpenOffice viewer', ['swriter', 'oowriter', 'abiword'],
-        rc_entry = [r'''\Format odt        odt     OpenDocument           "" "%%"	"%%"	"document,vector"
+        rc_entry = [r'''\Format odt        odt     OpenDocument           "" "%%"	"%%"	"document,vector,menu=export"
 \Format sxw        sxw    "OpenOffice.Org (sxw)"  "" ""	""	"document,vector"'''])
     # 
     checkViewerEditor('a Rich Text and Word viewer', ['swriter', 'oowriter', 'abiword'],
-        rc_entry = [r'''\Format rtf        rtf    "Rich Text Format"      "" "%%"	"%%"	"document,vector"
-\Format word       doc    "MS Word"               W  "%%"	"%%"	"document,vector"'''])
+        rc_entry = [r'''\Format rtf        rtf    "Rich Text Format"      "" "%%"	"%%"	"document,vector,menu=export"
+\Format word       doc    "MS Word"               W  "%%"	"%%"	"document,vector,menu=export"'''])
     #
     # entries that do not need checkProg
     addToRC(r'''\Format date       ""     "date command"          "" ""	""	""
@@ -576,7 +576,7 @@
 \Format lyx13x     13.lyx  "LyX 1.3.x"             "" ""	""	"document"
 \Format lyx14x     14.lyx  "LyX 1.4.x"             "" ""	""	"document"
 \Format lyx15x     15.lyx  "LyX 1.5.x"             "" ""	""	"document"
-\Format lyx16x     16.lyx  "LyX 1.6.x"             "" ""	""	"document"
+\Format lyx16x     16.lyx  "LyX 1.6.x"             "" ""	""	"document,menu=export"
 \Format clyx       cjklyx "CJK LyX 1.4.x (big5)"  "" ""	""	"document"
 \Format jlyx       cjklyx "CJK LyX 1.4.x (euc-jp)" "" ""	""	"document"
 \Format klyx       cjklyx "CJK LyX 1.4.x (euc-kr)" "" ""	""	"document"
@@ -873,10 +873,10 @@
     # So, we configure the appropriate version according to the platform.
     cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$i" ""'
     if os.name == 'nt':
-        addToRC(r'\Format lyxzip     zip    "LyX Archive (zip)"     "" "" ""  "document"')
+        addToRC(r'\Format lyxzip     zip    "LyX Archive (zip)"     "" "" ""  "document,menu=export"')
         addToRC(cmd % "lyxzip")
     else:
-        addToRC(r'\Format lyxgz      gz     "LyX Archive (tar.gz)"  "" "" ""  "document"')
+        addToRC(r'\Format lyxgz      gz     "LyX Archive (tar.gz)"  "" "" ""  "document,menu=export"')
         addToRC(cmd % "lyxgz")
         
     #
Index: lib/ui/stdmenus.inc
===================================================================
--- lib/ui/stdmenus.inc	(Revision 37596)
+++ lib/ui/stdmenus.inc	(Arbeitskopie)
@@ -88,7 +88,7 @@
 
 	Menu "file_export"
 		ExportFormats
-		Item "Custom...|C" "buffer-export custom"
+		Item "More Formats & Options...|M" "buffer-export custom"
 	End
 
 #

Reply via email to