From 4f4decafaae1d320b361f7fbf51b35ab82881c0e Mon Sep 17 00:00:00 2001 From: kokalj Date: Thu, 16 Jul 2009 16:58:45 +0000 Subject: [PATCH] several new features: - executables can now be specified by path only - making ld1.x runable - new xcrysden versions don't need XCRYSDEN_TOPDIR, but pwgui needs it to run xcrysden (for some specific reasons), Making a notification to the user is such case occurs git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5701 c92efa57-630b-4861-b058-cf58834340f0 --- GUI/PWgui/src/menustate.itcl | 10 +++--- GUI/PWgui/src/run.itcl | 25 +++++++++------ GUI/PWgui/src/settings.itcl | 61 ++++++++++++++++++++++++++++++++---- GUI/PWgui/src/view.itcl | 8 ++++- 4 files changed, 84 insertions(+), 20 deletions(-) diff --git a/GUI/PWgui/src/menustate.itcl b/GUI/PWgui/src/menustate.itcl index b665c4b1e..c5da481e9 100644 --- a/GUI/PWgui/src/menustate.itcl +++ b/GUI/PWgui/src/menustate.itcl @@ -19,7 +19,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # -# $Id: menustate.itcl,v 1.3 2008-02-15 17:29:58 kokalj Exp $ +# $Id: menustate.itcl,v 1.4 2009-07-16 16:58:45 kokalj Exp $ # proc ::pwscf::menustate::editable {obj moduleIdent} { @@ -37,8 +37,10 @@ proc ::pwscf::menustate::xcrysden {obj moduleIdent} { global env ::tclu::DEBUG xcrysden: moduleIdent = $moduleIdent - - if { ! [info exists env(XCRYSDEN_TOPDIR)] || ! [string match *pw $moduleIdent] } { + if { [auto_execok xcrysden] != "" && ! [info exists env(XCRYSDEN_TOPDIR)] } { + } + + if { ( ! [info exists env(XCRYSDEN_TOPDIR)] && [auto_execok xcrysden] == "" ) || ! [string match *pw $moduleIdent] } { return disabled } else { return normal @@ -50,7 +52,7 @@ proc ::pwscf::menustate::runnable {obj moduleIdent} { ::tclu::DEBUG runnable: moduleIdent = $moduleIdent - if { [regexp {(pw|ph|pp|pr|d3)} $moduleIdent] } { + if { [regexp {(pw|ph|pp|pr|d3|atomic)} $moduleIdent] } { return normal } else { return disabled diff --git a/GUI/PWgui/src/run.itcl b/GUI/PWgui/src/run.itcl index df35c4588..7dea8e333 100644 --- a/GUI/PWgui/src/run.itcl +++ b/GUI/PWgui/src/run.itcl @@ -19,7 +19,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # -# $Id: run.itcl,v 1.7 2008-11-26 14:44:41 kokalj Exp $ +# $Id: run.itcl,v 1.8 2009-07-16 16:58:45 kokalj Exp $ # proc ::pwscf::run::run {guiObj {init 1} {use_defaults 1}} { @@ -41,9 +41,9 @@ proc ::pwscf::run::run {guiObj {init 1} {use_defaults 1}} { set _run(PW,$moduleObj) $::pwscf::settings(PW) set _run(PH,$moduleObj) $::pwscf::settings(PH) set _run(PP,$moduleObj) $::pwscf::settings(PP) - #set _run(CHDENS,$moduleObj) $::pwscf::settings(CHDENS) set _run(PROJWFC,$moduleObj) $::pwscf::settings(PROJWFC) set _run(D3,$moduleObj) $::pwscf::settings(D3) + set _run(LD1,$moduleObj) $::pwscf::settings(LD1) } else { # use values as specified in the current configuration set _run(RUN.prefix,$moduleObj) $run(RUN.prefix,$moduleObj) @@ -51,9 +51,9 @@ proc ::pwscf::run::run {guiObj {init 1} {use_defaults 1}} { set _run(PW,$moduleObj) $run(PW,$moduleObj) set _run(PH,$moduleObj) $run(PH,$moduleObj) set _run(PP,$moduleObj) $run(PP,$moduleObj) - #set _run(CHDENS,$moduleObj) $run(CHDENS,$moduleObj) set _run(PROJWFC,$moduleObj) $run(PROJWFC,$moduleObj) set _run(D3,$moduleObj) $run(D3,$moduleObj) + set _run(LD1,$moduleObj) $run(LD1,$moduleObj) } # @@ -91,6 +91,12 @@ proc ::pwscf::run::run {guiObj {init 1} {use_defaults 1}} { # find out the outdir and create it !!! _mkdirOutdir $moduleObj } + *ld1 { + set runCmd "$_run(RUN.prefix,$moduleObj) $_run(LD1,$moduleObj) $_run(RUN.postfix,$moduleObj)" + + # find out the outdir and create it !!! + _mkdirOutdir $moduleObj + } default { # module not yet supported ... return 0 @@ -238,9 +244,9 @@ proc ::pwscf::run::_init {guiObj} { ::tclu::newset run(PW,$moduleObj) $::pwscf::settings(PW) ::tclu::newset run(PH,$moduleObj) $::pwscf::settings(PH) ::tclu::newset run(PP,$moduleObj) $::pwscf::settings(PP) - #::tclu::newset run(CHDENS,$moduleObj) $::pwscf::settings(CHDENS) ::tclu::newset run(PROJWFC,$moduleObj) $::pwscf::settings(PROJWFC) ::tclu::newset run(D3,$moduleObj) $::pwscf::settings(D3) + ::tclu::newset run(LD1,$moduleObj) $::pwscf::settings(LD1) # # determine what are the IO-files @@ -273,11 +279,12 @@ proc ::pwscf::run::_init {guiObj} { proc ::pwscf::run::getProg {moduleIdent} { switch -glob -- $moduleIdent { - *pw { return pw.x } - *ph { return ph.x } - *pp { return pp.x } - *pr { return projwfc.x } - *d3 { return d3.x } + *pw { return pw.x } + *ph { return ph.x } + *pp { return pp.x } + *pr { return projwfc.x } + *d3 { return d3.x } + *atomic { return ld1.x } default { # module not yet supported ... return "" diff --git a/GUI/PWgui/src/settings.itcl b/GUI/PWgui/src/settings.itcl index 8d87e1efa..11812a8a7 100644 --- a/GUI/PWgui/src/settings.itcl +++ b/GUI/PWgui/src/settings.itcl @@ -19,7 +19,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # -# $Id: settings.itcl,v 1.6 2008-02-15 17:30:00 kokalj Exp $ +# $Id: settings.itcl,v 1.7 2009-07-16 16:58:45 kokalj Exp $ # proc ::pwscf::settings {gui} { @@ -51,6 +51,18 @@ proc ::pwscf::_settingsOK {t obj} { proc ::pwscf::_settingsApply {obj} { $obj saveToVar ::pwscf + + puts stderr [array get ::pwscf::settings] + puts stderr "::pwscf::settings_how_exe = $::pwscf::settings_how_exe" + + if { $::pwscf::settings_how_exe == "path" } { + set ::pwscf::settings(PW) $::pwscf::settings(BINDIR)/pw.x + set ::pwscf::settings(PH) $::pwscf::settings(BINDIR)/ph.x + set ::pwscf::settings(PP) $::pwscf::settings(BINDIR)/pp.x + set ::pwscf::settings(PROJWFC) $::pwscf::settings(BINDIR)/projwfc.x + set ::pwscf::settings(D3) $::pwscf::settings(BINDIR)/d3.x + set ::pwscf::settings(LD1) $::pwscf::settings(BINDIR)/ld1.x + } } proc ::pwscf::_settingsSave {obj} { @@ -118,11 +130,28 @@ proc ::pwscf::_settingsModule {} { var RUN.postfix -variable ::pwscf::settings(RUN.postfix) -label "Postfix:" } line pwscf_exe -name "Specify executables (i.e. /usr/local/bin/pw.x)" { - var PW -variable ::pwscf::settings(PW) -label "Executable \"pw.x\":" -widget entryfileselect - var PH -variable ::pwscf::settings(PH) -label "Executable \"ph.x\":" -widget entryfileselect - var PP -variable ::pwscf::settings(PP) -label "Executable \"pp.x\":" -widget entryfileselect - var PROJWFC -variable ::pwscf::settings(PROJWFC) -label "Executable \"projwfc.x\":" -widget entryfileselect - var D3 -variable ::pwscf::settings(D3) -label "Executable \"d3.x\":" -widget entryfileselect + auxilvar HOW_EXE { + -label "How to specify executables:" + -widget radiobox + -textvalue { + "by specifying the path" + "each executable separately" + } + -value { path binaries } + } + + group path -decor normal { + var BINDIR -variable ::pwscf::settings(BINDIR) -label "Specify the path for QE binaries:" -widget entrydirselect + } + + group binaries -decor normal { + var PW -variable ::pwscf::settings(PW) -label "Executable \"pw.x\":" -widget entryfileselect + var PH -variable ::pwscf::settings(PH) -label "Executable \"ph.x\":" -widget entryfileselect + var PP -variable ::pwscf::settings(PP) -label "Executable \"pp.x\":" -widget entryfileselect + var PROJWFC -variable ::pwscf::settings(PROJWFC) -label "Executable \"projwfc.x\":" -widget entryfileselect + var D3 -variable ::pwscf::settings(D3) -label "Executable \"d3.x\":" -widget entryfileselect + var LD1 -variable ::pwscf::settings(LD1) -label "Executable \"ld1.x\":" -widget entryfileselect + } } } @@ -212,6 +241,20 @@ proc ::pwscf::_settingsModule {} { } } + tracevar HOW_EXE w { + set how [varvalue HOW_EXE] + if { $how == "path" } { + varset HOW_EXE -value path + set ::pwscf::settings_how_exe path + groupwidget path enable + groupwidget binaries disable + } else { + set ::pwscf::settings_how_exe binaries + groupwidget path disable + groupwidget binaries enable + } + } + postprocess { loadFromVar @@ -226,6 +269,12 @@ proc ::pwscf::_settingsModule {} { widgetconfigure $elem -editable true -textvalues $::pwscf::settings($elem.list) } widgetconfigure PW -width 50 + + set how [varvalue HOW_EXE] + if { $how == {} } { + varset HOW_EXE -value path + } + puts stderr "how=$how" } }] return $obj diff --git a/GUI/PWgui/src/view.itcl b/GUI/PWgui/src/view.itcl index 3378b1091..dc5386f24 100644 --- a/GUI/PWgui/src/view.itcl +++ b/GUI/PWgui/src/view.itcl @@ -19,7 +19,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # -# $Id: view.itcl,v 1.5 2008-02-29 08:27:04 kokalj Exp $ +# $Id: view.itcl,v 1.6 2009-07-16 16:58:45 kokalj Exp $ # proc ::pwscf::view::inputByPager {guiObj} { @@ -45,6 +45,12 @@ proc ::pwscf::view::inputByPager {guiObj} { proc ::pwscf::view::structByXcrysden {guiObj} { variable ::pwscf::settings global env + + if { ! [info exists env(XCRYSDEN_TOPDIR)] && [auto_execok xcrysden] != "" } { + tk_messageBox -title Notification -type ok -icon info \ + -message "To view the structure by xcrysden, the XCRYSDEN_TOPDIR\nenviromental variable has to be defined !!!" + return + } set moduleObj [$guiObj getSelected moduleObj] set moduleIdent [$guiObj getSelected moduleIdent]