From da61af2b8ef95ab206d02deb9c52f03335682d9e Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Tue, 13 Apr 2004 10:36:09 +0000 Subject: [PATCH] Georg's add an editor to Formats / safe external_templates patch. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8645 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/ChangeLog | 6 + lib/configure.m4 | 179 +- lib/external_templates | 5 - src/ChangeLog | 5 + src/LyXAction.C | 1 + src/format.C | 69 +- src/format.h | 14 +- src/frontends/controllers/ChangeLog | 4 + src/frontends/controllers/ControlGraphics.C | 10 + src/frontends/controllers/ControlGraphics.h | 2 + src/frontends/qt2/ChangeLog | 7 + src/frontends/qt2/QGraphics.C | 6 + src/frontends/qt2/QGraphics.h | 2 + src/frontends/qt2/QGraphicsDialog.C | 8 + src/frontends/qt2/QGraphicsDialog.h | 1 + src/frontends/qt2/QPrefsDialog.C | 5 +- src/frontends/qt2/ui/QGraphicsDialogBase.ui | 2336 +++++++++-------- .../qt2/ui/QPrefFileformatsModule.ui | 23 + src/frontends/xforms/ChangeLog | 4 + src/frontends/xforms/FormGraphics.C | 10 +- src/frontends/xforms/FormPreferences.C | 13 +- src/frontends/xforms/forms/form_graphics.fd | 78 +- .../xforms/forms/form_preferences.fd | 28 +- src/insets/ChangeLog | 8 + src/insets/ExternalSupport.C | 21 +- src/insets/ExternalTemplate.C | 8 - src/insets/ExternalTemplate.h | 2 - src/insets/insetgraphics.C | 15 + src/insets/insetgraphics.h | 2 + src/lfuns.h | 1 + src/lyxfunc.C | 7 + src/lyxrc.C | 51 +- 32 files changed, 1600 insertions(+), 1331 deletions(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index 76c0874259..fc4080f14a 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,9 @@ +2004-04-12 Georg Baum + + * configure.m4: merge \viewer and \format. Add editor to \format + * configure.m4: check for more viewers and editors + * external_templates: remove EditCommand + 2004-04-06 Georg Baum * external_templates: use some new variables instead of $$Basename diff --git a/lib/configure.m4 b/lib/configure.m4 index f78a236433..29621133d9 100644 --- a/lib/configure.m4 +++ b/lib/configure.m4 @@ -237,6 +237,20 @@ fi test $latex_to_dvi != "none" && latex_to_dvi="$latex_to_dvi \$\$i" test $latex_to_pdf != "none" && latex_to_pdf="$latex_to_pdf \$\$i" +SEARCH_PROG([for a TGIF viewer and editor], TGIF_EDITOR, tgif) +TGIF_VIEWER="$TGIF_EDITOR" + +SEARCH_PROG([for a FIG viewer and editor], FIG_EDITOR, xfig) +FIG_VIEWER="$FIG_EDITOR" + +SEARCH_PROG([for a FEN viewer and editor], FEN_EDITOR, xboard) +test "$FEN" = "xboard" && FEN_EDITOR="xboard -lpf \$\$i -mode EditPosition" +FEN_VIEWER="$FEN_EDITOR" + +SEARCH_PROG([for a raster image viewer], RASTERIMAGE_VIEWER, xv kview gimp) + +SEARCH_PROG([for a raster image editor], RASTERIMAGE_EDITOR, gimp) + # Search for an installed reLyX or a ready-to-install one save_PATH=${PATH} PATH=${PATH}:./reLyX/ @@ -492,113 +506,102 @@ cat >$outfile < \$\$o" "" -\\converter docbook dvi "$docbook_to_dvi_command" "" -\\converter docbook html "$docbook_to_html_command" "" -\\converter dvi pdf3 "$dvi_to_pdf_command" "" -\\converter dvi ps "$dvi_to_ps_command" "" -\\converter fen asciichess "python \$\$s/fen2ascii.py \$\$i \$\$o" "" -\\converter fig pdftex "sh \$\$s/fig2pdftex.sh \$\$i \$\$o" "" -\\converter fig pstex "sh \$\$s/fig2pstex.sh \$\$i \$\$o" "" -\\converter html latex "$html_to_latex_command" "" -\\converter latex html "$latex_to_html_command" "originaldir,needaux" -\\converter latex dvi "$latex_to_dvi" "latex" -\\converter latex lyx "$tex_to_lyx_command" "" -\\converter latex pdf2 "$latex_to_pdf" "latex" -\\converter linuxdoc dvi "$linuxdoc_to_dvi_command" "" -\\converter linuxdoc html "$linuxdoc_to_html_command" "" -\\converter linuxdoc latex "$linuxdoc_to_latex_command" "" -\\converter linuxdoc lyx "$linuxdoc_to_lyx_command" "" -\\converter literate latex "$literate_to_tex_command" "" -\\converter literate lyx "$literate_to_lyx_command" "" -\\converter lyxpreview ppm "$lyxpreview_to_bitmap_command" "" -\\converter ps fax "$fax_command" "" -\\converter ps pdf "$ps_to_pdf_command" "" -\\converter word latex "$word_to_latex_command" "" - -\\viewer dvi "$DVI_VIEWER" -\\viewer html "$HTML_VIEWER" -\\viewer pdf "$PDF_VIEWER" -\\viewer pdf2 "$PDF_VIEWER" -\\viewer pdf3 "$PDF_VIEWER" -\\viewer ps "$PS_VIEWER" -\\viewer eps "$EPS_VIEWER" - -$rc_entries -\\font_encoding "$chk_fontenc" +\\converter date dateout "date +%d-%m-%Y > \$\$o" "" +\\converter docbook dvi "$docbook_to_dvi_command" "" +\\converter docbook html "$docbook_to_html_command" "" +\\converter dvi pdf3 "$dvi_to_pdf_command" "" +\\converter dvi ps "$dvi_to_ps_command" "" +\\converter fen asciichess "python \$\$s/fen2ascii.py \$\$i \$\$o" "" +\\converter fig pdftex "sh \$\$s/fig2pdftex.sh \$\$i \$\$o" "" +\\converter fig pstex "sh \$\$s/fig2pstex.sh \$\$i \$\$o" "" +\\converter html latex "$html_to_latex_command" "" +\\converter latex html "$latex_to_html_command" "originaldir,needaux" +\\converter latex dvi "$latex_to_dvi" "latex" +\\converter latex lyx "$tex_to_lyx_command" "" +\\converter latex pdf2 "$latex_to_pdf" "latex" +\\converter linuxdoc dvi "$linuxdoc_to_dvi_command" "" +\\converter linuxdoc html "$linuxdoc_to_html_command" "" +\\converter linuxdoc latex "$linuxdoc_to_latex_command" "" +\\converter linuxdoc lyx "$linuxdoc_to_lyx_command" "" +\\converter literate latex "$literate_to_tex_command" "" +\\converter literate lyx "$literate_to_lyx_command" "" +\\converter lyxpreview ppm "$lyxpreview_to_bitmap_command" "" +\\converter ps fax "$fax_command" "" +\\converter ps pdf "$ps_to_pdf_command" "" +\\converter word latex "$word_to_latex_command" "" EOF ### the graphic converter part with the predefined ones -#### Search for tne nonstandard converting progs +#### Search for the nonstandard converting progs # SEARCH_PROG([for an FIG -> EPS/PPM converter], FIG2DEV, fig2dev) if test "$FIG2DEV" = "fig2dev"; then cat >>$outfile < PS converter], TIFF2PS, tiff2ps) if test "$TIFF2PS" = "tiff2ps"; then cat >>$outfile < \$\$o" "" +\\converter tiff eps "tiff2ps \$\$i > \$\$o" "" EOF fi SEARCH_PROG([for an TGIF -> EPS/PPM converter], TGIF, tgif) if test "$TGIF" = "tgif"; then cat >>$outfile < \$\$o" "" -\\converter tgif png "tgif -stdout -print -color -xpm \$\$i | xpmtoppm | pnmtopng > \$\$o" "" +\\converter tgif eps "tgif -stdout -print -color -eps \$\$i > \$\$o" "" +\\converter tgif pdf "tgif -stdout -print -color -pdf \$\$i > \$\$o" "" EOF fi SEARCH_PROG([for an EPS -> PDF converter], EPSTOPDF, epstopdf) if test "$EPSTOPDF" = "epstopdf"; then cat >>$outfile < Image converter], GRACE, gracebat) if test "$GRACE" = "gracebat"; then cat >>$outfile </dev/null" "" -\\converter agr png "gracebat -hardcopy -printfile \$\$o -hdevice PNG \$\$i 2>/dev/null" "" -\\converter agr jpg "gracebat -hardcopy -printfile \$\$o -hdevice JPEG \$\$i 2>/dev/null" "" -\\converter agr ppm "gracebat -hardcopy -printfile \$\$o -hdevice PNM \$\$i 2>/dev/null" "" +\\converter agr eps "gracebat -hardcopy -printfile \$\$o -hdevice EPS \$\$i 2>/dev/null" "" +\\converter agr png "gracebat -hardcopy -printfile \$\$o -hdevice PNG \$\$i 2>/dev/null" "" +\\converter agr jpg "gracebat -hardcopy -printfile \$\$o -hdevice JPEG \$\$i 2>/dev/null" "" +\\converter agr ppm "gracebat -hardcopy -printfile \$\$o -hdevice PNM \$\$i 2>/dev/null" "" EOF fi +cat >>$outfile < + + * format.[Ch]: add editor to Format + * lyxrc.[Ch]: merge RC_FORMAT and RC_VIEWER. Add editor to Format + * LyXAction.C, lfuns.h, lyxfunc.C: add lfun LFUN_GRAPHICS_EDIT 2004-04-08 André Pönitz diff --git a/src/LyXAction.C b/src/LyXAction.C index 5d2d637065..49617b0621 100644 --- a/src/LyXAction.C +++ b/src/LyXAction.C @@ -325,6 +325,7 @@ void LyXAction::init() { LFUN_PARAGRAPH_APPLY, "paragraph-params-apply", Noop }, { LFUN_PARAGRAPH_UPDATE, "", Noop }, { LFUN_EXTERNAL_EDIT, "external-edit", Noop }, + { LFUN_GRAPHICS_EDIT, "graphics-edit", Noop }, { LFUN_REPEAT, "repeat", NoBuffer }, { LFUN_WORD_FIND, "word-find", Noop }, { LFUN_WORD_REPLACE, "word-replace", Noop }, diff --git a/src/format.C b/src/format.C index ef0d4ad968..ec5585d73f 100644 --- a/src/format.C +++ b/src/format.C @@ -27,6 +27,7 @@ using lyx::support::bformat; using lyx::support::compare_ascii_no_case; using lyx::support::contains; +using lyx::support::MakeDisplayPath; using lyx::support::OnlyFilename; using lyx::support::OnlyPath; using lyx::support::Path; @@ -70,8 +71,8 @@ bool operator<(Format const & a, Format const & b) } Format::Format(string const & n, string const & e, string const & p, - string const & s, string const & v) - : name_(n), extension_(e), prettyname_(p),shortcut_(s), viewer_(v) + string const & s, string const & v, string const & ed) + : name_(n), extension_(e), prettyname_(p), shortcut_(s), viewer_(v), editor_(ed) {} @@ -124,23 +125,22 @@ int Formats::getNumber(string const & name) const void Formats::add(string const & name) { if (!getFormat(name)) - add(name, name, name, string()); + add(name, name, name, string(), string(), string()); } void Formats::add(string const & name, string const & extension, - string const & prettyname, string const & shortcut) + string const & prettyname, string const & shortcut, + string const & viewer, string const & editor) { FormatList::iterator it = find_if(formatlist.begin(), formatlist.end(), FormatNamesEqual(name)); if (it == formatlist.end()) formatlist.push_back(Format(name, extension, prettyname, - shortcut, "")); - else { - string viewer = it->viewer(); - *it = Format(name, extension, prettyname, shortcut, viewer); - } + shortcut, viewer, editor)); + else + *it = Format(name, extension, prettyname, shortcut, viewer, editor); } @@ -172,7 +172,7 @@ void Formats::setViewer(string const & name, string const & command) bool Formats::view(Buffer const & buffer, string const & filename, - string const & format_name) const + string const & format_name) const { if (filename.empty()) return false; @@ -183,7 +183,7 @@ bool Formats::view(Buffer const & buffer, string const & filename, format = getFormat(format->parentFormat()); if (!format || format->viewer().empty()) { // I believe this is the wrong place to show alerts, it should be done by -// the caller (this should be "utility" code +// the caller (this should be "utility" code) Alert::error(_("Cannot view file"), bformat(_("No information for viewing %1$s"), prettyName(format_name))); @@ -220,7 +220,52 @@ bool Formats::view(Buffer const & buffer, string const & filename, if (res) { Alert::error(_("Cannot view file"), bformat(_("An error occurred whilst running %1$s"), - command.substr(0, 50))); + MakeDisplayPath(command, 50))); + return false; + } + return true; +} + + +bool Formats::edit(Buffer const & buffer, string const & filename, + string const & format_name) const +{ + if (filename.empty()) + return false; + + Format const * format = getFormat(format_name); + if (format && format->editor().empty() && + format->isChildFormat()) + format = getFormat(format->parentFormat()); + if (!format || format->editor().empty()) { +// I believe this is the wrong place to show alerts, it should be done by +// the caller (this should be "utility" code) + Alert::error(_("Cannot edit file"), + bformat(_("No information for editing %1$s"), + prettyName(format_name))); + return false; + } + + string command = format->editor(); + + if (!contains(command, token_from)) + command += ' ' + token_from; + + command = subst(command, token_from, + QuoteName(OnlyFilename(filename))); + command = subst(command, token_path, QuoteName(OnlyPath(filename))); + command = subst(command, token_socket, QuoteName(lyxsocket->address())); + lyxerr[Debug::FILES] << "Executing command: " << command << std::endl; + buffer.message(_("Executing command: ") + command); + + Path p(OnlyPath(filename)); + Systemcall one; + int const res = one.startscript(Systemcall::DontWait, command); + + if (res) { + Alert::error(_("Cannot edit file"), + bformat(_("An error occurred whilst running %1$s"), + MakeDisplayPath(command, 50))); return false; } return true; diff --git a/src/format.h b/src/format.h index 5603367ad1..3751b6d0af 100644 --- a/src/format.h +++ b/src/format.h @@ -21,7 +21,7 @@ class Format { public: /// Format(std::string const & n, std::string const & e, std::string const & p, - std::string const & s, std::string const & v); + std::string const & s, std::string const & v, std::string const & ed); /// bool dummy() const; /// @@ -52,6 +52,10 @@ public: void setViewer(std::string const & v) { viewer_ = v; } + /// + std::string const & editor() const { + return editor_; + } private: std::string name_; /// @@ -62,6 +66,8 @@ private: std::string shortcut_; /// std::string viewer_; + /// + std::string editor_; }; @@ -86,7 +92,8 @@ public: void add(std::string const & name); /// void add(std::string const & name, std::string const & extension, - std::string const & prettyname, std::string const & shortcut); + std::string const & prettyname, std::string const & shortcut, + std::string const & viewer, std::string const & editor); /// void erase(std::string const & name); /// @@ -97,6 +104,9 @@ public: bool view(Buffer const & buffer, std::string const & filename, std::string const & format_name) const; /// + bool edit(Buffer const & buffer, std::string const & filename, + std::string const & format_name) const; + /// std::string const prettyName(std::string const & name) const; /// std::string const extension(std::string const & name) const; diff --git a/src/frontends/controllers/ChangeLog b/src/frontends/controllers/ChangeLog index ff80490396..eb8aa9dd8a 100644 --- a/src/frontends/controllers/ChangeLog +++ b/src/frontends/controllers/ChangeLog @@ -1,3 +1,7 @@ +2004-04-12 Georg Baum + + * ControlGraphics.[Ch] (editGraphics): new method + 2004-04-07 Martin Vermeer * ControlDocument.C: 'assign' for opening/closing branch insets diff --git a/src/frontends/controllers/ControlGraphics.C b/src/frontends/controllers/ControlGraphics.C index d478f1e535..c546da8e15 100644 --- a/src/frontends/controllers/ControlGraphics.C +++ b/src/frontends/controllers/ControlGraphics.C @@ -133,6 +133,16 @@ bool ControlGraphics::isFilenameValid(string const & fname) const } +void ControlGraphics::editGraphics() +{ + BOOST_ASSERT(params_.get()); + + dialog().view().apply(); + string const lfun = + InsetGraphicsMailer::params2string(params(), kernel().buffer()); + kernel().dispatch(FuncRequest(LFUN_GRAPHICS_EDIT, lfun)); +} + namespace frnt { namespace { diff --git a/src/frontends/controllers/ControlGraphics.h b/src/frontends/controllers/ControlGraphics.h index cff0959530..3fec003e19 100644 --- a/src/frontends/controllers/ControlGraphics.h +++ b/src/frontends/controllers/ControlGraphics.h @@ -51,6 +51,8 @@ public: bool bbChanged; /// test if file exist bool isFilenameValid(std::string const & fname) const; + /// edit file + void editGraphics(); private: /// diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 6be0618947..b737dd92d9 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,10 @@ +2004-04-12 Georg Baum + + * QPrefsDialog.C, ui/QPrefFileformatsModule.ui: add editor to format + * QGraphics.[Ch]: add slotEdit() + * QGraphicsDialog.[Ch]: add edit_clicked() + * ui/QGraphicsDialogBase.ui: add Edit button + 2004-04-07 Alfredo Braunstein * QLPainter.[Ch]: adjust to changes in Painter.h diff --git a/src/frontends/qt2/QGraphics.C b/src/frontends/qt2/QGraphics.C index 57613355b9..6b83c675f8 100644 --- a/src/frontends/qt2/QGraphics.C +++ b/src/frontends/qt2/QGraphics.C @@ -415,3 +415,9 @@ bool QGraphics::isValid() { return !dialog_->filename->text().isEmpty(); } + + +void QGraphics::slotEdit() +{ + controller().editGraphics(); +} diff --git a/src/frontends/qt2/QGraphics.h b/src/frontends/qt2/QGraphics.h index be0d1c17e2..7783cbf4fd 100644 --- a/src/frontends/qt2/QGraphics.h +++ b/src/frontends/qt2/QGraphics.h @@ -30,6 +30,8 @@ public: friend class QGraphicsDialog; /// QGraphics(Dialog &); +public slots: + void slotEdit(); protected: virtual bool isValid(); private: diff --git a/src/frontends/qt2/QGraphicsDialog.C b/src/frontends/qt2/QGraphicsDialog.C index 195abf78a3..8ba4dc7fba 100644 --- a/src/frontends/qt2/QGraphicsDialog.C +++ b/src/frontends/qt2/QGraphicsDialog.C @@ -39,6 +39,8 @@ QGraphicsDialog::QGraphicsDialog(QGraphics * form) form, SLOT(slotClose())); connect(restorePB, SIGNAL(clicked()), form, SLOT(slotRestore())); + connect(editPB, SIGNAL(clicked()), + this, SLOT(edit_clicked())); } @@ -93,3 +95,9 @@ void QGraphicsDialog::getBB_clicked() { form_->getBB(); } + + +void QGraphicsDialog::edit_clicked() +{ + form_->controller().editGraphics(); +} diff --git a/src/frontends/qt2/QGraphicsDialog.h b/src/frontends/qt2/QGraphicsDialog.h index 15a696cae3..c2916b1410 100644 --- a/src/frontends/qt2/QGraphicsDialog.h +++ b/src/frontends/qt2/QGraphicsDialog.h @@ -30,6 +30,7 @@ protected slots: virtual void change_WUnit(); virtual void browse_clicked(); virtual void getBB_clicked(); + virtual void edit_clicked(); protected: virtual void closeEvent(QCloseEvent * e); private: diff --git a/src/frontends/qt2/QPrefsDialog.C b/src/frontends/qt2/QPrefsDialog.C index b187c8222c..cb6fb8361c 100644 --- a/src/frontends/qt2/QPrefsDialog.C +++ b/src/frontends/qt2/QPrefsDialog.C @@ -381,6 +381,7 @@ void QPrefsDialog::switch_format(int nr) fileformatsModule->extensionED->setText(toqstr(f.extension())); fileformatsModule->shortcutED->setText(toqstr(f.shortcut())); fileformatsModule->viewerED->setText(toqstr(f.viewer())); + fileformatsModule->editorED->setText(toqstr(f.editor())); fileformatsModule->formatRemovePB->setEnabled( !form_->converters().formatIsUsed(f.name())); } @@ -407,10 +408,10 @@ void QPrefsDialog::modify_format() string const extension = fromqstr(fileformatsModule->extensionED->text()); string const shortcut = fromqstr(fileformatsModule->shortcutED->text()); string const viewer = fromqstr(fileformatsModule->viewerED->text()); + string const editor = fromqstr(fileformatsModule->editorED->text()); - form_->formats().add(name, extension, prettyname, shortcut); + form_->formats().add(name, extension, prettyname, shortcut, viewer, editor); form_->formats().sort(); - form_->formats().setViewer(name, viewer); fileformatsModule->formatsLB->setUpdatesEnabled(false); updateFormats(); diff --git a/src/frontends/qt2/ui/QGraphicsDialogBase.ui b/src/frontends/qt2/ui/QGraphicsDialogBase.ui index c3c5f098db..c07962c6eb 100644 --- a/src/frontends/qt2/ui/QGraphicsDialogBase.ui +++ b/src/frontends/qt2/ui/QGraphicsDialogBase.ui @@ -13,8 +13,8 @@ 0 0 - 392 - 494 + 459 + 549 @@ -32,1099 +32,1000 @@ sizeGripEnabled true - + + QLayoutWidget - margin - 11 + name + Layout20 - spacing - 6 + geometry + + 11 + 500 + 437 + 38 + + + + + margin + 0 + + + spacing + 6 + + + QPushButton + + name + restorePB + + + text + &Restore + + + autoDefault + false + + + default + false + + + + + name + Spacer3 + + + orientation + Horizontal + + + sizeType + MinimumExpanding + + + sizeHint + + 20 + 20 + + + + + QPushButton + + name + okPB + + + text + OK + + + autoDefault + true + + + default + true + + + + QPushButton + + name + applyPB + + + sizePolicy + + 1 + 0 + + + + text + &Apply + + + autoDefault + false + + + default + false + + + + QPushButton + + name + closePB + + + sizePolicy + + 1 + 0 + + + + text + Close + + + autoDefault + false + + + + + + QTabWidget + + name + TabWidget + + + geometry + + 11 + 11 + 440 + 487 + + + + toolTip + - QTabWidget + QWidget name - TabWidget + tab - - toolTip - - - - QWidget - - name - tab - - - title - &Graphics - - - - margin - 11 - - - spacing - 6 - - - QLayoutWidget - - name - Layout2 - - - - margin - 0 - - - spacing - 6 - - - QLabel - - name - filenameL - - - text - &File: - - - buddy - filename - - - toolTip - File name of image - - - - QLineEdit - - name - filename - - - toolTip - File name of image - - - - QPushButton - - name - browsePB - - - text - &Browse... - - - toolTip - Select an image file - - - - - - - name - Spacer11 - - - orientation - Vertical - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - QGroupBox - - name - GroupBox11 - - - title - Output - - - - margin - 11 - - - spacing - 6 - - - QLabel - - name - sizewidthL_2 - - - enabled - true - - - text - &Width: - - - buddy - width - - - - QLayoutWidget - - name - Layout8 - - - - margin - 0 - - - spacing - 6 - - - QLineEdit - - name - width - - - enabled - true - - - toolTip - Width of image in output - - - - QComboBox - - name - widthUnit - - - - - - QLabel - - name - sizeheightL_2 - - - enabled - true - - - text - &Height: - - - buddy - height - - - - QLayoutWidget - - name - Layout9 - - - - margin - 0 - - - spacing - 6 - - - QLineEdit - - name - height - - - enabled - true - - - toolTip - Height of image in output - - - - LengthCombo - - name - heightUnit - - - sizePolicy - - 3 - 5 - - - - minimumSize - - 0 - 0 - - - - focusPolicy - StrongFocus - - - toolTip - Units of height value - - - - - - QCheckBox - - name - aspectratio - - - enabled - true - - - text - &Maintain aspect ratio - - - toolTip - Maintain aspect ratio with largest dimension - - - - - - QGroupBox - - name - GroupBox5 - - - title - LyX Display - - - - margin - 11 - - - spacing - 6 - - - QCheckBox - - name - displayCB - - - text - &Show in LyX - - - toolTip - Display image in LyX - - - - QLabel - - name - TextLabel1 - - - text - Display: - - - buddy - showCB - - - toolTip - Screen display - - - - QComboBox - - - text - Default - - - - - text - Monochrome - - - - - text - Grayscale - - - - - text - Color - - - - name - showCB - - - toolTip - Screen display - - - - QLabel - - name - scaleLA - - - text - Scale: - - - buddy - displayscale - - - toolTip - Percentage to scale by in LyX - - - - QLayoutWidget - - name - Layout10 - - - - margin - 0 - - - spacing - 6 - - - QLineEdit - - name - displayscale - - - enabled - true - - - sizePolicy - - 5 - 0 - - - - toolTip - Percentage to scale by in LyX - - - - QLabel - - name - displayscaleL - - - enabled - true - - - focusPolicy - NoFocus - - - text - % - - - - - - - - QGroupBox - - name - rotateGB - - - title - Rotation - - - - margin - 11 - - - spacing - 6 - - - QLabel - - name - angleL_2 - - - text - A&ngle: - - - buddy - angle - - - toolTip - Angle to rotate image by - - - - QLineEdit - - name - angle - - - sizePolicy - - 3 - 0 - - - - toolTip - Angle to rotate image by - - - - QLabel - - name - originL_2 - - - text - &Origin: - - - buddy - origin - - - toolTip - The origin of the rotation - - - - QComboBox - - name - origin - - - toolTip - The origin of the rotation - - - - - - - - QWidget - - name - tab - - - title - &Clipping - - - - margin - 11 - - - spacing - 6 - - - QLayoutWidget - - name - Layout7 - - - - margin - 0 - - - spacing - 6 - - - QCheckBox - - name - clip - - - text - Clip to &bounding box - - - toolTip - Clip to bounding box values - - - - - name - Spacer48 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - QPushButton - - name - getPB - - - text - &Get from File - - - toolTip - Get bounding box from the (EPS) file - - - - - - QFrame - - name - Frame3 - - - enabled - true - - - sizePolicy - - 5 - 7 - - - - frameShape - StyledPanel - - - frameShadow - Raised - - - - margin - 11 - - - spacing - 6 - - - QComboBox - - name - lbXunit - - - - QLabel - - name - yL - - - text - y - - - - QComboBox - - name - lbYunit - - - - QLabel - - name - xL - - - text - x - - - - QLineEdit - - name - lbY - - - - QLineEdit - - name - lbX - - - toolTip - - - - - QLabel - - name - lbL - - - text - &Left bottom: - - - buddy - lbX - - - - QComboBox - - name - rtYunit - - - - QComboBox - - name - rtXunit - - - - QLineEdit - - name - rtX - - - - QLabel - - name - xL_2 - - - text - x - - - - QLabel - - name - rtL - - - text - Right &top: - - - buddy - rtX - - - - QLabel - - name - yL_2 - - - text - y - - - - QLineEdit - - name - rtY - - - - - - - name - Spacer48_2 - - - orientation - Vertical - - - sizeType - MinimumExpanding - - - sizeHint - - 20 - 20 - - - - - - - QWidget - - name - tab - - - title - E&xtra options - - - - margin - 11 - - - spacing - 6 - - - QCheckBox - - name - subfigure - - - text - Su&bfigure - - - toolTip - Is this just one part of a figure float ? - - - - QCheckBox - - name - unzipCB - - - text - Don't un&zip on export - - - toolTip - Don't uncompress image before exporting to LaTeX - - - - QLabel - - name - latexoptionsLA - - - text - LaTeX &options: - - - buddy - latexoptions - - - toolTip - Additional LaTeX options - - - - QLineEdit - - name - latexoptions - - - toolTip - Additional LaTeX options - - - - QCheckBox - - name - draftCB - - - text - &Draft mode - - - toolTip - Draft mode - - - - - name - Spacer37 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - name - Spacer38 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - name - Spacer36 - - - orientation - Horizontal - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - QLabel - - name - CaptionLA - - - text - Ca&ption: - - - buddy - subcaption - - - toolTip - The caption for the sub-figure - - - - QLineEdit - - name - subcaption - - - enabled - false - - - toolTip - The caption for the sub-figure - - - - - name - Spacer76 - - - orientation - Vertical - - - sizeType - Expanding - - - sizeHint - - 20 - 20 - - - - - - - - QLayoutWidget - - name - Layout20 - - + + title + &Graphics + + margin - 0 + 11 spacing 6 - - QPushButton - - name - restorePB - - - text - &Restore - - - autoDefault - false - - - default - false - - - + name - Spacer3 + Spacer11 orientation - Horizontal + Vertical + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + QGroupBox + + name + rotateGB + + + title + Rotation + + + + margin + 11 + + + spacing + 6 + + + QLabel + + name + angleL_2 + + + text + A&ngle: + + + buddy + angle + + + toolTip + Angle to rotate image by + + + + QLineEdit + + name + angle + + + sizePolicy + + 3 + 0 + + + + toolTip + Angle to rotate image by + + + + QLabel + + name + originL_2 + + + text + &Origin: + + + buddy + origin + + + toolTip + The origin of the rotation + + + + QComboBox + + name + origin + + + toolTip + The origin of the rotation + + + + + + QGroupBox + + name + GroupBox5 + + + title + LyX Display + + + + margin + 11 + + + spacing + 6 + + + QCheckBox + + name + displayCB + + + text + &Show in LyX + + + toolTip + Display image in LyX + + + + QLabel + + name + TextLabel1 + + + text + Display: + + + buddy + showCB + + + toolTip + Screen display + + + + QComboBox + + + text + Default + + + + + text + Monochrome + + + + + text + Grayscale + + + + + text + Color + + + + name + showCB + + + toolTip + Screen display + + + + QLabel + + name + scaleLA + + + text + Scale: + + + buddy + displayscale + + + toolTip + Percentage to scale by in LyX + + + + QLayoutWidget + + name + Layout10 + + + + margin + 0 + + + spacing + 6 + + + QLineEdit + + name + displayscale + + + enabled + true + + + sizePolicy + + 5 + 0 + + + + toolTip + Percentage to scale by in LyX + + + + QLabel + + name + displayscaleL + + + enabled + true + + + focusPolicy + NoFocus + + + text + % + + + + + + + + QGroupBox + + name + GroupBox11 + + + title + Output + + + + margin + 11 + + + spacing + 6 + + + QLabel + + name + sizewidthL_2 + + + enabled + true + + + text + &Width: + + + buddy + width + + + + QLayoutWidget + + name + Layout8 + + + + margin + 0 + + + spacing + 6 + + + QLineEdit + + name + width + + + enabled + true + + + toolTip + Width of image in output + + + + QComboBox + + name + widthUnit + + + + + + QLabel + + name + sizeheightL_2 + + + enabled + true + + + text + &Height: + + + buddy + height + + + + QLayoutWidget + + name + Layout9 + + + + margin + 0 + + + spacing + 6 + + + QLineEdit + + name + height + + + enabled + true + + + toolTip + Height of image in output + + + + LengthCombo + + name + heightUnit + + + sizePolicy + + 3 + 5 + + + + minimumSize + + 0 + 0 + + + + focusPolicy + StrongFocus + + + toolTip + Units of height value + + + + + + QCheckBox + + name + aspectratio + + + enabled + true + + + text + &Maintain aspect ratio + + + toolTip + Maintain aspect ratio with largest dimension + + + + + + QLayoutWidget + + name + Layout7 + + + + margin + 0 + + + spacing + 6 + + + + name + Spacer3_2 + + + orientation + Horizontal + + + sizeType + MinimumExpanding + + + sizeHint + + 20 + 20 + + + + + QPushButton + + name + editPB + + + text + &Edit + + + autoDefault + false + + + default + false + + + + QLineEdit + + name + filename + + + toolTip + File name of image + + + + QPushButton + + name + browsePB + + + text + &Browse... + + + toolTip + Select an image file + + + + QLabel + + name + filenameL + + + text + &File: + + + buddy + filename + + + toolTip + File name of image + + + + + + + + QWidget + + name + tab + + + title + &Clipping + + + + margin + 11 + + + spacing + 6 + + + QLayoutWidget + + name + Layout7 + + + + margin + 0 + + + spacing + 6 + + + QCheckBox + + name + clip + + + text + Clip to &bounding box + + + toolTip + Clip to bounding box values + + + + + name + Spacer48 + + + orientation + Horizontal + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + QPushButton + + name + getPB + + + text + &Get from File + + + toolTip + Get bounding box from the (EPS) file + + + + + + QFrame + + name + Frame3 + + + enabled + true + + + sizePolicy + + 5 + 7 + + + + frameShape + StyledPanel + + + frameShadow + Raised + + + + margin + 11 + + + spacing + 6 + + + QComboBox + + name + lbXunit + + + + QLabel + + name + yL + + + text + y + + + + QComboBox + + name + lbYunit + + + + QLabel + + name + xL + + + text + x + + + + QLineEdit + + name + lbY + + + + QLineEdit + + name + lbX + + + toolTip + + + + + QLabel + + name + lbL + + + text + &Left bottom: + + + buddy + lbX + + + + QComboBox + + name + rtYunit + + + + QComboBox + + name + rtXunit + + + + QLineEdit + + name + rtX + + + + QLabel + + name + xL_2 + + + text + x + + + + QLabel + + name + rtL + + + text + Right &top: + + + buddy + rtX + + + + QLabel + + name + yL_2 + + + text + y + + + + QLineEdit + + name + rtY + + + + + + + name + Spacer48_2 + + + orientation + Vertical sizeType @@ -1138,76 +1039,223 @@ - - QPushButton - - name - okPB - - - text - OK - - - autoDefault - true - - - default - true - - - - QPushButton - - name - applyPB - - - sizePolicy - - 1 - 0 - - - - text - &Apply - - - autoDefault - false - - - default - false - - - - QPushButton - - name - closePB - - - sizePolicy - - 1 - 0 - - - - text - Close - - - autoDefault - false - - - + - + + QWidget + + name + tab + + + title + E&xtra options + + + + margin + 11 + + + spacing + 6 + + + QCheckBox + + name + subfigure + + + text + Su&bfigure + + + toolTip + Is this just one part of a figure float ? + + + + QCheckBox + + name + unzipCB + + + text + Don't un&zip on export + + + toolTip + Don't uncompress image before exporting to LaTeX + + + + QLabel + + name + latexoptionsLA + + + text + LaTeX &options: + + + buddy + latexoptions + + + toolTip + Additional LaTeX options + + + + QLineEdit + + name + latexoptions + + + toolTip + Additional LaTeX options + + + + QCheckBox + + name + draftCB + + + text + &Draft mode + + + toolTip + Draft mode + + + + + name + Spacer37 + + + orientation + Horizontal + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + name + Spacer38 + + + orientation + Horizontal + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + name + Spacer36 + + + orientation + Horizontal + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + QLabel + + name + CaptionLA + + + text + Ca&ption: + + + buddy + subcaption + + + toolTip + The caption for the sub-figure + + + + QLineEdit + + name + subcaption + + + enabled + false + + + toolTip + The caption for the sub-figure + + + + + name + Spacer76 + + + orientation + Vertical + + + sizeType + Expanding + + + sizeHint + + 20 + 20 + + + + + + diff --git a/src/frontends/qt2/ui/QPrefFileformatsModule.ui b/src/frontends/qt2/ui/QPrefFileformatsModule.ui index 2f45ff9574..173ec52600 100644 --- a/src/frontends/qt2/ui/QPrefFileformatsModule.ui +++ b/src/frontends/qt2/ui/QPrefFileformatsModule.ui @@ -159,6 +159,13 @@ viewerED + + QLineEdit + + name + editorED + + QLineEdit @@ -218,6 +225,21 @@ viewerED + + QLabel + + name + editorLA + + + text + Ed&itor: + + + buddy + editorED + + QLineEdit @@ -347,5 +369,6 @@ shortcutED extensionED viewerED + editorED diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index d5c4cd7696..ddfd30f9c4 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,7 @@ +2004-04-12 Georg Baum + + * FormPreferences.C, forms/form_preferences.fd: add editor to format + * FormGraphics.C, forms/form_graphics.fd: add Edit button 2004-04-07 Alfredo Braunstein diff --git a/src/frontends/xforms/FormGraphics.C b/src/frontends/xforms/FormGraphics.C index 7063625e96..bf31de4c23 100644 --- a/src/frontends/xforms/FormGraphics.C +++ b/src/frontends/xforms/FormGraphics.C @@ -571,8 +571,12 @@ void FormGraphics::updateBB(string const & filename, string const & bb_inset) ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long) { + ButtonPolicy::SMInput activate = ButtonPolicy::SMI_VALID; + // the file section if (ob == file_->button_browse) { + activate = ButtonPolicy::SMI_NOOP; + // Get the filename from the dialog string const in_name = getString(file_->input_filename); string const out_name = controller().browse(in_name); @@ -642,7 +646,11 @@ ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long) setEnabled(extra_->input_subcaption, fl_get_button(extra_->check_subcaption)); + } else if (ob == file_->button_edit) { + activate = ButtonPolicy::SMI_NOOP; + controller().editGraphics(); } - return ButtonPolicy::SMI_VALID; + + return activate; } diff --git a/src/frontends/xforms/FormPreferences.C b/src/frontends/xforms/FormPreferences.C index 8654a865a6..f0ee6e3179 100644 --- a/src/frontends/xforms/FormPreferences.C +++ b/src/frontends/xforms/FormPreferences.C @@ -996,6 +996,7 @@ void FormPreferences::Formats::build() fl_set_input_return(dialog_->input_format, FL_RETURN_CHANGED); fl_set_input_return(dialog_->input_viewer, FL_RETURN_CHANGED); + fl_set_input_return(dialog_->input_editor, FL_RETURN_CHANGED); fl_set_input_return(dialog_->input_shrtcut, FL_RETURN_CHANGED); fl_set_input_return(dialog_->input_gui_name, FL_RETURN_CHANGED); fl_set_input_return(dialog_->input_extension, FL_RETURN_CHANGED); @@ -1010,6 +1011,7 @@ void FormPreferences::Formats::build() setPrehandler(dialog_->button_add); setPrehandler(dialog_->input_extension); setPrehandler(dialog_->input_viewer); + setPrehandler(dialog_->input_editor); setPrehandler(dialog_->input_shrtcut); } @@ -1036,6 +1038,9 @@ FormPreferences::Formats::feedback(FL_OBJECT const * const ob) const if (ob == dialog_->input_viewer) return _("The command used to launch the viewer application."); + if (ob == dialog_->input_editor) + return _("The command used to launch the editor application."); + if (ob == dialog_->button_delete) return _("Remove the current format from the list of available " "formats. Note: you must then \"Apply\" the change."); @@ -1062,7 +1067,8 @@ bool FormPreferences::Formats::input(FL_OBJECT const * const ob) || ob == dialog_->input_gui_name || ob == dialog_->input_shrtcut || ob == dialog_->input_extension - || ob == dialog_->input_viewer) + || ob == dialog_->input_viewer + || ob == dialog_->input_editor) return Input(); if (ob == dialog_->button_add) @@ -1109,11 +1115,11 @@ bool FormPreferences::Formats::Add() string const extension = fl_get_input(dialog_->input_extension); string const shortcut = fl_get_input(dialog_->input_shrtcut); string const viewer = fl_get_input(dialog_->input_viewer); + string const editor = fl_get_input(dialog_->input_editor); Format const * old = formats().getFormat(name); string const old_prettyname = old ? old->prettyname() : string(); - formats().add(name, extension, prettyname, shortcut); - formats().setViewer(name, viewer); + formats().add(name, extension, prettyname, shortcut, viewer, editor); if (!old || prettyname != old_prettyname) { UpdateBrowser(); if (old) @@ -1140,6 +1146,7 @@ bool FormPreferences::Formats::Browser() fl_set_input(dialog_->input_shrtcut, f.shortcut().c_str()); fl_set_input(dialog_->input_extension, f.extension().c_str()); fl_set_input(dialog_->input_viewer, f.viewer().c_str()); + fl_set_input(dialog_->input_editor, f.editor().c_str()); fl_set_object_label(dialog_->button_add, idex(_("Modify|#M")).c_str()); diff --git a/src/frontends/xforms/forms/form_graphics.fd b/src/frontends/xforms/forms/form_graphics.fd index 44a250fb60..f3876c2f38 100644 --- a/src/frontends/xforms/forms/form_graphics.fd +++ b/src/frontends/xforms/forms/form_graphics.fd @@ -9,14 +9,14 @@ SnapGrid: 5 =============== FORM =============== Name: form_graphics -Width: 395 -Height: 300 +Width: 490 +Height: 320 Number of Objects: 6 -------------------- class: FL_BOX type: FLAT_BOX -box: 0 0 395 300 +box: 0 0 490 320 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -34,7 +34,7 @@ argument: -------------------- class: FL_TABFOLDER type: TOP_TABFOLDER -box: 0 5 395 260 +box: 0 5 490 280 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_TOP_LEFT @@ -52,7 +52,7 @@ argument: -------------------- class: FL_BUTTON type: NORMAL_BUTTON -box: 5 270 90 25 +box: 5 290 90 25 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -70,7 +70,7 @@ argument: 0 -------------------- class: FL_BUTTON type: RETURN_BUTTON -box: 110 270 90 25 +box: 205 290 90 25 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -88,7 +88,7 @@ argument: 0 -------------------- class: FL_BUTTON type: NORMAL_BUTTON -box: 300 270 90 25 +box: 395 290 90 25 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -106,7 +106,7 @@ argument: 0 -------------------- class: FL_BUTTON type: NORMAL_BUTTON -box: 205 270 90 25 +box: 300 290 90 25 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -123,14 +123,14 @@ argument: 0 =============== FORM =============== Name: form_graphics_file -Width: 395 -Height: 235 -Number of Objects: 15 +Width: 490 +Height: 255 +Number of Objects: 16 -------------------- class: FL_BOX type: FLAT_BOX -box: 0 0 395 235 +box: 0 0 490 255 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -148,7 +148,7 @@ argument: -------------------- class: FL_LABELFRAME type: ENGRAVED_FRAME -box: 5 125 385 105 +box: 5 145 480 105 boxtype: FL_NO_BOX colors: FL_BLACK FL_COL1 alignment: FL_ALIGN_TOP_LEFT @@ -166,7 +166,7 @@ argument: -------------------- class: FL_INPUT type: NORMAL_INPUT -box: 60 10 225 25 +box: 60 10 320 25 boxtype: FL_DOWN_BOX colors: FL_COL1 FL_MCOL alignment: FL_ALIGN_LEFT @@ -184,7 +184,7 @@ argument: 0 -------------------- class: FL_BUTTON type: NORMAL_BUTTON -box: 290 10 100 25 +box: 385 10 100 25 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -199,10 +199,28 @@ name: button_browse callback: C_FormDialogView_InputCB argument: 0 +-------------------- +class: FL_BUTTON +type: NORMAL_BUTTON +box: 385 40 100 25 +boxtype: FL_UP_BOX +colors: FL_COL1 FL_COL1 +alignment: FL_ALIGN_CENTER +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Edit|#E +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NorthEast FL_NorthEast +name: button_edit +callback: C_FormDialogView_InputCB +argument: 0 + -------------------- class: FL_LABELFRAME type: ENGRAVED_FRAME -box: 5 55 385 55 +box: 5 75 480 55 boxtype: FL_NO_BOX colors: FL_BLACK FL_COL1 alignment: FL_ALIGN_TOP_LEFT @@ -220,7 +238,7 @@ argument: -------------------- class: FL_CHECKBUTTON type: PUSH_BUTTON -box: 250 140 125 25 +box: 250 160 125 25 boxtype: FL_NO_BOX colors: FL_COL1 FL_YELLOW alignment: FL_ALIGN_CENTER @@ -238,7 +256,7 @@ argument: 0 -------------------- class: FL_CHECKBUTTON type: PUSH_BUTTON -box: 250 170 125 25 +box: 250 190 125 25 boxtype: FL_NO_BOX colors: FL_COL1 FL_YELLOW alignment: FL_ALIGN_CENTER @@ -256,7 +274,7 @@ argument: 0 -------------------- class: FL_INPUT type: NORMAL_INPUT -box: 85 70 70 25 +box: 85 90 70 25 boxtype: FL_DOWN_BOX colors: FL_COL1 FL_MCOL alignment: FL_ALIGN_LEFT @@ -274,7 +292,7 @@ argument: 0 -------------------- class: FL_INPUT type: NORMAL_INPUT -box: 85 140 70 25 +box: 85 160 70 25 boxtype: FL_DOWN_BOX colors: FL_COL1 FL_MCOL alignment: FL_ALIGN_LEFT @@ -292,7 +310,7 @@ argument: 0 -------------------- class: FL_CHOICE type: NORMAL_CHOICE -box: 155 140 60 25 +box: 155 160 60 25 boxtype: FL_FRAME_BOX colors: FL_COL1 FL_BLACK alignment: FL_ALIGN_LEFT @@ -310,7 +328,7 @@ argument: 0 -------------------- class: FL_CHOICE type: NORMAL_CHOICE -box: 155 170 60 25 +box: 155 190 60 25 boxtype: FL_FRAME_BOX colors: FL_COL1 FL_BLACK alignment: FL_ALIGN_LEFT @@ -328,7 +346,7 @@ argument: 0 -------------------- class: FL_CHECKBUTTON type: PUSH_BUTTON -box: 70 200 190 25 +box: 70 220 190 25 boxtype: FL_NO_BOX colors: FL_COL1 FL_YELLOW alignment: FL_ALIGN_CENTER @@ -346,7 +364,7 @@ argument: 0 -------------------- class: FL_INPUT type: NORMAL_INPUT -box: 85 170 70 25 +box: 85 190 70 25 boxtype: FL_DOWN_BOX colors: FL_COL1 FL_MCOL alignment: FL_ALIGN_LEFT @@ -364,7 +382,7 @@ argument: 0 -------------------- class: FL_TEXT type: NORMAL_TEXT -box: 155 70 25 25 +box: 155 90 25 25 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_MCOL alignment: FL_ALIGN_CENTER|FL_ALIGN_INSIDE @@ -382,7 +400,7 @@ argument: -------------------- class: FL_CHOICE type: NORMAL_CHOICE -box: 265 70 115 25 +box: 265 90 115 25 boxtype: FL_FRAME_BOX colors: FL_COL1 FL_BLACK alignment: FL_ALIGN_LEFT @@ -399,14 +417,14 @@ argument: 0 =============== FORM =============== Name: form_graphics_bbox -Width: 395 +Width: 490 Height: 235 Number of Objects: 10 -------------------- class: FL_BOX type: FLAT_BOX -box: 0 0 395 235 +box: 0 0 490 235 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -585,14 +603,14 @@ argument: 0 =============== FORM =============== Name: form_graphics_extra -Width: 395 +Width: 490 Height: 235 Number of Objects: 8 -------------------- class: FL_BOX type: FLAT_BOX -box: 0 0 395 235 +box: 0 0 490 235 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER diff --git a/src/frontends/xforms/forms/form_preferences.fd b/src/frontends/xforms/forms/form_preferences.fd index 84dff5f585..1c34f14d28 100644 --- a/src/frontends/xforms/forms/form_preferences.fd +++ b/src/frontends/xforms/forms/form_preferences.fd @@ -1705,13 +1705,13 @@ argument: =============== FORM =============== Name: form_preferences_formats Width: 450 -Height: 360 -Number of Objects: 9 +Height: 400 +Number of Objects: 10 -------------------- class: FL_BOX type: FLAT_BOX -box: 0 0 450 360 +box: 0 0 450 400 boxtype: FL_FLAT_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -1834,10 +1834,28 @@ name: input_viewer callback: C_FormDialogView_InputCB argument: 0 +-------------------- +class: FL_INPUT +type: NORMAL_INPUT +box: 280 230 150 30 +boxtype: FL_DOWN_BOX +colors: FL_COL1 FL_MCOL +alignment: FL_ALIGN_LEFT +style: FL_NORMAL_STYLE +size: FL_NORMAL_SIZE +lcol: FL_BLACK +label: Editor:|#i +shortcut: +resize: FL_RESIZE_ALL +gravity: FL_NoGravity FL_NoGravity +name: input_editor +callback: C_FormDialogView_InputCB +argument: 0 + -------------------- class: FL_BUTTON type: NORMAL_BUTTON -box: 240 270 90 30 +box: 240 300 90 30 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER @@ -1855,7 +1873,7 @@ argument: 0 -------------------- class: FL_BUTTON type: NORMAL_BUTTON -box: 340 270 90 30 +box: 340 300 90 30 boxtype: FL_UP_BOX colors: FL_COL1 FL_COL1 alignment: FL_ALIGN_CENTER diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 507ce4962f..20102f68dc 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,11 @@ +2004-04-12 Georg Baum + + * ExternalTemplate.[Ch]: remove editCommand + * ExternalSupport.C (editExternal): use formats.edit() instead of + the removed editCommand template parameter + * insetgraphics.C (priv_dispatch): handle LFUN_GRAPHICS_EDIT + * insetgraphics.[Ch] (editGraphics): new method + 2004-04-01 Georg Baum * insetinclude.C (validate): set/reset features.buffer_ when diff --git a/src/insets/ExternalSupport.C b/src/insets/ExternalSupport.C index a196459234..118b94e640 100644 --- a/src/insets/ExternalSupport.C +++ b/src/insets/ExternalSupport.C @@ -19,6 +19,7 @@ #include "buffer.h" #include "converter.h" #include "debug.h" +#include "format.h" #include "support/filetools.h" #include "support/forkedcall.h" @@ -51,23 +52,9 @@ Template const * getTemplatePtr(InsetExternalParams const & params) void editExternal(InsetExternalParams const & params, Buffer const & buffer) { - Template const * const et_ptr = getTemplatePtr(params); - if (!et_ptr) - return; - Template const & et = *et_ptr; - - if (et.editCommand.empty()) - return; - - string const command = doSubstitution(params, buffer, et.editCommand); - - support::Path p(buffer.filePath()); - support::Forkedcall call; - if (lyxerr.debugging(Debug::EXTERNAL)) { - lyxerr << "Executing '" << command << "' in '" - << buffer.filePath() << '\'' << endl; - } - call.startscript(support::Forkedcall::DontWait, command); + string const file_with_path = params.filename.absFilename(); + formats.edit(buffer, file_with_path, + support::getExtFromContents(file_with_path)); } diff --git a/src/insets/ExternalTemplate.C b/src/insets/ExternalTemplate.C index ba2bf86e4e..0bffe07c0f 100644 --- a/src/insets/ExternalTemplate.C +++ b/src/insets/ExternalTemplate.C @@ -101,7 +101,6 @@ public: << "\tHelpTextEnd\n" << "\tInputFormat " << et.inputFormat << '\n' << "\tFileFilter " << et.fileRegExp << '\n' - << "\tEditCommand " << et.editCommand << '\n' << "\tAutomaticProduction " << et.automaticProduction << '\n'; typedef vector IDs; @@ -298,7 +297,6 @@ void Template::readTemplate(LyXLex & lex) TO_HELPTEXT, TO_INPUTFORMAT, TO_FILTER, - TO_EDITCMD, TO_AUTOMATIC, TO_TRANSFORM, TO_FORMAT, @@ -307,7 +305,6 @@ void Template::readTemplate(LyXLex & lex) keyword_item templateoptiontags[] = { { "automaticproduction", TO_AUTOMATIC }, - { "editcommand", TO_EDITCMD }, { "filefilter", TO_FILTER }, { "format", TO_FORMAT }, { "guiname", TO_GUINAME }, @@ -340,11 +337,6 @@ void Template::readTemplate(LyXLex & lex) fileRegExp = lex.getString(); break; - case TO_EDITCMD: - lex.next(true); - editCommand = lex.getString(); - break; - case TO_AUTOMATIC: lex.next(); automaticProduction = lex.getBool(); diff --git a/src/insets/ExternalTemplate.h b/src/insets/ExternalTemplate.h index 23667f4cc2..80452e3041 100644 --- a/src/insets/ExternalTemplate.h +++ b/src/insets/ExternalTemplate.h @@ -54,8 +54,6 @@ struct Template { std::string inputFormat; /// A file extension regular expression for the file browser std::string fileRegExp; - /// What command should be executed to edit the file? - std::string editCommand; /// Should we do automatic production of the output? bool automaticProduction; /// A collection of transforms that we can use to transform the data. diff --git a/src/insets/insetgraphics.C b/src/insets/insetgraphics.C index 020f7de958..bdb569b482 100644 --- a/src/insets/insetgraphics.C +++ b/src/insets/insetgraphics.C @@ -190,6 +190,14 @@ void InsetGraphics::statusChanged() const void InsetGraphics::priv_dispatch(LCursor & cur, FuncRequest & cmd) { switch (cmd.action) { + case LFUN_GRAPHICS_EDIT: { + Buffer const & buffer = *cur.bv().buffer(); + InsetGraphicsParams p; + InsetGraphicsMailer::string2params(cmd.argument, buffer, p); + editGraphics(p, buffer); + break; + } + case LFUN_INSET_MODIFY: { Buffer const & buffer = cur.buffer(); InsetGraphicsParams p; @@ -692,6 +700,13 @@ InsetGraphicsParams const & InsetGraphics::params() const } +void InsetGraphics::editGraphics(InsetGraphicsParams const & p, Buffer const & buffer) const +{ + string const file_with_path = p.filename.absFilename(); + formats.edit(buffer, file_with_path, getExtFromContents(file_with_path)); +} + + string const InsetGraphicsMailer::name_("graphics"); InsetGraphicsMailer::InsetGraphicsMailer(InsetGraphics & inset) diff --git a/src/insets/insetgraphics.h b/src/insets/insetgraphics.h index e36f49860f..b4ac3d5171 100644 --- a/src/insets/insetgraphics.h +++ b/src/insets/insetgraphics.h @@ -79,6 +79,8 @@ public: void draw(PainterInfo & pi, int x, int y) const; /// void edit(LCursor & cur, bool left); + /// + void editGraphics(InsetGraphicsParams const &, Buffer const &) const; protected: /// void priv_dispatch(LCursor & cur, FuncRequest & cmd); diff --git a/src/lfuns.h b/src/lfuns.h index 63360a31fb..ef423ee02b 100644 --- a/src/lfuns.h +++ b/src/lfuns.h @@ -348,6 +348,7 @@ enum kb_action { LFUN_BUFFERPARAMS_APPLY, // 265 LFUN_LYXRC_APPLY, + LFUN_GRAPHICS_EDIT, LFUN_LASTACTION // end of the table }; diff --git a/src/lyxfunc.C b/src/lyxfunc.C index f40ed8c229..3fa0f222ca 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -483,6 +483,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const case LFUN_SET_COLOR: case LFUN_MESSAGE: case LFUN_EXTERNAL_EDIT: + case LFUN_GRAPHICS_EDIT: case LFUN_ALL_INSETS_TOGGLE: case LFUN_LANGUAGE_BUFFER: case LFUN_TEXTCLASS_APPLY: @@ -1260,6 +1261,12 @@ void LyXFunc::dispatch(FuncRequest const & cmd, bool verbose) break; } + case LFUN_GRAPHICS_EDIT: { + FuncRequest fr(action, argument); + InsetGraphics().dispatch(view()->cursor(), fr); + break; + } + case LFUN_ALL_INSETS_TOGGLE: { string action; string const name = split(argument, action, ' '); diff --git a/src/lyxrc.C b/src/lyxrc.C index 9481951d05..5faa48ad20 100644 --- a/src/lyxrc.C +++ b/src/lyxrc.C @@ -161,6 +161,7 @@ keyword_item lyxrcTags[] = { { "\\user_email", LyXRC::RC_USER_EMAIL }, { "\\user_name", LyXRC::RC_USER_NAME }, { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION }, + // compatibility with versions older than 1.4.0 only { "\\viewer" ,LyXRC::RC_VIEWER}, { "\\wheel_jump", LyXRC::RC_WHEEL_JUMP } }; @@ -979,6 +980,7 @@ int LyXRC::read(LyXLex & lexrc) } break; } + // compatibility with versions older than 1.4.0 only case RC_VIEWER: { string format, command; if (lexrc.next()) { @@ -1006,6 +1008,29 @@ int LyXRC::read(LyXLex & lexrc) if (lexrc.next()) { shortcut = lexrc.getString(); } + string viewer, editor; + // Hack to ensure compatibility with versions older + // than 1.4.0 + int le = lexrc.lex(); + if (le != LyXLex::LEX_FEOF && le != LyXLex::LEX_UNDEF) { + viewer = lexrc.getString(); + if (le == LyXLex::LEX_DATA) { + if (token(viewer, ' ', 0) == "none") + viewer.erase(); + if (lexrc.next()) { + editor = lexrc.getString(); + if (token(editor, ' ', 0) == "none") + editor.erase(); + } + } else { + // We have got a known token. + // Therefore this is an old style + // format definition without + // viewer and editor. + lexrc.pushToken(viewer); + viewer.erase(); + } + } if (prettyname.empty()) { if (converters.formatIsUsed(format)) { lyxerr << "Can't delete format " @@ -1015,7 +1040,7 @@ int LyXRC::read(LyXLex & lexrc) } } else { formats.add(format, extension, prettyname, - shortcut); + shortcut, viewer, editor); } break; } @@ -1801,7 +1826,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << "#\n\n"; case RC_FORMAT: - // Look for deleted formats + // New/modifed formats for (Formats::const_iterator cit = formats.begin(); cit != formats.end(); ++cit) { Format const * format = @@ -1809,29 +1834,25 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const if (!format || format->extension() != cit->extension() || format->prettyname() != cit->prettyname() || - format->shortcut() != cit->shortcut()) + format->shortcut() != cit->shortcut() || + format->viewer() != cit->viewer() || + format->editor() != cit->editor()) os << "\\format \"" << cit->name() << "\" \"" << cit->extension() << "\" \"" << cit->prettyname() << "\" \"" - << cit->shortcut() << "\"\n"; + << cit->shortcut() << "\" \"" + << cit->viewer() << "\" \"" + << cit->editor() << "\"\n"; } - // New/modifed formats + // Look for deleted formats for (Formats::const_iterator cit = system_formats.begin(); cit != system_formats.end(); ++cit) if (!formats.getFormat(cit->name())) os << "\\format \"" << cit->name() - << "\" \"\" \"\" \"\"\n"; + << "\" \"\" \"\" \"\" \"\" \"\"\n"; case RC_VIEWER: - for (Formats::const_iterator cit = formats.begin(); - cit != formats.end(); ++cit) { - Format const * format = - system_formats.getFormat(cit->name()); - if ((!format || format->viewer() != cit->viewer()) && - (format || !cit->viewer().empty())) - os << "\\viewer \"" << cit->name() << "\" \"" - << cit->viewer() << "\"\n"; - } + // Ignore it os << "\n#\n" << "# CONVERTERS SECTION ##########################\n"