システム ファイル マネージャーからダブルクリックしたときにファイルを開きたい単純なテキスト エディターがあります。
Ubuntu Linux (13.04) では問題なく実行できましたが、Mac OS X ではコードが機能しませんでした。
--args
少し調べたところ、引数を解析するには、端末に引数を追加する必要があることがわかりましたmain()
。
コードを修正し、アプリケーション バンドルが端末からファイルを開くことができるようになりましたが、Finder でファイルをダブルクリックすると (アプリを選択すると)、端末引数を受け取っていないかのようにアプリケーションが起動します (新しいファイルを作成します)。
main()
関数のコードは次のとおりです。
int main(int argc, char *argv[])
{
QApplication MyApp(argc, argv);
Textpad.setApplicationName("MyApp");
Textpad.setApplicationVersion("0.7.2");
Textpad.setWindowIcon(QIcon(":/app-icon/48x48/icon.png"));
MainWindow *Window = new MainWindow();
QString Arguments;
QString FileLocation;
if (argc != 1) {
int i;
for (i = 0; i < argc; i++)
Arguments = argv[i];
// Check if the OS is Mac OS X (Mac OS X is 3)
if (Window->CheckOS() == 3)
// Remove the "--args" so that we don't confuse it with the file location
Arguments.replace("--args", "");
if (Arguments == "--help") {
// Show help
}
// Create a new file when Textpad is launched normally (under Linux)
if (Arguments == "%U") {
FileLocation.clear();
// Load settings and create UI
Window->Initialize();
// Open the requested file
Window->LoadFile(FileLocation);
}
else {
FileLocation = Arguments;
// Load settings and create UI
Window->Initialize();
// Open the requested file
Window->LoadFile(FileLocation);
}
}
else {
// Create new file
FileLocation.clear();
// Load settings and create UI
Window->Initialize();
// Open the requested file
Window->LoadFile(FileLocation);
}
return MyApp.exec();
}
前に言ったように、次のように書くと、アプリケーションは端末から問題なくファイルを開きます。
open MyApp.app --args <location of my file>
しかし、Finder からファイルを開こうとすると失敗します。
私は何が欠けていますか?
前もって感謝します。