1

タイトルにあるように、私はDNDを取得できません(つまり、概念を理解し、コールバックの順序を理解しています。実際の使用のためにDNDを設定する方法を理解していません)。以前にCでDNDの作業を行ったことがありますが、実際にそれが機能することはなかったことを考えると...

だから私はテキストエディタを書こうとしています(そしてほとんど成功しています、DNDを保存します)(コードハイライトが組み込まれているのでgtksourceviewを使用します)。必要に応じて理由を以下に示します。とにかく、gtk2hsで利用できる優れたDNDデモやチュートリアルは実際にはありません(listDND.hsは私の頭の中でうまく翻訳されません)。したがって、私が求めているのは、ウィンドウウィジェットで単純なDNDを示すコードです(たとえば。 )理想的には、他のウィンドウ(Thunarなど)からのドロップを受け入れ、情報を文字列形式で出力する必要があります。私はそこからそれを取ることができると思います...


理由:かなり軽量なセットアップ、dwm、およびいくつかのgtk+2プログラムを実行しています。リポジトリから現在のgeditを取得するためにgtk+3を取り込む必要は本当にありません(Arch Linux)。現在、テキスト編集のすべてのニーズにgeanyを使用していますが、geanyは少し重いです。構成ファイルの編集。さらに、geanyは私の選択した端末(st;)を気にしないので、IDEとして使用するメリットすらありません。意味構文を強調表示した軽量のテキストエディタが欲しいのですが。emacsやvimなどを設定することもできますが、それは適切な解決策というよりはハックのようです。このようにして私のプロジェクトが生まれました。それはほとんど機能しています(DNDを除いて、残っているのは適切なマルチタブのサポートだけです)。確かに、Cで書いた場合はおそらくこれを解決できますが、ありません。

4

1 に答える 1

1

リンクしたチュートリアルとgtk2hsのドキュメントに従って、テキストを受け取る次の最小限のアプリケーションを作成しました。まもなく gtk2hs demos ディレクトリに追加します。

import Control.Monad.IO.Class
import Graphics.UI.Gtk

main = do
    initGUI
    w <- windowNew
    l <- labelNew $ Just "drag here lol"
    onDestroy w mainQuit
    containerAdd w l
    dragDestSet w [DestDefaultMotion, DestDefaultDrop] [ActionCopy]
    dragDestAddTextTargets w
    w `on` dragDataReceived $ \dc pos id ts -> do
        s <- selectionDataGetText
        liftIO . putStrLn $ case s of
            Nothing -> "didn't understand the drop"
            Just s  -> "understood, here it is: <" ++ s ++ ">"
    widgetShowAll w
    mainGUI

thunar が選択形式の 1 つとしてテキストを提供しているかどうかはわかりませんが、提供していない場合は、提供する形式がどこかに文書化されているはずです。

于 2012-06-11T21:45:18.377 に答える