hakeの日記

Windows環境でプログラミングの勉強をしています。

ファイル選択ダイアログの作成 その2

Ruby/Qteの勉強 昨日のつづき

シンボリックリンクを介したディレクトリ移動で親ディレクトリに戻るときに上手くいかない件について、よくよく考えたらディレクトリを移動する度にDir.pwdでパス情報を新規に取得しているから上手くいかないことに気がついた。そこでDir.pwdの代わりにFile.joinとFile.splitを使用して今までのパス情報に追加/削除して新しいパス情報とするように、メソッドselectFileを修正。

def selectFile(item)
  if !item.nil? then
      @file = item.text(0).local8Bit.to_str
      pwd1 = File.join(@pwd, @file)
      if @file == ".." then             #親ディレクトリへ移動
          @pwd = File.split(@pwd)[0]
          Dir.chdir(@pwd)
          listFile(@pwd)
          @file = nil
      elsif File.directory?(pwd1) then  #子ディレクトリへ移動
          Dir.chdir(pwd1)
          @pwd = pwd1
          listFile(@pwd)
          @file = nil
      else
          @ebox.setText(tr(@file))      #ファイル選択時
      end
   end
end