Textwellにマルチクリップボードを実装してみました ClipPad

iOSのコピペは履歴を遡れない。


Textwell 1.1.7
分類: 仕事効率化,ユーティリティ
価格: \300 (Sociomedia)

短文を記録し、組み合わせながら貼り付けていく。文章作成のパッチワーク。文章を書くとき、コピペ操作がエディタの使い心地を左右します。これまで何度もチャレンジしてきましたが、どうもシックリこない。複数のテキストをクリップする最適解が見つからない。

<title>wait...</title>
<script>
  location="https://dl.dropboxusercontent.com/u/56343898/clippad.html";
</script>

登録リンクはこちら→ http://tinyurl.com/n4rul7s



範囲選択して起動すると、その部分を保管します。今回はDropbox上のサーバーを挟むことでローカルに記録しました。半永久に残るし、回数制限もありません。



選択していない場合は、クリップの履歴が表示されます。タップすると、そのテキストが本文に貼り付く。改行も含むので、定型文の使い回しにも活用できます。



左端の黄帯をタップすると削除されます。全部消したいときは二本指でスワイプ。ただしクリップボードの内容も同時表示しているので、その分は消えません。


テキストを複数記憶し、それを再利用するアクションですが、今回のはいいですね。自分でも気に入ってます。ツールはシンプルなほど強力。ただ、コンセプトを形にしただけで、微調整はこれから。ペーストごとに並べ替えるほうが良いのか、むしろ位置は変えないほうが良いのか。使いながら確かめてみます。いいアイデアが降りてきますように。


Dropbox上のclippad.htmlは以下の通りです。まだ荒削り。

<meta name=viewport content=initial-scale=1>
<title>ClipPad</title>
<style>
  table{
    width:100%;
    table-layout:fixed;
    word-wrap:break-word;
    white-space:pre;
  }
  td {
   color:black;
   background:lightgreen;
   font-size:medium;
   padding:10px;
  }
  hr {
    border:0;
  }
</style>
<body id=wine></body>
<script>
mode=0;
cb=new Array();
document.ontouchmove=Clear;

function main(){
  t=localStorage.clippad || "";
  s=T.pboard;
  if(! t.match(s)) t=s+"\t"+t;
  s=T.current;
  if(T.range.len){
    localStorage.clippad=s+"\t"+t;
    T("done");
  }else{
    cb=t.split("\t");
    Disp();
    T.translucent(false);
  }
}

function Disp(){
  link="<hr>";
  for (i=0; i<cb.length; i++){
    s=cb[i];
    if(s) link+="<table><td style=width:10;background:yellow; onclick=Minus("+i+")></td><td onclick=Paste("+i+")>"+s.replace(/</g,"&lt;").substr(0,170)+((s.length>170)? "(...)":"")+"</td></table><hr>\n";
  }
  wine.innerHTML=link;
}

function Paste(x){
  if(mode){
    mode=0;
  }else{
    T("insert",{text:cb[x]});
  }
}

  function Minus(x){
    mode=1;
    cb.splice(x,1);
    localStorage.clippad=cb.join("\t");
    Disp(x)
  }

function Clear(e){
  if(e.touches.length>1){
    if(confirm("\nClipPadをクリアしますか?")){
      localStorage.clippad="";
      T("done");
    }
  }
}

location="textwell:///webdelegate?init=main";
</script>