OSDN Git Service

'Create MO Cube' does not work when the molecule has no associated file. Fixed.
[molby/Molby.git] / Scripts / commands.rb
index 71af394..8ab0eae 100755 (executable)
@@ -191,6 +191,8 @@ end_of_header
                  item(:textfield, :width=>100, :height=>20, :tag=>"stepz", :value=>grid[6].to_s)))
        }
        if hash[:status] == 0
+         path = self.path || self.name
+         dir = self.dir || Dir.pwd
          origin = Vector3D[hash["originx"], hash["originy"], hash["originz"]]
          dx = hash["deltax"]
          dy = hash["deltay"]
@@ -198,20 +200,30 @@ end_of_header
          nx = hash["stepx"]
          ny = hash["stepy"]
          nz = hash["stepz"]
-         basename = File.basename(self.path, ".*")
+         basename = File.basename(path, ".*")
          filenames = []
+         mo_type = self.mo_type
          mos.each { |n|
-           fname = Dialog.save_panel("Cube file name for MO #{n}", self.dir, basename + "_#{n}.cube", "Gaussian cube file (*.cube)|*.cube")
-               if !fname
-                 filenames.clear
-                 break
+           fname1 = fname2 = nil
+           alpha = (mo_type != "UHF" ? "" : "alpha ")
+               a = (mo_type != "UHF" ? "" : "a")
+           fname1 = Dialog.save_panel("Cube file name for #{alpha}MO #{n}", dir, basename + "_#{n}#{a}.cube", "Gaussian cube file (*.cube)|*.cube")
+               if (mo_type == "UHF")
+                 fname2 = Dialog.save_panel("Cube file name for beta MO #{n}", dir, basename + "_#{n}b.cube", "Gaussian cube file (*.cube)|*.cube")
                end
-               filenames.push([n, fname])
+               filenames.push([n, fname1, fname2])
          }
          filenames.each { |pair|
            n = pair[0]
-           show_progress_panel("Creating cube file for MO #{n}...")
-               cubegen(pair[1], n, origin, dx, dy, dz, nx, ny, nz, true)
+               alpha = (mo_type != "UHF" ? "" : "alpha ")
+           show_progress_panel("Creating cube file for #{alpha}MO #{n}...")
+               if pair[1]
+                 cubegen(pair[1], n, origin, dx, dy, dz, nx, ny, nz, true)
+               end
+               if pair[2] && mo_type == "UHF"
+                 set_progress_message("Creating cube file for beta MO #{n}...")
+                 cubegen(pair[2], n, origin, dx, dy, dz, nx, ny, nz, true, true)
+               end
            hide_progress_panel
          }
        end
@@ -274,7 +286,7 @@ end_of_header
                item(:textview, :width=>280, :height=>80, :tag=>"list", :editable=>false),
                nil,
                [ item(:button, :title=>"Update",
-                       :action=>proc { |it| 
+                       :action=>lambda { |it| 
                          list = Dialog.list_remote_files(value("host"), value("directory"))
                          set_value("list", list)
                        }
@@ -285,7 +297,7 @@ end_of_header
                item(:textfield, :width=>280, :height=>20, :tag=>"local"),
                nil,
                [ item(:button, :title=>"Choose...",
-                   :action=>proc { |it|
+                   :action=>lambda { |it|
                          dir = Dialog.open_panel(nil, nil, nil, true)
                          if dir
                            set_value("local", dir)
@@ -420,7 +432,7 @@ end_of_header
        hash = Dialog.run("Show Graphite") {
       layout(1,
            item(:checkbox, :title=>"Show graphite", :tag=>"show_graphite", :value=>(flag ? 1 : 0),
-                 :action=>proc { |it| set_attr("graphite", :enabled=>(it[:value] == 1)) } ),
+                 :action=>lambda { |it| set_attr("graphite", :enabled=>(it[:value] == 1)) } ),
            item(:text, :title=>"Number of graphite rings for each direction:"),
            item(:textfield, :width=>120, :tag=>"graphite", :value=>n.to_s, :enabled=>flag))
        }
@@ -430,6 +442,11 @@ end_of_header
        end
   end
   
+  #  DEBUG
+  def cmd_test
+    $test_dialog = Dialog.new("Test") { item(:text, :title=>"test"); show }
+  end
+  
 end
 
 register_menu("Assign residue...", :cmd_assign_residue)
@@ -442,3 +459,4 @@ register_menu("Load remote...", :cmd_load_remote)
 register_menu("", "")
 register_menu("Delete Frames...", :cmd_delete_frames)
 register_menu("Solvate...", :cmd_solvate)
+#register_menu("cmd test", :cmd_test)