Ejemplo n.º 1
0
wxSize SashHtmlWindow::DoGetBestSize() const
{
    wxHtmlContainerCell *cell = GetInternalRepresentation();
    wxSize size = GetSize();

    if (cell)
    {
        cell->Layout(size.GetWidth());
        return wxSize(cell->GetWidth(), cell->GetHeight());
    }

    return wxHtmlWindow::GetBestSize();
}
/**
 * スレッドのHtmlWindowで右クリックした場合の処理
 */
void ThreadContentWindow::OnRightClickHtmlWindow(wxMouseEvent& event) {

     wxMenu* copy = new wxMenu();
     copy->Append(ID_CopyFromHtmlWindow, wxT("コピー"));
     copy->Append(ID_CopyURLFromHtmlWindow, wxT("リンクをコピー"));
     copy->Enable(ID_CopyURLFromHtmlWindow, false); // デフォルトでは使用不能
     copy->Append(ID_SelectAllTextHtmlWindow, wxT("全て選択"));
     copy->Append(ID_ShowRawHtmlFromHtmlWindow, wxT("ソースを表示する"));

#ifdef DEBUG
     // デバッグ用メニュー
     copy->Append(ID_HtmlSourceDebug, wxT("HTMLソース表示"));
#endif

     // イベント発生後にあったデータをクリアする
     m_selectedText.Clear();
     m_selectedText = this->SelectionToText();

     if (m_selectedText != wxEmptyString) {
	  // テキストを選択している場合は追加で選択肢を表示する
	  copy->AppendSeparator();

	  // 検索用のアイテムを設定する
	  wxMenuItem* itemYahoo = new wxMenuItem(copy, ID_SearchSelectWordByYahoo, wxT("選択範囲をYahooで検索"));
	  wxMenuItem* itemGoogle = new wxMenuItem(copy, ID_SearchSelectWordByGoogle, wxT("選択範囲をGoogleで検索"));
	  wxMenuItem* itemAmazon = new wxMenuItem(copy, ID_SearchSelectWordByAmazon, wxT("選択範囲をamazonで検索")); 


	  wxBitmap bitmap;
	  bitmap.LoadFile(yahooIconImg, wxBITMAP_TYPE_PNG);
	  itemYahoo->SetBitmap(bitmap);
	  bitmap.LoadFile(googleIconImg, wxBITMAP_TYPE_PNG);
	  itemGoogle->SetBitmap(bitmap);
	  bitmap.LoadFile(amazonIconImg, wxBITMAP_TYPE_PNG);
	  itemAmazon->SetBitmap(bitmap);

	  copy->Append(itemYahoo);
	  copy->Append(itemGoogle);
	  copy->Append(itemAmazon);
	  copy->Append(ID_SearchThreadBySelectWord, wxT("選択範囲でスレッドタイトル検索"));
	  copy->AppendSeparator();
	  copy->Append(wxID_ANY, wxT("抽出ポップアップ"));
	  copy->Append(wxID_ANY, wxT("この文にレス"));
	  copy->Append(wxID_ANY, wxT("メモ欄に追加"));
	  copy->Append(wxID_ANY, wxT("この文にメモ欄でレス"));
	  copy->Append(wxID_ANY, wxT("選択単語でレス抽出"));
	  wxMenu *ng = new wxMenu;
	  ng->Append(wxID_ANY, wxT("NGWordに追加"));
	  ng->Append(wxID_ANY, wxT("NGNameに追加"));
	  ng->AppendSeparator();
	  ng->Append(wxID_ANY, wxT("選択単語であぼ~ん"));
	  ng->Append(wxID_ANY, wxT("選択単語で透明あぼ~ん"));
	  copy->AppendSubMenu(ng, wxT("NG処理"));
	  copy->AppendSeparator();
     }

     int x, y;
     CalcUnscrolledPosition(event.m_x, event.m_y, &x, &y);
     wxHtmlCell *cell = GetInternalRepresentation()->FindCellByPos(x, y);
     m_linkInfo = NULL;

     if(cell)
	  m_linkInfo = cell->GetLink();

     if (m_linkInfo) {
	  if (m_linkInfo->GetHref() != wxEmptyString) {
	       // リンク上で右クリックしたのでなければ使用不能に
	       copy->Enable(ID_CopyURLFromHtmlWindow, true);
	  }
     }

     // ポップアップメニューを表示させる
     PopupMenu(copy);
}