wxbinddialog.cpp

来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C++ 代码 · 共 216 行

CPP
216
字号
// @file wxBindDialog.cpp
//
// @author Charlie Frasch  <cfrasch@atdesk.com>
//
// wxBindDialog.cpp,v 1.4 2003/11/21 14:54:42 schmidt Exp

#include "pch.h"
#include "wxBindDialog.h"

#include "wxAutoDialog.h"
#include "wxNamingViewer.h"
#include "wxViewIORDialog.h"

#include "wx/sizer.h"

namespace  // anonymous
{

void create_dialog_components( wxDialog* dialog)
{
  wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL);

  {
    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL);
    sizer->Add(
        new wxStaticText( dialog, -1, "ID:" ),
        0,
        wxALL,
        5);
    wxTextCtrl* text = new wxTextCtrl(
	dialog,
	IDC_ID
	);
    text->SetName( "idTextCtrl");
    sizer->Add(
	text,
	1,
	wxALL,
	5);
    topsizer->Add(
        sizer,
        0,
        wxALIGN_LEFT | wxEXPAND);
  }

  {
    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL);
    sizer->Add(
        new wxStaticText( dialog, -1, "Kind:" ),
        0,
        wxALL,
        5);
    wxTextCtrl* text = new wxTextCtrl(
	dialog,
	IDC_KIND
	);
    text->SetName( "kindTextCtrl");
    sizer->Add(
	text,
	1,
	wxALL,
	5);
    topsizer->Add(
        sizer,
        0,
        wxALIGN_LEFT | wxEXPAND);
  }

  {
    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL);
    sizer->Add(
        new wxStaticText( dialog, -1, "IOR:" ),
        0,
        wxALL,
        5);
    wxTextCtrl* text = new wxTextCtrl(
	dialog,
	IDC_IOR
	);
    text->SetName( "iorTextCtrl");
    sizer->Add(
	text,
	1,
	wxALL,
	5);
    topsizer->Add(
        sizer,
        0,
        wxALIGN_LEFT | wxEXPAND);
  }

  wxBoxSizer* button_sizer = new wxBoxSizer( wxHORIZONTAL);
  {
    wxButton* button = new wxButton( dialog, wxID_OK, "OK" );
    button->SetName( "okButton");
    button_sizer->Add(
        button,
        0,
        wxALL,
        5);
  }
  {
    button_sizer->Add(
        new wxButton( dialog, wxID_CANCEL, "Cancel" ),
        0,
        wxALL,
        5);
  }
  topsizer->Add(
     button_sizer,
     0,
     wxALIGN_CENTER);

  dialog->SetSizer( topsizer);
  topsizer->SetSizeHints( dialog);
}


};  // anonymous


BEGIN_EVENT_TABLE( WxBindDialog, wxDialog)
  EVT_BUTTON( IDC_VIEWIOR, WxBindDialog::onViewIOR)
END_EVENT_TABLE()


WxBindDialog::WxBindDialog(
    bool isContext,
    CORBA::ORB_ptr orb,
    wxWindow* parent)
#if defined(wxUSE_RESOURCES) && (wxUSE_RESOURCES == 1)
  : wxDialog()
#else
  : wxDialog(
      parent,
      IDD_BIND,
      "Bind Object/Context",
      wxDefaultPosition,
      wxSize( 300, 75),
      wxRAISED_BORDER | wxCAPTION | wxTHICK_FRAME | wxSYSTEM_MENU,
      "bindObject")
#endif  // defined(wxUSE_RESOURCES) && (wxUSE_RESOURCES == 1)
  , ior()
  , id ()
  , kind ()
  , object ()
  , orb (orb)
  , name ()
  , isContext (isContext)
{
#if defined(wxUSE_RESOURCES) && (wxUSE_RESOURCES == 1)
  LoadFromResource( parent, "bindObject");
#else
  create_dialog_components( this);
#endif  // defined(wxUSE_RESOURCES) && (wxUSE_RESOURCES == 1)
  if (isContext) {

    SetTitle( "Bind Context");

  } else {

    SetTitle( "Bind Object");
  }
  wxButton* ctrl = static_cast<wxButton*>( wxFindWindowByName(
      "okButton",
      this));
  assert( ctrl);
  ctrl->SetDefault();
}


void WxBindDialog::onViewIOR( wxCommandEvent& WXUNUSED(event))
{
  TransferDataFromWindow();
  WxAutoDialog<WxViewIORDialog> dialog( new WxViewIORDialog( orb, object.in(), 0));
  dialog->ShowModal();
}


bool WxBindDialog::TransferDataFromWindow()
{
  wxTextCtrl* ctrl = static_cast<wxTextCtrl*>( wxFindWindowByName(
      "iorTextCtrl",
      this));
  assert( ctrl);
  ior = ctrl->GetValue();

  ctrl = static_cast<wxTextCtrl*>( wxFindWindowByName(
      "idTextCtrl",
      this));
  assert( ctrl);
  id = ctrl->GetValue();

  ctrl = static_cast<wxTextCtrl*>( wxFindWindowByName(
      "kindTextCtrl",
      this));
  assert( ctrl);
  kind = ctrl->GetValue();

  name.length( 1);
  name[0].id = CORBA::string_dup( id);
  name[0].kind = CORBA::string_dup( kind);
  try {

    object = orb->string_to_object( ior);

  } catch(CORBA::Exception& ex) {

    wxMessageBox( ex._rep_id(), "Invalid IOR");
    object = CORBA::Object::_nil();

  }
  return true;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?