LoginSignup
18
24

More than 5 years have passed since last update.

[ Pythonista ] 選択したテキストをコピーするアクションを作った話

Posted at

Pythonistaのカスタムキーボードにはペーストはあるのにコピーがないのでアクションを作りました

Pythonista、便利ですね。出先でちょろっとコーディングするにも最適ですし、GUIも簡単に作れるのでiOS端末のハックにもとても使い勝手が良いです。

カスタムキーボードも良く出来てて不満はほとんどないんですけど、ペーストキーはあるのにコピーキーがないのはなんでなんじゃいというわけでアクションで代用してみることにしました。

※ 本記事執筆時のiOSバージョンは9.3.2、Pythonistaのバージョンは2.0です

序論 Pythonistaとは

まずはPythonistaについて簡単にご紹介。PythonistaはiOS用の有料アプリでiPhone/iPad両対応のPython開発環境です。

Pythonistaを App Store で

オンラインコンパイラではなく、本物のPython1が同梱されておりローカル上で動作します。

またiOS用に設計されたカスタムキーボードの操作性も十分実用に耐えうるもので、ストレスのないコーディングが行えます。

pythonista01-compressor.gif

同梱の専用モジュールも強力で、

  • クリップボードへのアクセス
  • 位置情報へのアクセス
  • iOSのカメラ機能へのアクセス
  • 共有シートからのデータ受け渡し
  • Objective-Cのクラスへのアクセス

等々、ちょっと引くレベルの機能が満載です。パワフルなモジュールを使うことで、楽しい開発が行えるとってもオススメな環境です。

現在ユーザーの熱い要望によりPython3系のPythonistaベータ版も現在開発中とのこと。

Pythonista 3.x Beta

本論 アクションを作成してエディタを拡張する

上記動画でもやっていますが、Pythonistaではキーボードを2本指スワイプで選択範囲をスムーズに変更できるのですが、範囲設定後Copyコマンドが出てこないのがストレスでした。

そこでPythonistaの勉強がてら、選択範囲の文字列をクリップボードにコピーするアクションを作ってみました。以下その作業手順です。

site-packagesディレクトリにcopy_text.pyを作成する

site-packageディレクトリはPythonistaにデフォルトで用意されているディレクトリで、インポートパスが通ってるとのこと。(Readme.txtに書いてありました)

IMG_0013.PNG

言われたとおり、そこにcopy_text.pyを作成しましょう。後々選択した文字列を取得して改変する用途も考えて、get_selected_textとcopy_textというふたつのメソッドに機能を切り分けています。(簡単なコードなのでスクリプトの説明は割愛します)

copy_text.py

# coding: utf-8

import sys,editor,clipboard,console
reload(sys)
sys.setdefaultencoding('utf-8')

def get_selected_text():
    text = editor.get_text()
    selection = editor.get_selection()
    selected_text = text[selection[0]:selection[1]]
    return selected_text

def copy_text():
    if get_selected_text():
        clipboard.set(get_selected_text())

if __name__ == "__main__":
    copy_text() 

コードが書き終わったら、copy_text.pyの編集画面でテキストを選択、Runボタンを実行すればクリップボードに選択範囲のテキストがコピーされているはずです。

アクションを作成する

次にcopy_text.pyをアクションに登録します。アクションへの登録は画面右上のスパナボタンから。その様子も動画に撮ったのでご参照ください。(ファイルサイズの問題で解像度を半分に落としています)

pythonista02_herf-compressor.gif

手順としては下記のとおりです。

  1. スパナボタンを押す
  2. Editを押す
  3. +マークを押す
  4. カスタムコマンド名、アイコンを指定する

使う

任意のファイルを編集中にコピーしたいテキストを選択したら、スパナボタンを押しCopyを実行するだけ。

もちろん、対象ファイルではcopy_textモジュールのインポートは不要です。

IMG_0016.PNG

結論

Pythonista楽しい!!


  1. Pythonista2.0ではPythonのバージョンは2.7.5です。 

18
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
24