スクショを載せるたびに違うものみたいな感じもあるのですが、Tauri で一つ上手くいくと安心して次をやる気が少しなくなる、の続きです。
<!-- ネコ蒲団君画像が懐かしいですが、アプリのテスト用に当時目のつくところにあった画像を適当にまとめてあるので、テストにはネコ蒲団君とBBRの画像が多く登場するのです。-->
もうすぐ妥協版である機能限定版が完成するかと思っていたのですが、途中で中断して後回しになっていたことが色々とあるので、なかなか完成しないというか。
中断した部分を作っていたのもかなり前なので、何をどこまで作っていたのかとか、それを思い出すところから始めないといけなかったりするのです。
上のスクショはスライドーショー中の画像なのですけど、画像リストの枠をウィンドウっぽく移動出来るようにするところまで完了。
というか、ウィンドウっぽくするというのはJavaScriptで作ってるアプリならでは、かも知れませんけど。こういう作業は結構やってきたので、コツを掴んでいる感じがしているのです。
というか、ピンクのラインとか、水色の四角は何なのか?っていう感じですが、あれがウィンドウっぽくなってる部分で、ピンクのラインが移動させる時にクリックする部分で、水色の四角が閉じるボタンだったり。
これは最終的にはちゃんとウィンドウっぽくなるように変えるのですが、ちゃんと機能するのが解るまでは解りやすい色分けになっておるのです。
ついでに書くと、アプリ名も変わっているのですが、これから良いのが思い付かないとこの怪しいアプリ名で決定という事になってしまうのです。
もうワケが解らないですが、Tauri で新しくウィンドウを作成して直後にそのウィンドウに emit しても反応がないというやつの続きです。
原因はスクリプトなどが全部読み込まれる前に emit しているからということは解ったのですけど。
そういう時には window.onload とか addEventListener で load とかで上手く行くはずと思ったら、なぜか load でスクリプトが動かないような。
私の書き方が間違っているのか、あるいは Tauri では使えないということなのか。
ならば一秒待つやつの次にダメそうな感じで、スクリプトの一番最後で新しいウィンドウから元のウィンドウにemitするとかでどうなるか?と思って試してみたら。
上手くいく時と行かない時があるのです。
何故かと考えてみたら、emitを受け付けるための listen というのが await なので、listenが終わる前にemitでやり取りしようとして上手くいってないということでした。
ということは listen の await が終わったタイミングでウィンドウ間のやり取りをするようにすれば良いに違いない。
<!-- ここまで書いて思ったのですが、この文章は中途半端な機能の機械翻訳みたいですけど、ちゃんと私が書いてますよ。-->
ということで、書いている内容は全然伝わらないと思いますけど、新しいウィンドウとやり取りが出来るようになったので、保存したファイルを開く!や、選択した項目から新しいカタログを作る!が出来るようになったのです!!
なんというか、普通のやり方で出来ないと無理と思ってしまいますけど、意外となんとかなることもある、という感じで。
こういうのはパズルみたいで面白いと思います。(ただし上手くいった時に限る、という感じですが。)
これで多分タウリン500mgにはなったと思います。(ここまで約7ヶ月...。)
エミットの過去分詞は emitted なんですけど、なんとなくエミットゥンって書きたくなってしまう、ということはどうでも良いのです。
ちょっと前にTauriでエミットを使えばやりたいことが出来るようになるに違いないと書いたアプリの続きですけど。
新しいウィンドウの作成に成功したら次の処理をする、という書き方が用意されていて、それを使えば簡単だ!と思ったのに上手くいかないとか。
どうやら、ウィンドウは作られているけどまだその他のスクリプト等がロードされる前に成功のお知らせが来てしまって、そのタイミングで emit しているので、新しいウィンドウでは受け付けてくれないということのようです。
間に、タイマーで一秒待つとか入れたり、ウィンドウを作成してから、別のボタンのクリックで emit とかすると上手くいくということで、原因はそれに違いないのですけど。
二日がかりでやっと原因が解ったものの、解決法が思い浮かばないのです。
というか、タイマーで一秒待てば良いんじゃないか?ということですが、これは一秒でロードが終わるという保証がないということで、やってはいけないことですし。
まあ、最悪やっても良いような感じもありますが、あまりにも初心者っぽくて恥ずかしいので出来ないのです。
ということで、タウリン大ピンチ!ということになっているのです。
もう完全にタウリンが人扱いになっているTauriで何かを作ってるやつの続きですが。
別のウィンドウとあれこれする時に emit というのが使えるというのが解ったのですけど。
エミットだったら関連する変数にエミッションを使おう!とか思ったら、エミッションはエミットの名詞ではなかったことに気付いたのです。
emit と emission でつづりはけっこう違うのでうすけど、意味は似てるんですよね。なのでありがちな間違いかも知れませんけど。
やっぱり、こういうことがないように中途半端にカタカナで覚えないで、ちゃんとアルファベットの表記で覚えないといけないとか。
ここでカタカナ語批判しても意味がないですが。
それはともかく、emit を上手く使えれば、出来ないと思っていたウィンドウ間のドラッグアンドドロップは...、やっぱり出来ないですが、別の方法で同じ内容の動作が出来そうな気がするのです。
ついでに書くと、インデックスをファイルに保存して、それを開くというのもなんとかなるんじゃないか、という感じですし。
これが出来ると、かなり進むに違いないのですけど、間にRustが入るので、なんかややこしいのです。
<!-- というか、やっぱりJavaScriptを使うってことは、ウェブアプリっぽい作りの方がやりやすいのかなあ、とか今更思い始めていますけど、もう遅い。-->
昨日は作業をしていたので起動した状態のついでに使ってみたTauriで作ってるアレの続きですが。
今日はファイル名を一括で変更するのが使いたくて、わざわざ起動されてしまいました。
起動といっても、開発段階でコードの状態からコンパイルみたいなことをしているので、けっこう時間がかかるのですけど。
でもファイル名の変更が楽に出来ることを考えると待つ価値はあるとか。
さっきの遠足記事の画像ファイルですけど。
上の方が元のファイル名で、下がRestHouse用の書式にしたがったファイル名ということです。
<!-- 本当は元の名前と新しいのが横に並ぶ予定なのですけど、それは最後の仕上げということです。-->
日付部分はテキストで追加することも出来るのですが、dateコマンドのフォーマットで"%y%m%d"みたいなことも出来るというこだわりポイント。
こだわりというか、目指しているMedia Proにもそんな感じのがあったのですけど。
なんだか、昨日やったことと、今日のこれだけで十分という気もしてきたりして。
まだ追加しないといけないこともあるのですが、完成にしたくなってきてしまいます。
<!-- というか、これで完成で良いのだったらもっと早く出来ていたはずで、それは時間の無駄ってことになってしまうので、やっぱりちゃんと完成させるのです。-->
ということで、ホントはタウリンじゃなくてTauriなのにタウリンだし、最近は人の名前みたいな扱いになっている、の続きですけど。
テスト用に起動してたので、いつもの写真を読み込む作業をしてみたのです。
実際の作業をしてみるとかなり使いづらいですが、この辺の修正は次のバージョンという気がします。
でも、この表示されているリスト上で順番を並べ替えて、その順番で連番を付けてリネームが出来るというのは便利なのです。
上の写真は見て解るようにBBRニュース用ですけど。必ずしも撮影順に掲載されるワケではなかったりしますし。
あとは、OneDriveに保存してあるXbox Oneのスクショとかは、ファイル名にランダムな文字列が使われていたりするので、名前順に並べても撮影順にならないとかですし。
なので、自由に並び替えが出来るというのは良いことに違いないのです。
ついでに、出来なさそうでガッカリしているところもあるのですが。
新しいウィンドウを開いて、そこに元のウィンドウからファイルのドラッグアンドドロップって、普通のやり方だと無理なのに気付いてしまったのです。
何か画期的な裏技を発見するとか、あるいはRustの方で工夫したら出来るのか。
考えるのが面倒なので、これも次以降のバージョンでいいか。アハハ...。
なんで selected が使えないのか?ということになっていた Tauri だけで使えない予約語なんてあるのか?の続きですけど。
selectedという語には問題なしということが解りました。
ではselectedというクラス名が設定されているか調べると「ない」といわれる状態なのは何故か?ということになるのですが。
実は同じ場所に設定した別の関数でも似たようなことをやっていて。クリックすると一つ目の関数で一瞬だけ選択された状態になって、直後に別の関数によって選択が解除されていたので、selectedというクラス名も消されていたということですけど。
これは解りやすく説明するのが難しいというか。ここでプログラムに関することをどのくらい詳しく書いていいのかビミョーということでもありますけど。
とにかく、機能が多くなってコードが長くなってくると予期せぬエラーというミスも色々と発生するという感じです。
というか、今回直した部分って数カ月前に書いたところだと思いますが、すでにこの書き方はあまり良くないなあ、と思うところもあったりして、けっこうJavaScriptに詳しくなっている感じもあるとか。
それは良いのですが、一度に二つのことを同時進行とかあまり出来ないので、他のことが全然出来てないような感じでもあるので、早く一段落したいタウリンでもあるのです。
HTML要素のクラス名に selected というのを使っていたら、上手く動かなくなったような気がするのですが。
ということで、Tauriでアプリを作ってたら、前は動いていたものが動かなくなる、の続きですけど。
画像とかを読み込んで整理するアプリということなので、ファイルの選択は重要なのですけど。
読み込んだファイルをリスト表示して、選択する時にはselectedというHTMLのクラスを追加することにしていたのです。
それで、前はちゃんと動いていたのですが。
他のところを作った後でまた動作確認してみたら何故か上手く動かなくなってたり。
あるいは、実は前から変だったけど気付いてなかったのかも知れませんけど。
フォームで項目を選択するアレでもselectedっていうのは出てきたりするので、その辺も怪しいかも知れません。
試しにクラス名を変えてみたら上手くいったのですが。これまで上手く動いていたような気もしますし、理由も解らないまま全部変えて、あとから本当の理由に気付いたということだとモヤモヤしますけど。
なにより、選択された状態という意味ではselectedが一番解りやすいですし、変えたくなかったりもしますが。
他のところではselectedというクラス名はちゃんと使えてるので、さらに謎なのです。
<!-- こういう時は、単純で致命的な間違いを犯しているにことも良くあるとか。-->
ということで、時々Tauriで何を作っているのか解らなくなる、の続きですけど。
以前のスクショでテスト用のボタンだらけの状態だったのですけど、そろそろボタンを配置する場所がなくなってきたということで、メニューから色々と実行するやつを作ってみたのです。
とりあえず、最初は読み込んだファイルをインデックスから消すという"Delete"の機能。(その下はネタ用なので選択しても何も起きません。)
本当はテスト用のボタンで全部やって、最後にこのメニューを作れば良いと思っていたのですが、実際にやってみるとけっこう面倒だったりして。
しかも、ボタンにJavaScriptで機能を割り当てるのとはちょっと違う感じでもあったので、早めに試しておいて良かったという気もします。
それとは関係なく、けっこう出来てきたのに、修正するところが大量にあって、制作の速度がかなり落ちている感じもあるのですけど。
多分、ユックリでも続けていればそのうち終わるということに違いないので、少しずつやるのです。
そういえば、昔は電車の中でiPod touchとかで絵を描いて色々やっていたのですが。
久々にパソコンで絵を描いたらスゴく時間がかかって、やるって書いていたあれがなかなか出来なかったのですけど、やっと出来そうだということになってきたのです。
絵といっても色のついてない下書きみたいなやつですけど。
一度出来るようになったことでも時間が経つと全部忘れてしまうタイプなので、久々にやると時間がかかったりするようです。
まだ全部忘れてはいないので、一応前と同じぐらいの絵にはなってますけど。
上手く描くことを目的にしてない絵でもあるのでどうでも良いですけど。
多分明日とかから何かが掲載されるでしょう。
ということで、一瞬ゴールが見えたかと思ったら、色々やることを思い出してしまって完成しないアプリをTauriで作る続きですが。
一度出来たことになっていたファイルの移動機能で、新しいフォルダを作ってそこを移動先にするっていうのが、普通 open のダイアログだと出来ないのに気付いたのです。
でも、目指しているMedia Proではそれが出来ていた気がしますし、アレコレ調べても方法は見つからず。
自分でも色々試したら save のダイアログだと新しいフォルダを作成出来るのです。
ただし、saveだとファイル名を入力しないといけないとか、余計なことがあったり。
でも新規フォルダを作成出来ない方が問題ってことで、ファイル名までのパスを取得して、正規表現でファイル名だけを消すという荒技とか。
これは機能したのですが、やっぱりなんか変ということで、コメントアウトになってます。
それで他のアプリではどうなっているのか?ってことで調べてみたのです。
Media Proが使えなくなってからデジカメのファイルとかを整理するのに使っている ImageOne でファイルの移動をやってみたのですが。
いつもは、新しく撮った写真を選択して、パソコン側に日付をつけたフォルダを作ってコピーしているのですけど。
なぜかコピーしようとしても新しいフォルダを作るためのボタンがないような...。
少なくとも週に一回はやる作業なのですけど、いつもはどうやってフォルダを作っていたのか?ということになってきました。
しばらく考えてしまったのですが、フォルダを選択するダイアログが出てる時に[Command + Shift + n]を押してみたら、新しいフォルダを作成する新たなダイアログが出てくるとか。
いつもは無意識にやっていたのだと思いますけど、確認しながらやろうとするとこういうことを忘れたりするみたいです。
とにかく、open でも新しいフォルダが作成出来るのが解ったので、問題解決ですけど。
それとは関係なく、今Tauriで作っているのは Media Proがお手本なのですが、さっき登場した ImageOne というアプリは今作っているもののライバルという設定になっているのです。
ImageOneもまあまあ良いアプリなのですが、詰めの甘さみたいなのがあったりしますし。頑張ったら同等以上のものが作れそうな感じもあったりして。
<!-- どうでも良いことをミョーに長く書いてしまいましたけど。ポイントは[Command + Shift + n]で新しいフォルダを作成出来るというところです。Macの他のアプリでも同じかも知れないので、覚えておくと何かが便利になるかも知れません。-->
<!-- ついでに書くと、本当は「アプリ」じゃなくて「ソフト」って書きたいのですが、今風に「アプリ」って書いてみました。-->
まさか完成したのか?と思った人はいないと思いますが、一応完成させる気はあるTauriでアレを作りたいの続き。
一体何がきたのか?というと、一番最初の方に作った「読み込んだ画像を大きめに表示する機能」が、このやり方だと上手くいかない!ということに気付いてしまったということです。
でも、最近の私はミョーにJavaScriptに詳しくなっているので簡単に直せるとも思っているのですけど。
だたし簡単だと思っていたことがけっこう大変ということも良くあるタウリンシリーズなのでアレなのですけど。
最近作っていた一括でファイル名を変換するというやつも簡単なつもりが、機能別のコードの長さとしては一番長くなった感じですし。
それはともかく、最初の方に作ったやつと最近作ったやつが上手く噛みあわないみたいなのが出てくると、色々とイヤな予感がしてくるのですけど。
最初から全部計画的に作っていたワケではなくて、途中で「アレも作らないと」とかいうことに気付いて追加の機能とかになっているので、危険もいっぱいな感じです。
ついでに書くと、お手本になるはずのMedia Proというソフトですが、OSアップグレードで使えなくなってから時間が経ちすぎて、どういう仕様になっていたのかとか、かなり忘れてしまっているのですけど。
古い環境で起動出来るディスクとか作っておけば良かった、とか思っているのです。
[ タウリンに寿命を延ばす効果? ただしミミズとマウス、サルに限る - CNN.co.jp ]
やったー!と思ったのですが、良く考えたら私が頑張っているのはタウリでタウリンではなかったのです。
というネタですが、ついでに書いておくとまだミミズとマウスとサルに効果があっただけなので、タウリンのサプリメントの購入はお勧めしないと書いてあるので要注意です。
そして、だらだらしてきた感じもあるTauriで作ってるアレはいつになったら完成するんだ?ですが。
見た目が何のアプリだか不明になってきています。
一応、画像とかのファイルを管理するアプリってことで作っているのですが。
並んでいるボタンはテスト用なので、そのうちなんとかなるのです。
あと、書いたかどうか覚えてないですけど、最初はJavaScriptだけでなんとかなりそうなスライドショーの機能だけで試作しようと思っていたので、アプリ名が「theSlide」になっているのです。
でも、途中まで作ったら分けてやる方が面倒だと気付いたので、そのまま全部の機能を追加することになったのですが。
というか、これは何の記事なのか?という感じになっていますが。
タウリンのネタだけだとあれなのでTauriの経過報告も一緒にやったら意味が解りづらくなっているのです。