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 > Export menu</string> + </property> + <property name="text"> + <string>Sho&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 #