Code Monkey home page Code Monkey logo

examples-electron's Introduction

examples-electron's People

Contributors

akabekobeko avatar borewit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

examples-electron's Issues

音楽プレーヤー UI を実装する

音楽プレーヤー UI を実装する。ウィンドウ上部に固定され、以下のコントロールを持つ。

  • Play/Pause button
  • Previous music button
  • Next music button
  • Volume slider
  • Playtime seek bar
  • Playtime text
  • Duration text
  • Metadata ( title, artist, ...etc ) text
  • Add music button
  • Remove music button

Remove the AppContext dependence of RendererIPC

Remove the AppContext dependence of RendererIPC.

export default class RendererIPC {
  constructor( context ) {
  }
}

RendererIPC is not dependent on a specific AppContext. Should be a simple IPC message handler.

Implement the load and display of the jacket image

Implement the load and display of the jacket image.

  • The load image is output as a file
    • Using a SHA-1 hash value for the unique file name
    • e.g. 124a4bfb4ad90d4d8340f109c6185e0f405694f3.jpg
  • Image save in userData / images
  • Display the image to the left of the player UI

Windows 版パッケージにバージョン情報リソースを含める

Starter として、なるべく本番に近い構成にしておくと手直しが少なくて済むので、パッケージ生成 npm-scripts でバージョン情報リソースも含めておく。

会社名などは Sample Inc. でよい。example.com みたいにサンプルとして使用することが共有されている名前があれば、それにしたい。

アイコンの背景を透過する

透過していたつもりが、そうなっていなかったので修正する。iDraw で元 PNG 生成した時点でおかしかったのかも。背景色に白が指定されていた可能性あり。

Change "disk" to "disc"

Value named originally "disc" is in the "disk". This is because it has followed the musicmetadata.

To fix to the original "disk" and because it causes confusion.

npm を更新する

v1.0.2 リリースにあわせて npm の更新と動作確認を実施する。

リリース用ビルドから Debug 用メニューを外す

現在、リリース用ビルドで生成されたパッケージにもメイン メニューに Debug があり、Renderer の Reload や Debugger 表示を実行できてしまうので、これを外したい。

開発中は有効にして、リリース時はコード自体を削除する。コードが残っているとなにかの拍子に表示されてしまう可能性がある。

いわゆるコンパイル スイッチ的なことが Browserify で実現可能か調べる。ifdef DEBGU 的なものは uglify-jsで顧客とのアプリ確認をもっと楽に! : アシアルブログ のような方法もあるが、開発中に watchify ごとに uglify するのが非効率そうで v1.0,0 では却下したという経緯がある。

electron-starter を作成する

Electron アプリ開発の基盤環境となるプロジェクトを作成する。設計方針は以下。

  • 環境設定は package.json に集約
  • electron-packager によるパッケージ生成に対応
  • AltJS = ES6 & React JSX
    • browser/renderer プロセスの両コードを ES6 で実装可能にする
  • AltCSS = Stylus
  • AltJS/AltCSS のファイル監視と自動コンパイルに対応
  • ESDoc によるコード ドキュメント出力対応
  • ...etc

音楽プレーヤーのサンプルを実装する

NW.js で実装した examples-nw/audio-player を Electron に移植する。

音声ファイルのメタデータ読み込みは Main プロセス、再生などは Renderer といった設計分離のサンプルとしてよさそうなので。NW.js のように ffmpeg 組み込みが必要か?など環境面も調査する。

あと NW.js 版では音声ファイルのバイナリ読み込みとデコードも Web Audio API で実装したが、この方法だとメモリ一括展開となるためロスレス AAC のように巨大なファイルでエラーになる。これを防ぐため AudioContext.createMediaElementSource() を試す。

Implement the Artist/Album list

Implement the Artist/Album list.

  • Show artist list on the left side
  • Display the image of the top album that belong to the artist
  • Show below the album list
    • Album image
    • Album title
    • Release year
    • Music list ( playback state, title, duration, ...etc )

IPC のハンドラ名を共通の定数にする

IPC のハンドラ名は Main/Renderer プロセス間で共有される。また現在のプロジェクト構成では src/js/common/ に共有スクリプトを配置するよう設計し、既に Util クラスを共有している。

以上を踏まえ、ハンドラ名を定数化して src/js/common/ 内へ定義し、それを共有するように実装する。これは IPC のサンプルとしてもよい設計となるはず。

アイコンを小さくする

サンプルのアイコンにおける下地の円が大きすぎるので、OS X 標準の App Store アプリぐらいのサイズへ縮小する。

Windows 版パッケージ生成でアイコンを設定する

electron-packager としては --icon オプションに .ico ファイルを指定した場合、Windows 用のアイコン設定がおこなわれるはずだけど、現在の Starter に含めたファイルだとエラーになる。

これを解決し、アイコンを設定したい。

Implement audio visualizer

Implement audio visualizer.

  • Frequency spectrum of an audio can be referenced from AudioPlayerStore.spectrums property
  • What should be the location where you want to display?
  • Display method is good both Canvas and React compnent?

音楽リストを実装する

音楽リストを実装する。データ管理と UI が対象。NW.js 用サンプルを踏襲しつつ、可能なら固定ヘッダーのテーブルにしたい。

Main プロセスのビルド設定を Node モジュール用にする

audio-player の #22 対応で musicmetadata を Main プロセスから実行したところ例外が起きた。

原因を調べたところ package.json の browser フィールドにスクリプトが指定されていた場合、Browserify の bundle 時における require ではそれが Web ブラウザ向けのエントリー ポイントとして扱われるとのこと。

このため bundle された musicmetadata は Node モジュールとして動作せず、結果 window オブジェクトが見つからないという例外が発生する。

通常の Node モジュール、つまり package.json の main フィールドをエントリー ポイントにする場合は --node オプションを指定して browser フィールドを無視する必要あり。

Main プロセスは Node モジュールとして動作することが期待されるため、electron-starter の当該ビルド設定も修正しておく。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.