|
はじめに

WPFのWebBrowserコントロールは編集もできることを知りました。 サーバーがダウンしているとホームページの編集が出来ないので、FCKエディタをスタンドアロンで使えるようにしていましたが、置き換えができそうです。 以下の目標で作ってみます。
1.ページは独立したファイルではなくデータベースにあり目次階層を管理したい。 2.データベース中のページへのリンクなど参照を自動的に調整したい。 3.現状でテーブルの編集が思うようにならないが、セルの分割、結合など試行錯誤しながら編集できるようにしたい。
これから以下の点をメモしておこうと思います。
1.ボタンなどのコントロールを効率よく作るには 2.HTMLのテーブルの表現 3.WebBrowserコントロールに表示されているドキュメントの構造 4.WebBrowserコントロールから受け取るイベントの概要
 WpfFontViewer フォントビューア
ダウンロード:WpfFontViewer
フォントはパソコンやプリンタの付き物で、文書の作成側では制御できないものでしたが、フォントを埋め込んでも軽々と動作する時代になりました。 こうなると、フォントも文書を作る側の守備範囲のようです。
フォントファミリを選択するか、ttf、ttc、odttf ファイルを貼り付けてフォントファイルを開きます。 フォントを選んでXPSファイルを作ることができ、フォントのサブセットを作ることが出来ます。
特に数式で使われていた、フォントサイズを数倍も上回る大きな字形を、重ならないように表示することを工夫しました。

Silverlight の Unicode 一覧
フォントファミリーやフォントファイルを明示しない場合、「Portable User Interface」フォントが使われると言うことですがどんなものでしょうか。
左図をクリックするとSilverlightアプリケーションで作成したコード表が起動します。
Silverlightの場合、「Portable User Interface」を使うか、組み込みフォントを使う方法がとれますが、ブラウザ側のフォントを明示的に使うことはできないように思います。
U+1D400からの数学用英数字など、数式で必要な文字は含まれているようです。 Glyphs を TextBlock に置き換えても、充分表示できそうです。
XPS2XAML
- Silverlightアプリケーションの例(1)
- Silverlightアプリケーションの例(2)
- WPFアプリケーションの例
- XPS中のImageBrushとSilverlight
- XPSファイルでの座標
- GlyphsをTextBlockに置き換えることの問題点
ダウンロード:Xps2Xaml
文字列を縦方向に設定した場合の問題を改善して差し替えました。いずれ更新されると思います。(V1.0->V1.1)
作ったサンプルは、左図をクリックすると実行できます。
開発環境が Silverlight 3 になっているので、Linux はまだだと思っていたのですが、左図のように、Fedora、FireFox、Moonlight で動作します。
 ワードの出力もXMLになって、最終的な清書機械から、文書入力装置になるのだろうと思うのですが。 XMLは手ごわいので、XPSを変換するプログラムを作って見ました。 前回は、組み込みフォントを使う方法を試しましたが、今回は Glyphs を TextBlock に置き換えて見ました。 これで、左図のようにVisual Studio や Blend でも開けます。
使用目的に応じて、フォントやイメージの所在を変えられるようにしてからアップロードしようと思います。
Silverlightの場合の標準のフォントは何かも調べる必要があることも気が付きました。
XPS から XAML に変換したもののサンプルは、ここにあります。
XAMLファイルは、テキストですし、ブラウザでも開けます。ダウンロードするなり、ブラウザで開くなりしてください。
- XPS2XAML
- XPS中のImageBrushとSilverlight
(これを試していて気が付いたのは、XMLファイルではUnicode全体が使われる可能性があるわけですが、テキストエディタはBMP以外の部分を表示できないのが現状だと言うことです。Visual Studioも表示できません。□で表示されます。出力ウインドウも□になります。デザイン表示や実行時には正しく表示されます。見つけた、唯一正しく表示するエディタは、BlendのXAMLの編集窓です。)

