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
This commit is contained in:
kokalj 2009-07-16 16:58:45 +00:00
parent 37a3f8861b
commit 4f4decafaa
4 changed files with 84 additions and 20 deletions

View File

@ -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

View File

@ -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 ""

View File

@ -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

View File

@ -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]