2009-04-28 14 views
2

以下のコードは、少なくとも2つの問題があります。Copyボタンはクリップボードを更新せず、edit_boxは垂直スクロールバーを表示しません。靴の問題:クリップボードとスクロールバー

Shoes.app (:title => "Test", :width => 1000, :height => 600) do 
    background "#DFA" 
    stack :margin => 30 do 
    flow do 
     button "Paste" do 
     @sql.text = clipboard 
     end 
     button "Copy", :margin_left => 15 do 
     clipboard = @sql.text 
     alert(@sql.text.length.to_s + " characters copied to clipboard.") 
     end 
    end 
    stack :margin_top => 10, :width => "100%", :height => 500, :scroll => true do 
     @sql = edit_box :width => "100%", :height => "100%" 
    end 
    end 
end 

Pasteボタンが正しくedit_boxにクリップボードの内容を貼り付けます。変更を加えた場合、Copyをクリックすると、alertメッセージに正しい文字数が表示されます。 Pasteを再度クリックすると、元のクリップボードの内容が貼り付けられます。 Copyボタンはクリップボードを正しく更新しません。

また、edit_boxよりも多くの行を編集または貼り付けによって生成すると、スクロールバーは表示されません。

これらの2つの問題に関するお手伝いをさせていただきます。私の環境はWindows XPです。

回答を更新してください: @Pestoがクリップボードの質問に回答してくれてありがとうございます。 app.またはself.のいずれかを使用してclipboardを修飾すると、PasteCopyの両方のボタンで期待どおりに機能することがわかります。

スクロールバーの問題を深く掘り下げた後、私はedit_boxがスクロールバーを表示しない理由を理解していると思います。 Shoesのスクロールバーはスロット(stackおよびflow)にのみ適用され、edit_boxなどの個々の要素には適用されません。 edit_boxの高さは、常にstackを囲むように指定されているため、stackにはスクロールバーが必要ありません。これは理想的ではない回避策につながりましたが、私のアプリケーションでは受け入れられます。 edit_boxの高さを"10000px"などの必要以上の値に変更するだけで、スクロールバーが表示されます。残念ながら、それは必要かどうかにかかわらず、スクロールバーよりも優れています。私は、スクロールバーが必要なときにのみ表示されるように、いくつかの追加の修正によって動的に内容が正確に収まるように高さを動的に変更することができると確信しています。

+0

あなたのアップデートを読んでいれば、これは一時的な修正としてはうまくいくかもしれないと思いますが、あなたがそれについているとは思わないでしょう。スクロールバーの欠如は明らかにWindowsにのみ影響するバグです。次のカップルのリリースには、WindowsとOSXの改善に多大な努力を払う必要があります。うまくいけば、これは修正の対象になるでしょう。 – Pesto

答えて

1

まず、簡単な方法:コピーボタンの行をapp.clipboard = @sql.textに変更します。

第2に、スクロールバーが移動する限り、Windows XPではknown issueです。 githubのバグレポートには表示されていませんが、最新バージョン(r1229)にはまだスクロールバーがありません。

+0

多くのありがとう。 app.clipboardの修正は完全に機能します。なぜこれは貼り付け機能では不要ですか? –

+0

「app」を使用しないと、インタプリタはclipboardという名前のローカル変数を割り当てるのではなく、clipboard =メソッドを探しているということを知らないという単純な理由からです。それは靴のことではなく、Rubyのものです。 – Pesto