ワードの数式をホームページに使えないかと言う試みです。 左図は、XAMLファイルをリンクしてあります。ブラウザで開くなり、ダウンロードして見るなりしてください。 この XAMLファイルは、ワードで文章を書き、XPSで保存して作成しました。XPS 中の XAML 記述から、フォントのパスだけを書き換えました。(Glyphs の FontUri) XAML はブラウザで直接開けますし、HTMLに埋め込むこともできます。
「SilverlightとWPFでのXPSファイルの表示」で、プログラムとして表示可能なのは試してみました。これを元に、ワードの数式をマークアップ記述のままブラウザで開くことを考えてみました。
XAMLを開く機能は1とつではなく、フォントの設定も差のあることに気が付きました。
- XAMLをコントロールにするのはだれか
- Loose XAML でのイメージ、フォント
- HTMLでXAML数式をホストして見る
- XPS中のXAMLの文字コード
- BMP外のUnicode

データベースの使い方のサンプルを作ろうと思って始めたことですが、図の描画でいくつかメモして置きます。
- マウスのボタンのイベントは、図形オブジェクトの上でのみ発生する。
図形オブジェクトの上かどうかは、Fill や Background にブラシが設定されているかどうかで判断されているようだ。 PolygonにFillを指定しない、Canvas に Background を指定しない、状態だと線上のみでイベント処理が呼び出される。 透明ブラシ、白ブラシでも指定があれば、面も図形オブジェクトらしい。
- ScaleTransform での拡大はビットマップとして拡大される。
Canvas に設定した ScaleTransform に倍率を設定すると線幅も拡大される。
- マウスホイールをズーム(拡大率の変更)に使うには工夫を要す。
WPF では、ScrollViewer が縦スクロールに使っていて、MouseWheelイベントを指定しただけではこの動作が止められない。 Silverlight では、ブラウザが縦スクロールに使っている。 ( Silverlight のサンプル2 のようにMouseWheelでズームすることはできる。)
図をクリックすると Silverlight のサンプルが起動します。
- 図のズーム
- JPN.mdbの読み取り
- System.Data.Sqlite、Linq
- LINQ to SQL クラス
- LINQ to SQL クラスの自動生成
- SQLite の dbml
- SQLiteとDataGridのバインド
(http://www.gadm.org から mdb 形式のデータ(海岸線、県境、市区町村境界)が入手可能なのに気が付いて始めました。このデータはの利用については、1)原著作者のクレジットを表示、2)非営利利用、3)の許諾条件の継承 の条件が付いています。私には「原著作者」が誰なのかわかりませんがライセンス条項へのリンクを乗せて置きます。 Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.)

SketchFlow を試そうとして、お菓子検索のサンプルを作って、Silverlight のバインディングの話になってしましました。 今度は、文章の入れ方を考えようとして、フォントやリソースの話です。 お菓子検索を差し替えてあります。左図をクリックするとSilverlightアプリケーション(SketchFlow)が起動します。ナビゲーションで、「XPSファイルの表示」をクリックしてください。 以下は、ワードで文章を作って、XSPファイルを表示して見ました。WPFと同じ方法ではできないことや、フォントやイメージをどこに置けるかが検討したことです。
- 「Silverlightのマニフェスト・リソース」
- 「Silverlightのリソースの分類」
- 「Silverlightのフォントとイメージの検索」
- 「SilverlightとWPFでのXPSファイルの表示」
|

|
前に挙げた、お菓子検索を Silverlight にしました。これで、画像をクリックすれば動くサンプルを見ていただけます。 お菓子の虜 Web API の検索機能を使っています。
SketchFlow を使って見ようと始めたのですが、その前にいくつか記録の必要なことがあります。
Silverlight アプリケーションが、プログラム外のリソース(ファイルや通信)を使う方法について、「Silverlightの入出力」にまとめました。 NuSoap を使ったサービス参照について「SilverlightとNuSoap」にまとめました。 |
Web由来のデータをできるだけコードを書かずにバインドすることに付いて、調べたことをまとめました。
「WPFのバインディング」 「Silverlight のバインディング」 「ListBoxのバインディング」 「Silverlightのカラーとバインディング」
気が付いたことを挙げて置きます。
- SketchFlow も、普通の httpサーバーでホストできます。前に挙げた Silverlight のサンプル同様、Linux、Apachのレンタルサーバ上にあります。
- Silverlight のアプリケーションが複数のサーバーと通信することは可能です。意図的に Flash や Silverlight の接続を許可しているサーバーとだけ繋がるようにできているようです。
- WEB API を提供しているところをいくつか試しましたが、ほとんど許可されていません。繋がることの確認には、Digg API を使いました。
- ここで使った、お菓子の虜 Web API も許可されていません。おそらく禁止している意図はないのだと思います。Silverlightのために特別なことが必要だと気が付いていないだけだと思います。
- そこで、このサーバーが代理でWeb APIをすることにしました。
- NuSoap で、サーバー側のサービスを書き、Silverlight 側では、サービス参照の追加をしました。
- SketchFlowのソリューションには、2つのプロジェクトがあり、1つはapp.xamlを、他方は画面1.xamlが含まれています。2つのDLLが作られることになります。
- サーバーと通信するのは、後者なのでサービス参照を後者に追加しました。実行しようとすると、ServiceReferences.ClientConfig が xap ファイルに含まれていないと言って実行できません。
- Visual Studio のソリューション・エクスプローラで、ServiceReferences.ClientConfig を、前者のプロジェクト内にコピーすると xapに入れることができることに気が付きました。
・圧縮ツールで再圧縮して xap にリネームすると言うのは上手くいきませんでした。 ・2つの ServiceReferences.ClientConfig は同じ内容になるように維持しなければなりません。
- Blend3 でプロジェクトを開くと、ServiceReferences.ClientConfig が既にコピーされていると言ったような警告が表示されます。Blend3は、コピーが必要なことを知っているようです。
- ページごとにDLLになるなら、共通の処理はシルバーライト・クラスライブラリのDLLにまとめれば良いのかと考えています。
- お菓子のイメージ
お菓子の虜 Web API は、イメージのURLを知らせてくれます。API ではなく、普通のブラウズとして、イメージをダウンロードします。この処理は、非同期に完了するので、完了したときに ListBox に追加するようにしました。同じ検索をしても表示順が変わります。
- このイメージがGIFでした。Silverlight は、GIFを表示しないもののようです。
デコーダーがあるとのことなので探しましたが、大抵はSilverlightのライブラリではないとリンクできません。Image Tools だけはリンクができました。しかし、コアラで見つかる11件の内、3件の画像が出ません。違いはインターレースで、インターレースをサポートしないようです。

今度は、1つのカラーを選択して、他の色を距離でソートして表示して見ました。 図をクリックすると起動します。
1.グリッドの背景色を交互に変えて見易くする。 2.メニューバーなどの背景にグラデーションを付けて立体感を出す。
と、いった時の色の選択の目安を探しています。 いずれの場合も、文字が読みにくくならないように色を選ぶことが必要です。
上の段の、丸い色見本をクリックすると、その色を背景色にして、近い色から下に向かって並べて、下段に表示します。 20個で折り返しています。
中ほどに2行、色の情報を表示します。上の行は、背景になっている、上の段で選んだ色の情報です。 下の行は、下段の色見本をクリックすると表示されます。 表示しているのは、色名、L*a*b のカラーコード、[色相、半径]、RGBコードです。 色名なり、RGBコードなりをコピーしてプログラミングに使います。(右ボタンメニューは、「Silverlight」と表示されますが、CTRL-X や CTRL+Insert でコピーできます。)
[色相、半径]は、Lを無視して、a-b平面上の、点(a,b)の位置を書いています。a軸との角度(度)と半径で表しています。角度は、色の種類を、半径はその鮮明度を知る目安になると考えました。
表示している色は、Colorsクラスにある、名前の付いたカラーです。 色の間の距離を使って、組み合わせを行おうとするもので、できるだけ色見本で距離がわかるようにしたいのですが。 詳細は、「名前の付いたカラー」を参照ください。
Colorsクラスの全色の一覧は、ここにあります。

文字の色と背景色、グラデーションで盛り上がりを作る、など2色の組合せがなかなか上手く作れません。左図のプログラムを作ってみました。図をクリックすると起動します。
丸い色見本をクリックすると、色1、色2の選択されている方にセットされます。「表示」をクリックすると、色の組み合わせのサンプルを表示します。
表示しているのは、Colorsクラスにある、名前の付いたカラーです。 色の間の距離を使って、組み合わせを行おうとするもので、できるだけ色見本で距離がわかるようにしたいのですが。 詳細は、「名前の付いたカラー」を参照ください。
Colorsクラスの全色の一覧は、ここにあります。
このサイトのオフライン編集ツールを、故あって、Windows Server 2008 上で動かしています。これには、一つ修正が必要でした。C#から旧来のDLLの関数を呼び出す DllImport が失敗する箇所がありました。おそらく、これは Vista でも同じなのだろうと思います。
- [DllImport("sqlite3.dll")]
- static extern string sqlite3_libversion();
これは、戻りの型をIntPtrに変えて、Marshal.PtrToStringAnsi() で文字列にすれば、XPでも両立します。Vista を使ったことがないので知らずにしました。 これをきっかけに、Vector にアップしていたプログラムを、Vista、Windows 7RCで動作確認しました。今後は x64 も普及するのだろうと、これも試してみました。 C#は、CPU、OS非依存の中間コードなのでほとんど問題ありませんでした。FlvMP3Gain 以外の修正の必要なものは差し替えました。
- 前述の、文字列が返される関数のDllImportの修正
- x64 OS で動作しないものがある。プラットフォームを Any CPU から x86 にすると動作する。納得はいかないが。
- FlvMP3Gainについては、VolMaxを作ったので、使わなくなっていた。性格を明確にして作り直すことにした。
このサイトのCMSはPHPを使ったCupCakeでできています。管理者権限のない、(データベースもサービスされていない)レンタルサーバを利用するには、唯一の選択肢だと思います。
理想は、単一の言語、単一のツールでホームページを作成、維持できることです。 レンタルサーバには乗らなくても、そんな方法がないものかと思っていました。
「マイクロソフトがオープンソースのCMS...」の見出しを見て、Oxiteを調べてみました。 期待するSilverlightとの連携などはありませんが、これもCupCakeと同じMVCモデルのCMSであることを知りました。「LINQ to SQL」や「ASP.NET MVC Framework」を、もう少し調べて、「IISでCMS」以下に書いて置こうと思います。
Expression Blend を使ってGUIや図を書く練習をしていたのですが、大半の図形は最終的にPathオブジェクトで表現されることを知りました。 ツールを使って作った図形は、小さなパーツの集合になって、扱いずらいだろうと思っていたのですが、複雑な形状も1つのPathオブジェクトで表現されています。 このPathオブジェクトの表現はどこかで見たことがあると思っていたのですが、文字列をインタプリットするL-systemの話に似ていることに気がつきました。 一筆書きのような形状だけでなく、分岐のある形状も 1つのPathオブジェクトに置き換えられます。 これを Silverlight のプログラムにして見ました。上の図をクリックすると実行できます。 プログラムについては、「「かたち」について」「L-system」に書きます。

音程と拍数を指定して音楽を演奏する Silverlight アプリケーションのサンプルを作りました。
「音の周波数測定(マイクから入力)」で、Silverlightアプリケーションへの音の取り込みに苦戦しましたが、音を作る方でもMP3のエンコードをすることになってしまいました。Silverlight3(ベータ)は、今のところクライアントでもSDKをインストールする必要があるようなので、Silverlight2に戻ったのですが、PCMを再生しない仕組みのようです。Silverlight2がWAVを再生しないのは、コンテナの問題なのだとの認識で、ASFにPCMを入れて作成したのですが失敗でした。ロスレスの圧縮も不可です。コンテナの問題ではなく、PCMやロスレスを通さないようにしているようです。MP3なら通るので、PCMで音を作ってから、MP3にエンコードして通すことにしました。 このサンプルは、縦方向に音程を、横に時間(拍)を取っていて、16拍分の演奏をします。 チェック箇所の音程に従って、単純にサインを計算して振幅データにしています。
久しぶりに変換できない FLV ファイルに出会いました。これは、Audio:0xaf(AAC),Video:0x17(H.264/AVC)と言うことのようです。詳細は、「動画変換(VolMax)」に。
「WavIO DLL R言語 エクステンション」を、修正しました。サンプリングレートの下限のチェックが8192となっていました。これを、8000(Hz)に直しました。 R言語のスクリプト部分のみの修正で、8192を8000に置き換えです。 「音について」「DCT結果の見方」を書いていて気がつきました。
Silverlightでマイクロホンからの音の周波数表示をして見ましたが、期せずして、 NellyMoser のデコードをすることになってしまいました。もともと単純にPCMをFFTする枠組み(「音の周波数測定」)があってのことなので、NellyMoserからPCMへの変換をC#で書くことになりました。 これを作りながら思っていたのは、音声の圧縮はもともも時間軸から周波数軸へ変換結果なのではないかと言うことです。デコードしなくても周波数分布がわかるのではないかと考えました。このことを「音について」「DCT結果の見方」に書きます。
わかったことを元に、左図のような表示をするサンプルを作って見ました。 Cと刻んである音叉(おそらく、523.25Hz)を打撃したところです。
この、「マイク入力のスペクトル」にサンプルを置きました。ただし、このリンクは夜間は接続できません。
Silverlightのページが開いたら、「START」ボタンで表示を開始します。フォーカスを失うと止まります。 最初に「START」ボタンを押したときには、マイク接続の使用の「許可」を求めるFlash のダイアログがでます。

左の図をクリックすると、Silverlightのプログラムがポップアップ表示されます。スライダを動かして見てください。
Silverlightのプログラムを直接張り付けられれば良いとは考えていました。 でも以下の2つの理由であきらめていました。 1つのページに複数貼ることが多く、 1.一時に必要なのは1つだけなのに、ページを開くときには貼り付けたすべてのSilverlightのコントロールが開かれます。 2.このページはHTMLで記述しているわけではなく、CMSがエディタの出力をデータとしてHTML化しています。単純な方法でないと貼り付けられません。
小さい画像を表示して、この画像のクリックでプログラムを実行するようにすれば良いことにやっと気がつきました。 「音の周波数測定(マイクから入力)」(このリンクは夜間は接続できません。)を作る過程で、Silverlightの外側(ブラウザ、あるいはJavaScript管理するオブジェクト)を操作することが必要になりました。 これを元に適切なポップアップ・ウインドウを表示する方法を、「WEBアプリケーションの作り方」「ブラウザ(JavaScript)のオブジェクト」を書きます。また、ActionScript(Flash)とのインタフェースも書いておきます。
ブラウザでページを開くだけでプログラムを実行できるSilverlightはアプリケーションの管理に有利です。また、プログラムの説明をするにのも有効です。 これを使って、音声関連のアプリケーションを作ろうとして時間がかかってしまいました。再生は可能なようですが、マイク入力を行う方法がわかりませんでした。そこで、Flashのマイク機能を使うことで着手したのですが、ActionScript、RTMPプロトコル、Polisyサーバ、Silverlight Socket、Nellymoserコーデックとずいぶん遠いところを回ることになりました。

この「音の周波数測定(マイクから入力)」は、別のサーバにあります。現状ではサーバ側のポートを開ける必要があり、このレンタルサーバに置けません。インストールしたサーバは昼間だけ電源を入れています。 いずれ、HTTPトンネリングを試してみたいと思います。 単一の言語(開発環境)で作るのが理想ですが、ここでは、ActionScriptでFlashコントロールを作り、JavaScriptでSilverlightとつなぐことになりました。 このサンプル・プログラムは、マイクから入力した音の周波数表示のほかに、15秒ほどですがPCMデータをWAV形式で書き出すことができます。 意図とは異なる複雑なものができましたが、セキュリティやプライバシーのためだと言うことのようです。わたしには何を何から守るのか良くわかりませんが。


Silverlight のサンプル (ブラウザのウインドウサイズを変えて見てください)
Silverlight のサンプル2 ウスホイールでのズーミング、パネルのドラッグを追加しました。
動的にコントロールを配置する方法を試してみました。 「コントロールの動的配置」
さらに、均等に配置する方法を考えてみました。 「コントロールの均等配置(フレーム周期の描画)」
この例は、BorderとImageで作った2種類のマークをたくさん作って表示しています。 最初は中央に集中しているマークが左図のようになります。
均等と言ってもまだまだ工夫の余地があります。また、プログラミング的にも理解できていないところがあります。 いずれライブラリ化したいと思います。

Imageやコントロールには Effect プロパティがありました。 HLSL で効果が記述できると言うことなので試してみました。
「XAML、WPF、Silverlight」「BitmapEffect」のようにコントロールに適用するのは簡単ではないようです。 イメージ全体に同じ処理をするなら何とかなりそうです。
「XAML、WPF、Silverlight」「HLSLでEffect」を参照ください。

ボタンのサンプルを作ってみました。 sla_button1
「Tips」「XAML」に記述しました。
Silverlightアプリケーションで、コントロールのスタイルやテンプレートを独立した別ファイルにして実行時に読み込むことができるようになりました。これで再利用が容易になるので少しは見栄えに気を使うことができます。 どうやら、Blendと言うツールでデザインするもののようなので、このツールを使えば、ここでの工夫は徒労なのかもしれませんが。
もう少し、工夫が必要ですが、そろそろXAMLベースでページを書けそうです。

実際のアプリケーションに近いものを作ってプログラミング方法の違いを見てみたいと思います。
お菓子の虜 Web API をデータソースにしてみます。
「XAML、WPF、Silverlight」の「XMLの応用方法」 を参照ください。
ブラウザで手軽に開けるグラフィカルなページを作るには Silverlight を使うものと思っていたのですが
- 現状、Moonlightは、Silverlight2 相当ではないらしい
(マルチプラットフォーム化が十分でない)
- Silverlightでは、Viewport3Dなど使えない機能がある
(多くのプラットフォームやブラウザをサポートする代償)
と言う事のようです。
そこで、いっそWindows、IEに限るとして、XAMLだけでページを作ってみました。
http://s1.dynamitelife.net/~mikeo410/samples/xaml_direct_blender1/page.xaml
Viewport3Dも有効ですし、開くときにインストール動作が起きることもありません。 わたしの使い方にはこれで良さそうです。 何かのプラグインによるのかもしれませんが FireFox でも開けます。

sla_rgb_rect1
ブラウザで簡単に実行できるようなサンプルを作るには、Silverlightが良いわけですがPixel単位の操作がないことがわかりました。 これは、Pixel単位の操作がブラウザにとって一般的にサポートされてないためなのだと思います。 ブラウザは、イメージファイルを表示する機能を標準的に持っています。 そこで、Bitmapの代わりに、SilverlightがサポートするPNG形式のファイルのPixelを操作するようなプログラムを作ってみました。
プログラムの目的は、RGBを255x255x255の立方体と考えて、各面に平行な面での切断面を見てみようと言うものです。 R,G,B 3つのスライダーがあり、切断する位置を移動できます。
内部的には、スライダの移動に応じて、PNG形式ファイル(メモリー・ストリーム)のPixelを操作しています。 PNG形式には無圧縮形式があることを利用しています。
「XAML,WPF,Silverlight」「Silverlight」を参照ください。
名前の付いているカラーの一覧。大きなウインドウで表示してください。(Windows、IE) http://s1.dynamitelife.net/~mikeo410/samples/sla1/sla_color1.html
Silverlight のサンプルを作りました。
http://s1.dynamitelife.net/~mikeo410/samples/sla1/TestPage.html
Linux - ApacheのサーバのユーザディレクトリにMonoを置いて、Visual C# Express、Visual Web Developer Express で作成した「WPFブラウザ・アプリケーション」「ASP.NET WEBサービス」を動かす例です。
http://mikeo410.wsp1.net/wpfba_service1/wpfba_service1.xbap
http://mikeo410.wsp1.net/asp.php/AspNetWebService1/FileList.asmx
「MonoでASP.NET WEB サービス」
C#用SQLite3インタフェースDLL(SQLite3cs.dll)
http://www.vector.co.jp/soft/winnt/prog/se467674.html
ApachでASP
Microsoft Visual Express Edition は、大変すばらしく、もうこれなしにはプログラムが作れません。 Webアプリケーションも、Microsoft Visual Web Developer で作れば、知識のない私でも何とかなるのではと思っていました。しかし、IIS(Windows)のサーバーを借りる必要があり、当分実現できません。 ところが、管理者権限のないApachの無料レンタルサーバーでも、mono(C#) を動かせることが分かりました。(Linux、Apach、mod_php5)
下記が、Microsoft Visual Web Developer で作成したASPのテストページです。
http://mikeo410.wsp1.net/asp.php/Default.aspx
実用になるとは思いませんが、疑問点を調べる実験用に使ってみようと思います。
記事は、「ApachでASP」 参照。
Silverlightユーザーコントロールを表示するのも試してみました。これは、ASP.NETとは異なる仕組みのようです。(ブラウザは、Windows上のIEやFireFoxで、Silverlightのランタイムがインストールされている必要があります。)
http://mikeo410.wsp1.net/silverlightscript/aClockAppTestPage.html
Visual Studio のエディタから色付きでテキストがワープロに貼り付けられることに気が付きました。 そこで、クリップボード上のテキストの色情報を使ってHTMLに変換するプログラムを作りました。

これで、見たままに貼り付けられます。 しかし、テキストエディタやR言語のコンソールからはできません。 これは、アプリケーション側がどんな形式でクリップボードに積むかに掛かっており、どうしようもなさそうです。 テキストなら、キーワードでカラーリングすることも必要なようです。 テキストエディタはマクロが使えないかと考えましたが、文字が拾えても、色などの属性は取得できないようです。
行番号を付けるとコピーで困るのではと思っていましたがこれも問題ないことを知りました。
今までは、HTMLを「ソース」に切り替えて貼り付けていました。 クリップボードに格納するときには、HTMLとして格納できることを知りました。こうすると、FCKeditorにそのまま貼れることがわかりました。 ただし、HTMLとしてクリップボードに積むと、テキストエディタに貼れなくなります。 クリップボードへは複数の形式で積めるのでまだ工夫の余地があります。
サーバーを使えれば、どこからでも編集できると考えて始めたわけですが、サーバーのダウンを機会にローカルで編集することにします。 そこで、下図のような編集ツールを作ってみました。

サーバーを起動しないで、編集できます。 また、目次もマウスで移動できるようになりました。
SQLite3とMySQLの両方で、HTML(コンテンツ)を管理することにします。
自身の問題解決や、 いろいろな疑問を考えるのにパソコンを利用する、と言う当然のことがなかなかできません。 試してみると、C#やR言語のすばらしさには驚くばかりです。パソコンの進歩があるのでしょうが、画像でもなんでも、オンメモリで高速に演算できます。 もっといろいろなことができそうです。
また、思いついたことや試したことをその場で簡単に記録できることも重要です。 このサイトは、CakePHPのサンプルのLumadcmsを使っています。
mikeo_410@hotmail.com
|