Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

「ファイルの場所をエクスプローラーで開く」追加 #549

Merged

Conversation

berryzplus
Copy link
Contributor

概要

タブメニューに「ファイルの場所をエクスプローラーで開く」のメニューを追加します。(issue #420)
2018-10-14 5

利用方法

メニュー追加は初期設定に対して行っています。
この対応が導入済みのバイナリをクリーンインストールする場合に追加作業はありません。
既存のsakura.iniを使う場合には共通設定「カスタムメニュー」を変更して使える状態にします。

2018-10-14 6

カスタムメニューの右上にある「選択」から「タブメニュー」を選んでください。

2018-10-14 7

右側ペインにある一覧がカスタムメニューの設定内容になります。
左側ペインに機能カテゴリごとのコマンド一覧があるので、「ファイルの場所をエクスプローラーで開く」を選択して右側ペインにコピーします。
2018-10-14 4

課題

  • メニューの名前が長すぎて他メニューと並べたとき違和感があります。
  • メニューの名前が長すぎてカスタムメニュー設定の表示が見切れています。
  • メニューアイコンが未作成です。
  • ヘルプの実装がやや微妙です。

その他

「無題」の状態で「ファイルの場所をエクスプローラーで開く」のメニューが非活性になるのは仕様です。「無題」はファイルパスが確定しておらず「ファイルの場所」がないためです。

ステータス

機能として問題なく利用できそうに思いますのでこのままマージ可能です。

@berryzplus berryzplus added the enhancement ■機能追加 label Oct 14, 2018
@berryzplus berryzplus force-pushed the feature/open_folder_in_explorer branch from 6dfe600 to 84d8ae0 Compare October 14, 2018 10:51
Copy link
Member

@m-tmatma m-tmatma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

help/sakura/sakura.hh が削除されてますが
操作ミス?

@@ -2260,6 +2260,7 @@ BEGIN
F_VIEWMODE "View Mode"
F_PROPERTY_FILE "File Property"
F_PROFILEMGR "Profile Maneger"
F_OPEN_FOLDER_IN_EXPLORER "Open Folder in File Explorer"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in File ExplorerFile は余計だと思います。
Explorer で固有名詞だと思う。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vs2017のソリューションビューでプロジェクトを右クリックした時に出るメニューに合わせました。

あんまりこだわりないですが、既存ソフトで使われている文言に合わせたいです。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vs2017 でタブで右クリックすると Open Containing Folder と表示されるみたいです。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows Explorer と Internet Explorer という使い分けがあると思いました。 けれどエクスプローラー(Explorer)がファイラを指すことに疑問の余地はないとも思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ぼくが言ったのこれね。エクスプローラービューでプロジェクトを右クリックしたメニューの下の方にでるやつ。
2018-10-15 7

@m-tmatma さんが言ってるやつこれね。ファイルタブの右クリックで出るやつ。
2018-10-15 8

Windows Explorer と Internet Explorer という使い分けがあると思いました。

そうなんですよね。日本人が「エクスプローラー」と呼んでるものの正式名称は Windows Explorer なんです。MSの中の人が何故 File Explorer という文言を使ったのかは謎です。

@m-tmatma
Copy link
Member

help/sakura/sakura.hh が削除されてますが

sakura_core/sakura.hh というファイルもありますね。
これって重複して登録されているのですか?
だとしたら、この PR で削除するのではなく別 PR にした方がわかりやすいと思います。

@m-tmatma
Copy link
Member

タブメニュー だけでなく、文章を編集するウィンドウの中で右クリックしたときも
表示するようにしていただけますか?
タブを表示しない設定のときも簡単にアクセスできるようにするためです。

@m-tmatma
Copy link
Member

sakura_core/sakura.hh というファイルもありますね。
これって重複して登録されているのですか?

4c25594 のコメントに書いてますね。

この修正はこの PR に混ぜない方がいいです。

@berryzplus
Copy link
Contributor Author

あとで開発環境保守系のコミット2件を別PRに分けときます。

右クリックメニューの話、初期設定を入れるのは簡単なので後でやっときます。どこに?のご希望があればどうぞ♪

だいぶごちゃごちゃしてるので人によっては設定で削ってそうですが 😭

@berryzplus
Copy link
Contributor Author

#554#555 マージ後のリベース待ちです。

@beru
Copy link
Contributor

beru commented Oct 15, 2018

ファイルの場所をエクスプローラーで開く が長すぎる場合は ファイルの場所のフォルダを開く とかにするのが良いと思います。

タブメニューに追加した項目にアイコンが設定されていないのが気になりました。

@m-tmatma
Copy link
Member

#554#555 マージ後のリベース待ちです。

マージしました。

@m-tmatma m-tmatma added this to the next release milestone Oct 15, 2018
std::wstring strFolder(GetDocument()->m_cDocFile.GetFilePath());
::PathRemoveFileSpec(&*strFolder.begin());

auto hInstance = ::ShellExecute(GetMainWindow(), L"explore", strFolder.c_str(), NULL, NULL, SW_SHOWNORMAL);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

explorer.exe /select,パスSHOpenFolderAndSelectItemsを使う方がファイル数が多い場合に便利かもしれません。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

処理を共通化してどこかに外出しする場合には有用だと思います。
ここは開いているファイルの親フォルダを開く処理なので、対象は0 or 1です。
対象が0のときはエラーにしてしまうので、実質は対象が1つの場合専用の処理になります。

ただ、SHOpenFolderAndSelectItems を使った場合の「付加効果」は意外と魅力的で、やや悩みます。

Copy link
Contributor

@ds14050 ds14050 Oct 17, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

explorer.exe /select,"path" というのも、フォルダを開いてファイルを選択するという意味です。「ファイルが多い」というのは、開いたフォルダにファイルが多くてエディタで開いているファイルがそこに埋もれることを指していると思います。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ファイル場所を開く」のだから、開いた場所ファイルが選択されているのは、まったくもって自然なことです(力説)。

@berryzplus berryzplus force-pushed the feature/open_folder_in_explorer branch from 84d8ae0 to 7acf650 Compare October 16, 2018 15:56
日本語: ファイルの場所を開く
英語: Open Containing Folder
メニュー: 「ファイルの場所を開く」
挿入位置: 右クリックメニュー最下部、プロパティの上。
@berryzplus
Copy link
Contributor Author

メニュー名を変更してリベースしました。

@KageShiron さんの提案への賛同が多い場合はこのPRに含めてしまおうかとも思います。
(ファイルの場所を開く、ではなくて、ファイルの場所を開いてファイルを選択する、にする)

当初と意味が違ってしまうので分けたい感じなんですけどね。

@berryzplus
Copy link
Contributor Author

修正量も少ないですし、該当ファイルを選択する仕様の方が良さそうなので後でコミット積んでおきます。

@@ -233,6 +233,7 @@ BOOL CViewCommander::HandleCommand(
case F_BROWSE: Command_BROWSE();break; /* ブラウズ */
case F_VIEWMODE: Command_VIEWMODE();break; /* ビューモード */
case F_PROPERTY_FILE: Command_PROPERTY_FILE();break; /* ファイルのプロパティ */
case F_OPEN_FOLDER_IN_EXPLORER: Command_OPEN_FOLDER_IN_EXPLORER();break; /* ファイルの場所をエクスプローラーで開く */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

スタイルに関する話ですが、
: ~ Command_OPEN_FOLDER_IN_EXPLORER の間はこの関数の他の場所に合わせて
タブの方がいいと思います。

メニュー名だけでなく、ソースコードのコメントも修正しておく。
ヘルプ内の項目名に変更を適用。
説明文は「ファイルの場所をエクスプローラーで開く」とした。
変更前) ファイルの場所を開く
変更後) ファイルの場所を開いてファイルを選択
LPCWSTR pszDocPath = GetDocument()->m_cDocFile.GetFilePath();

