ドロップボックスなどオンライン同期型ストレージを使ってチャットする。

遠方の相手と仕事の説明など簡単なやりとりをするのに
わざわざ、重いチャットサービスを開かないで済むようにDropbox内で動くチャットシステムを作ってみました。


通信に時間が少しかかるので、会話をするように、さくさくとメッセージのやり取りは出来ません。


YAHOO!ボックスなども公開され、クラウド環境が身近な存在になってきましたので、今後は各社競って転送スピードが上がってくるでしょうから、このチャットでのやりとりも速くなるかも知れません。


今回はDropBoxの公開フォルダ内に設置して一度だけ使いました。

他のファイル自動同期型のサービスでも動くと思います。

急な需要があり、基本部分は数分で思いつくままつくったものです。

その後、ここに公開するために、コードお修正と機能追加しましたが、やりとりする相手がいないのでデバグやコードの最適化などはできてません。

バグがあれば、教えていただけると助かります。


■どろっぷちっゃっとの使い方
下記のコードを「適当な名前.nako」で
Dropboxなどの共有フォルダに保存して、なでしこパットから
通信したい人同士でお互い実行するだです。

何人まで同時にチャット出来るか解りません。

起動時に名前を入力してください。

操作が解らない時はチャット窓に
『せつめい』と入力して『Ctrl+Enter』キーを押すと詳しい使い方が表示されます。

設置したフォルダ内に「ログ.txt」ファイルが出来ます。
これを削除しない限り前回動作した際のチャットの内容が今回の参加者全員に表示されてしまいます。

新しい相手とチャットする時は手動で削除してください。

※改変、転載、は、ご自由に行ってください。
よいものが出来たら一般に公開してもらえると助かります。

投稿者とは文字列="ユーザー名は?"と尋ねる。
(投稿者="")ならば、投稿者="ななしさん"。
(『どろっぷちゃっと』を窓ハンドル検索<>"0")ならば、『多重起動できません』と言って終わる。
母艦=『どろっぷちゃっと』。母艦を最前面。母艦のW=300。//母艦のX=デスクトップワークエリアW-母艦のW。母艦のY=デスクトップワークエリアH-母艦のH+クライアントH。
出力窓とはTエディタ。これについてレイアウト="全体"。文字色=緑色。背景色=黒。『TEXT』にカラーリング設定。編集は不可。折り返し=オン。出力窓のテキスト=「{母艦パス}ログ.txt」を開く
入力窓とはTエディタ。これについてH=母艦のH/3。レイアウト="下"。文字色=緑色。背景色=黒。『TEXT』にカラーリング設定。文字サイズ=8。
更新時計とはタイマー。これについて間隔=5。開始


『Ctrl+Enter』に『送信』をホットキー登録。
『Ctrl+Shift+Enter』に『窓サイズ変更』をホットキー登録。
//
「{母艦パス}ログ.txt」が存在でなければ、(「作成日:」&今日)を「{母艦パス}ログ.txt」に保存。

//準備

窓サイズ変更する
折り返し設定変更する

//イベント
母艦のサイズ変更した時は〜サイズ変更設定へ
出力窓のクリックした時は〜入力窓に注目する。
更新時計の時満ちた時は〜出力窓更新する。
母艦が完了した時は〜出力窓をスクロールバー最下行移動

//関数
●送信〜
 (入力窓のテキスト="")ならば、戻る。
 (入力窓のテキスト=『せつめい』)ならば、出力窓のテキスト=出力窓のテキスト&「{~~}>{投稿者の改行を""に置換&改行}」&操作方法&改行。出力窓をスクロールバー最下行移動。戻る。
 (入力窓のテキスト=『じどう』)ならば、入力窓のテキスト=""。窓の更新=『あり』。戻る。
 (入力窓のテキスト=『しゅどう』)ならば、入力窓のテキスト=""。窓の更新=『なし』。戻る。
 
 「{母艦パス}ログ.txt」に「{~~}」&">"&(投稿者の改行を""に置換)&"("&今&")"&改行&入力窓のテキストを追加保存する。
 0.8秒待つ
 出力窓更新する 
 入力窓のテキスト=""。
 出力窓をスクロールバー最下行移動

●出力窓更新〜
 (入力窓のテキスト=『せつめい』)ならば、戻る。
 出力窓のテキスト=「{母艦パス}ログ.txt」を開く
 (窓の更新=『あり』)ならば、出力窓をスクロールバー最下行移動
    

●スクロールバー最下行移動({グループ}OBJを)
 WM_VSCROLL = 277
 SB_BOTTOM = 7
 SB_PAGEUP = 2
 OBJ→メッセージ送信(WM_VSCROLL, SB_BOTTOM, 0)
 OBJ→メッセージ送信(WM_VSCROLL, SB_PAGEUP, 0)

●窓サイズ変更
 窓のサイズで条件分岐
  『T』ならば、
     母艦をタスクトレイ出す。
    窓のサイズ=『S』
    母艦のW=300。
    母艦のH=500。
    サイズ変更設定

  『S』ならば、
    窓のサイズ=『M』
    母艦のW=400。
    母艦のH=デスクトップワークエリアH。
    サイズ変更設定
    
  『M』ならば、
    窓のサイズ=『L』
    母艦のH=デスクトップワークエリアH
    母艦のW=デスクトップワークエリアW
    サイズ変更設定。
   
  『L』ならば、
    窓のサイズ=『T』
    母艦をタスクトレイ入れる。


●サイズ変更設定
 母艦のX=デスクトップワークエリアW-母艦のW。母艦のY=デスクトップワークエリアH-母艦のH+クライアントH。入力窓のH=母艦のH/3
 折り返し設定変更
 出力窓をスクロールバー最下行移動


//はっぱさんのライブラリより転用
●折り返し設定変更
 文字サイズ控えとは整数
 文字サイズ控え=文字サイズ
 //↓文字幅取得は現在の文字サイズで計算されるので。
 文字サイズ=出力窓の文字サイズ
 折り返し文字数とは整数
 表示幅とは整数
 //引いている数値は目分量で決定しました。
 もし(出力窓の左バー)=オンならば
  表示幅=(母艦のクライアント幅)-110
 違えば
  表示幅=(母艦のクライアント幅)-48
 折り返し文字数=(表示幅÷(『#』の文字幅取得))を整数変換
 出力窓の折り返し=折り返し文字数
 文字サイズ=文字サイズ控え
//はっぱさんのライブラリより転用ここまで


●操作方法〜「入力内容反映=Ctrl+Enter{~}画面サイズ切替=Ctrl+Shift+Enter{~}表示位置5秒毎に更新=じどうと入力{~}自動更新しない→しゅどうと入力」で戻る。

■窓
 ・サイズ{=『T』}
 ・更新{=『なし』} 

■お礼
はっぱさんのライブラリ(折り返し設定変更)の利用と
もんぴんさんがスクロールバー最下行移動の動作不具合に関して掲示板で教えていただいたお陰で便利な機能を追加する事ができました。

感謝です!!