2009/05/04

SIGMA PhotoPro3.5 そにょ3・・・


なんか また、揚げ足取りなどww

1つめ、現像進捗ウィンドウ、表示位置記憶せず。
SPP2.5では出来たのだ。何故に この程度の処理を省いたのやら(´ヘ`;)


で、2つめ、最初の紹介ログで触れた、コマンドラインパラメーター絡み。
テストの方法と結果、そして残念な問題点など後述しよう。

最初に大前提として、ショートカットファイルでのテスト。
コチラで機能しないなら、コマンドラインどころのハナシではない。

SIGMA PhotoPro3.exeのショートカットを作成し、リンク先の記述、
"C:\Program Files\SIGMA\Photo Pro\SIGMA PhotoPro3.exe" に続き、
スペースを挟んで、対象フォルダをフルパス記述(当然、ダブルクォーテーションで囲む)し実行。

次に、同様にコンソール・・・ 判ってると思うが、要はDOSプロンプトでのテスト。
カレントディレクトリをSPPのインストール先に切り替えて、テスト開始・・・

って、ココで思わぬシッペ返しw SPPの実行ファイルの名称が、ソコソコ長い上に、
実行ファイル名の途中にスペースがあると云った、SIGMA開発陣の変わった名称の付け方に起因して、
そのままでは実行できないと云う罠が(^_^;

 DOS(16bitWin向けやコマンドライン)アプリとか組んだことねぇんだろうな・・・(´ヘ`;)
 FAT32以降、ファイルの名前付けが緩和されたってのも、時間が経つと良し悪しだな・・・
 ジェネレーションギャップかよ(-_-;)

なので実験の為、スペースまでの文字を排し、PhotoPro.exeに変更し問題を回避、
フォルダをパラメータとして指定し実行。


★ いずれの結果も、指定した対象の上位フォルダまでは、開くことが出来た。

で、そもそも、コイツは、ナゼ1つ上のフォルダまでしか処理できないのか?
原因は結構簡単で、マトモなプログラマなら、ファイル名まで指定したテストで原因が判る。

ツマるトコ、本来は、フルパス指定のX3Fファイルを開く為にしか、パラメータ指定を機能させるつもりが無いのだ。
SPP(エクスプローラ部)へは、ParentFolderまで開くよう指示を出し、パラメータ記述上最右にあたる部分は、
無条件にファイルであるとして扱われ、ファイルの有無を確認後、SPPの画像エディタ起動の為に投げる構造だ。

その為、フォルダのみをパラメータとして実行すると、開きたいと思って指定(ないしドロップ)したフォルダは、
当然のように、パラメータの一番右側に記述されているワケで、上記の様にしか動かないプログラムなら、
ソコには全く無条件で、ファイル名が指定されているものとして動作、
フォルダビューオブジェクトには、ParentFolderまでのパスしか渡らない。

コレがVBScriptの冒頭処理なら差し詰め
    Public My, Parameters, MySh, Fs     
Set My = WScript
Set Parameters = My.Arguments 'パラメーター取得
If Parameters.Count = 0 Then
ElseIf Parameters.Count > 1 Then
RootPath = Fs.GetParentFolderName(strParameters)
Else
End If
ってトコ・・・ こんな処理では、肝心なフォルダが開けなくて当然だ。
複数パラメータにも対応できん、普通のプログラマならマズやらん行為だな・・・

本来なら、現像もコマンドライン実行できるように、
    Public My, Parameters, MySh, Fs, Control     
Set My = WScript
Set Parameters = My.Arguments 'パラメーター取得
If Parameters.Count = 0 Then
ElseIf Parameters.Count > 1 Then
Dim arTargets(Pc)
'ないし・・・
'Dim strTarget, arTargets
For Each strParameters In Parameters
Extention = Lcase(Fs.GetExtensionName(strParameters))
If Extention = "" Then
If Fs.FolderExists(strParameters) Then
ReDim Preserve arTargets(Pc)
arTargets(Pc) = strParameters
Pc = Pc + 1
'ないし・・・の続き
'If strTargets = "" Then
' strTargets = strParameters
'Else
' strTargets = strTargets & "," & strParameters
'End If
End If
End If
Next
'ないし・・・の続きの続き
'arTargets = Split(strTargets,",")
Control = "Development"
Else
Control = "Open"
End If
と云った具合にするだろう・・・ フォルダ内の対象ファイル一覧化部分など、結構省いてあるが、
これ以上書き込むと判り辛くなってしまうので避けた。面倒だしw

つか、コレと等価で似たような動きを実際に持つスクリプトを、過去ログで再三描いているのだよ(´ヘ`;)
近々では、MultiReplacedRename.vbs辺りが参考になるだろうか。

んで、SPPのショートカット、ないし、実行ファイル(SPP本体)に、
フォルダやファイルをドロップ、ないし、上記テストで利用したような
簡単なショートカットファイルを用意しクリックしたとする。
要は、パラメーターつきで実行されたと云うコトだ。

まずは、上記サンプルのように、パラメータの有無や数で、最初の分岐を組むだろう。
その後、その内容が、多数の対象を扱うのか、単独の指定なのかを調べ分岐、
更に、それらがファイルを表しているのか、それともフォルダなのかを確認し分岐する。

いずれの開発環境だろうと、コマンドラインパラメータを含むArgument他オブジェクトを
配列として利用して ForEach-Nextで処理できる簡単な手順だ。

何が問題かと云えばココ。
この程度の処理すら省いてプログラムを組むなどと云うのは、悪いが聴いた事が無い。
初歩の初歩だ。手抜きと云うにも度が過ぎている。

ヒマ人がテキトーに描いたスクリプトを公開しているのとはワケが違う(自爆)・・・
という認識が、SIGMAのSPP開発陣にはあるのだろうか?


現像部や 全体の贅肉の削ぎ落とし具合など、かなり改善されているだけに、実に惜しい状態と云えるだろう。
いっそのコト、OpenSourceにして、ユーザーに改良を委ねるのも、一つの方法だと思うが、どうだろうか?
コミュニティとウマく付き合いさえすれば、コストを掛けずに改善され、良いほうへ向くと思うのだが・・・
<SIGMA PhotoPro 2.5 3.5 欠点 粗捜し>

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。