// Windows Explorerの引数をいれるバッファは固定サイズで用意しておく(かなり多め1.5倍)
WCHAR parameters[MAX_PATH * 3 / 2];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

固定長バッファにしなくても、CNativeW CNativeW::AppendStringF
使えばいいと思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここもう少し洗練させたいと思ってます

いま必ず二重引用符付ける風ですが、二重引用符は必ずしも要らんので

@@ -1207,6 +1209,7 @@ bool IsFuncEnable( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, EF
case F_BROWSE: //ブラウズ
//case F_VIEWMODE: //ビューモード // Sep. 10, 2002 genta 常に使えるように
//case F_PROPERTY_FILE: //ファイルのプロパティ // 2009.04.11 ryoji コメントアウト
case F_OPEN_FOLDER_IN_EXPLORER: //ファイルの場所を開く
return pcEditDoc->m_cDocFile.GetFilePathClass().IsValidPath(); // 現在編集中のファイルのパス名をクリップボードにコピーできるか
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1213行目のコメントは F_COPYPATH に対するものですか?
それで機能拡張が繰り返されて、1213行目が複数の nId に対して呼ばれるようになっているのですか?

Copy link
Contributor Author

@berryzplus berryzplus Oct 18, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yesです。
誤解のないようにコメント削った方がいいかもです。

c++では複数のIDに対して同じ処理を行わせるためにbreak;を書かずにcaseラベルを並べることができます。既存コードが複数IDを処理するこうぞうになってたっぽいので乗っかりました。

switch文の書き方にも流派があるらしいです。
途中で宗旨替えしたパターンかな。

@@ -2252,6 +2252,7 @@ BEGIN
F_VIEWMODE "ビューモード"
F_PROPERTY_FILE "ファイルのプロパティ"
F_PROFILEMGR "プロファイルマネージャ"
F_OPEN_FOLDER_IN_EXPLORER "ファイルの場所を開く"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

細かいですが、2252行~2254行目はインデントがスペースなので合わせた方がいいと思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

指摘ありがとうございます。
後で修正します。

別件ですがrcの書きっぷりが全体的に非標準なので見直しかけたいです。

重複文字列リソースとか、明らかに変なリソースとか、色々課題があるので。

@@ -2257,6 +2257,7 @@ BEGIN
F_VIEWMODE "View Mode"
F_PROPERTY_FILE "File Property"
F_PROFILEMGR "Profile Maneger"
F_OPEN_FOLDER_IN_EXPLORER "Open Containing Folder"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらも sakura_rc.rc と同様

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

うえにおなじ。

周囲の記述に合わせて空白に変更。
MAX_PATHを使ったバッファサイズ決め打ちをやめ、やりたいことが分かるように記述を組み替え。
@berryzplus
Copy link
Contributor Author

単に一回の 書式指定で文字列を整形した方が効率が良く、わかりやすいと思います。
また、ダブルクオートも常につける方が、
シンプルで、メンテもしやすくて、実行効率もいいと思います。

この方法で修正しました。

@berryzplus
Copy link
Contributor Author

berryzplus commented Oct 20, 2018

事実誤認。

2018-10-20 2

英語版explorerの正式名称は File Explorer で正しいっぽい・・・:sob:

Copy link
Member

@m-tmatma m-tmatma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます。

@m-tmatma m-tmatma merged commit 25ce975 into sakura-editor:master Oct 20, 2018
@berryzplus
Copy link
Contributor Author

あざーす。

完成品キャプチャ作ったので貼っときます 😄
2018-10-20 4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement ■機能追加
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants