アストラルプリズム

PC、スマホ、ゲームなどの備忘録と日記

pythonでGIMPのテキストボックスを有効にする。

前回書いた通りGIMPのテキストボックスの編集(テキスト編集→テキストレイヤー選択→テキストボックス選択→全角/半角....やってられっか!)が面倒すぎるのでpythonでマクロを作り自動化してみた。
katsumi3.hatenablog.com
ここで言うpythonGIMPプラグインを作るpython-fuではなくて独立したpythonの事。
テキストボックスのあるレイヤーを選択してマクロを動かすとテキストボックスが有効になって全角編集ONになる。
ただしGIMP側の設定のキーボードショートカットで「キャンバスのテキスト編集」をCTRL+Rに設定してあり、IMEはshift+無変換で半角文字の設定にしてある前提。
pyautguiを使ってみたのだけど、結局ウィンドウを指定してキー入力を流し込むことはできず、指定したウィンドウをアクティブにしてキー入力するという感じになった。
作った.pywファイルをFloating Buttomのようなランチャーに登録しておけばクリック一発で起動できる(ショートカットキーを使うよりマウスクリックしたい派)。
f:id:katsumi3:20220413171911p:plain
調子にのってexeファイルも作ってみたが.pyやuwscに比べると起動が若干遅くイラッとするのでダメだった。exeファイル軽量化も試してみたが、やはり遅かった。EXEファイルにするなら常駐型でないと厳しいと思われる。

import pyautogui
import pygetwindow
import ctypes
import win32gui, sys
import time

GIMP_titles = pygetwindow.getWindowsWithTitle('GIMP')
for ti in GIMP_titles:
    if win32gui.FindWindow('gdkWindowToplevel', ti.title) != 0:
        GIMP_title = ti

GIMP_title.activate()
#以下のsleepを消すとなぜかプログラムが落ちるので消さない事
time.sleep(0.001)
for n in range(30):
    act_win = pygetwindow.getActiveWindow()
    if act_win.title == GIMP_title.title:
        print('GIMPがアクティブになりました')
        break
    time.sleep(0.1)

act_win = pygetwindow.getActiveWindow()
if act_win.title == GIMP_title.title:
    print('GIMPがアクティブでループを終わりました')
else:
    print('GIMPが非アクティブでループを終わりました')
    sys.exit(0)

print('終了')
pyautogui.hotkey('ESC')
#IMEのショートカットで強制的に半角にする
pyautogui.hotkey('shift', 'nonconvert')
#pyautogui.hotkey('ctrl', 'f10')
#pyautogui.press('n')
#pyautogui.press('f')
pyautogui.press('t')
pyautogui.hotkey('ctrl', 'r')
pyautogui.hotkey('hanja')