本文整理匯總了C++中Bind函數的典型用法代碼示例。如果您正苦於以下問題:C++ Bind函數的具體用法?C++ Bind怎麽用?C++ Bind使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Bind函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: main
//#define DEBUG
int main() {
pthread_t schedulerThread;
epfd = epollCreate(100);
struct threadpool *pool;
if ((pool = threadpool_init(100)) == NULL ) {
printf("Error! Failed to create a thread pool struct.\n");
exit(EXIT_FAILURE);
}
int sockfd;
int newsockfd, newschedule;
sockfd = Create();
int schedulerfd = Create();
if (Bind(35000, sockfd) < 0) {
printf("error in bind");
exit(0);
}
if (Bind(35001, schedulerfd) < 0) {
printf("error in bind");
exit(0);
}
Listen(sockfd, 10);
Listen(schedulerfd, 10);
pthread_create(&schedulerThread, 0, (void*) &schedule, NULL);
int i = 0;
while (i < 100) {
incClient();
newsockfd = Accept(sockfd);
if (numClient() <= 100) {
Send(newsockfd, "ACCEPT", strlen("ACCEPT") + 1);
newschedule = Accept(schedulerfd);
fprintf(stderr, "Connection established with scheduler");
sockets newsock;
newsock.active = 1;
newsock.priority = 1;
newsock.schedulerSocket = newschedule;
newsock.workerSocket = newsockfd;
socketList = addToList(socketList, newsock);
#ifdef DEBUG
if(socketList==NULL) {
fprintf(stderr,"socketlist is null");
exit(0);
}
#endif
epollAdd(epfd, newschedule);
int ret = threadpool_add_task(pool, negotiator, (void*) &newsockfd,
1);
} else {
Send(newsockfd, "REJECT", strlen("REJECT") + 1);
close(newsockfd);
}
i++;
}
sleep(10);
Close(sockfd);
printf("shutting down");
return 0;
}
示例2: wxPanel
// -----------------------------------------------------------------------------
// TextureXEditor class constructor
// -----------------------------------------------------------------------------
TextureXEditor::TextureXEditor(wxWindow* parent) : wxPanel(parent, -1)
{
// Init variables
undo_manager_ = std::make_unique<UndoManager>();
wxWindowBase::SetName("texturex");
// Create texture menu
menu_texture_ = new wxMenu();
SAction::fromId("txed_new")->addToMenu(menu_texture_);
SAction::fromId("txed_new_patch")->addToMenu(menu_texture_);
SAction::fromId("txed_new_file")->addToMenu(menu_texture_);
SAction::fromId("txed_delete")->addToMenu(menu_texture_);
menu_texture_->AppendSeparator();
SAction::fromId("txed_rename")->addToMenu(menu_texture_);
SAction::fromId("txed_rename_each")->addToMenu(menu_texture_);
auto menu_export = new wxMenu();
SAction::fromId("txed_export")->addToMenu(menu_export, "Archive (as image)");
SAction::fromId("txed_extract")->addToMenu(menu_export, "File");
menu_texture_->AppendSubMenu(menu_export, "&Export To");
menu_texture_->AppendSeparator();
SAction::fromId("txed_copy")->addToMenu(menu_texture_);
SAction::fromId("txed_cut")->addToMenu(menu_texture_);
SAction::fromId("txed_paste")->addToMenu(menu_texture_);
menu_texture_->AppendSeparator();
SAction::fromId("txed_up")->addToMenu(menu_texture_);
SAction::fromId("txed_down")->addToMenu(menu_texture_);
SAction::fromId("txed_sort")->addToMenu(menu_texture_);
auto menu_patch = new wxMenu();
SAction::fromId("txed_patch_add")->addToMenu(menu_patch);
SAction::fromId("txed_patch_remove")->addToMenu(menu_patch);
SAction::fromId("txed_patch_replace")->addToMenu(menu_patch);
SAction::fromId("txed_patch_back")->addToMenu(menu_patch);
SAction::fromId("txed_patch_forward")->addToMenu(menu_patch);
SAction::fromId("txed_patch_duplicate")->addToMenu(menu_patch);
menu_texture_->AppendSubMenu(menu_patch, "&Patch");
// Create patch browser
patch_browser_ = new PatchBrowser(theMainWindow);
patch_browser_->CenterOnParent();
patch_browser_->Show(false);
// Setup sizer
auto sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(sizer);
// Add tabs
tabs_ = STabCtrl::createControl(this);
sizer->Add(tabs_, 1, wxEXPAND | wxALL, UI::pad());
// Bind events
Bind(wxEVT_SHOW, &TextureXEditor::onShow, this);
// Palette chooser
listenTo(theMainWindow->paletteChooser());
updateTexturePalette();
// Listen to patch table
listenTo(&patch_table_);
// Listen to resource manager
listenTo(&App::resources());
// Update + layout
wxWindowBase::Layout();
wxWindow::Show();
}
示例3: wxFrame
UninstallForm::UninstallForm(wxWindow* parent, UserCore::UserI* user) : wxFrame(parent, wxID_ANY, PRODUCT_NAME_CATW(L" UnInstaller"), wxDefaultPosition, wxSize( 500,330 ), wxCAPTION|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxTAB_TRAVERSAL )
{
m_pUser = user;
wxPanel* pTitlePanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxSize( -1,57 ), wxTAB_TRAVERSAL );
pTitlePanel->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNHIGHLIGHT ) );
m_labTitle = new wxStaticText(pTitlePanel, wxID_ANY, Managers::GetString(L"#DUN_UNINSTALL_HEADER"), wxDefaultPosition, wxDefaultSize, 0 );
m_labTitleInfo = new wxStaticText(pTitlePanel, wxID_ANY, Managers::GetString(L"#DUN_UNINSTALL_SUBHEADER"), wxDefaultPosition, wxDefaultSize, 0 );
m_imgLogo = new wxStaticBitmap(this, wxID_ANY, wxBitmap(wxT("IDI_HEADER"), wxBITMAP_TYPE_RESOURCE ), wxDefaultPosition, wxSize( 150,57 ), 0 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
m_butRepair = new wxButton( this, wxID_ANY, Managers::GetString(L"#DUN_REPAIR"), wxDefaultPosition, wxDefaultSize, 0 );
m_butUninstall = new wxButton( this, wxID_ANY, Managers::GetString(L"#DUN_UNINSTALL"), wxDefaultPosition, wxDefaultSize, 0 );
m_butCancel = new wxButton( this, wxID_ANY, Managers::GetString(L"#CANCEL"), wxDefaultPosition, wxDefaultSize, 0 );
wxFont font = m_labTitle->GetFont();
font.SetWeight(wxFONTWEIGHT_BOLD);
m_labTitle->SetFont(font);
m_pContent = new UDFSettingsPanel(this);
m_bContentSizer = new wxBoxSizer( wxHORIZONTAL );
m_bContentSizer->Add(m_pContent, 1, wxEXPAND, 5);
wxBoxSizer* bSizer1 = new wxBoxSizer( wxHORIZONTAL );
bSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
bSizer1->Add( m_butRepair, 0, wxTOP|wxBOTTOM|wxLEFT, 5 );
bSizer1->Add( m_butUninstall, 0, wxTOP|wxBOTTOM|wxLEFT, 5 );
bSizer1->Add( m_butCancel, 0, wxALL, 5 );
wxFlexGridSizer* fgSizer2 = new wxFlexGridSizer( 2, 2, 0, 0 );
fgSizer2->SetFlexibleDirection( wxBOTH );
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
fgSizer2->Add( 10, 0, 1, wxEXPAND, 5 );
fgSizer2->Add( m_labTitle, 0, wxALL, 5 );
fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
fgSizer2->Add( m_labTitleInfo, 0, wxLEFT, 15 );
pTitlePanel->SetSizer( fgSizer2 );
pTitlePanel->Layout();
wxFlexGridSizer* fgSizer3 = new wxFlexGridSizer( 1, 2, 0, 0 );
fgSizer3->AddGrowableCol( 0 );
fgSizer3->SetFlexibleDirection( wxBOTH );
fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
fgSizer3->Add( pTitlePanel, 1, wxEXPAND, 5 );
fgSizer3->Add( m_imgLogo, 0, 0, 5 );
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 5, 1, 0, 0 );
fgSizer1->AddGrowableCol( 0 );
fgSizer1->AddGrowableRow( 2 );
fgSizer1->SetFlexibleDirection( wxBOTH );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
fgSizer1->Add( fgSizer3, 1, wxEXPAND, 5 );
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
fgSizer1->Add( m_bContentSizer, 1, wxEXPAND|wxLEFT|wxRIGHT, 10 );
fgSizer1->Add( m_staticline1, 1, wxEXPAND, 5 );
fgSizer1->Add( bSizer1, 1, wxEXPAND, 5 );
SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DLIGHT ) );
this->SetSizer( fgSizer1 );
this->Layout();
this->Centre( wxBOTH );
SetIcon(wxIcon(wxICON(IDI_ICONNORMAL)));
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &UninstallForm::onButtonClicked, this);
m_bComplete = false;
}
示例4: wxDialog
DialogStyling::DialogStyling(agi::Context *context)
: wxDialog(context->parent, -1, _("Styling Assistant"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX)
, c(context)
, active_line_connection(context->selectionController->AddActiveLineListener(&DialogStyling::OnActiveLineChanged, this))
, active_line(nullptr)
{
SetIcon(GETICON(styling_toolbutton_16));
wxSizer *main_sizer = new wxBoxSizer(wxVERTICAL);
wxSizer *bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
{
wxSizer *cur_line_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Current line"));
current_line_text = new wxTextCtrl(this, -1, _("Current line"), wxDefaultPosition, wxSize(300, 60), wxTE_MULTILINE | wxTE_READONLY);
cur_line_box->Add(current_line_text, 1, wxEXPAND, 0);
main_sizer->Add(cur_line_box, 0, wxEXPAND | wxALL, 5);
}
{
wxSizer *styles_box = new wxStaticBoxSizer(wxVERTICAL, this, _("Styles available"));
style_list = new wxListBox(this, -1, wxDefaultPosition, wxSize(150, 180), to_wx(context->ass->GetStyles()));
styles_box->Add(style_list, 1, wxEXPAND, 0);
bottom_sizer->Add(styles_box, 1, wxEXPAND | wxRIGHT, 5);
}
wxSizer *right_sizer = new wxBoxSizer(wxVERTICAL);
{
wxSizer *style_text_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Set style"));
style_name = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(180, -1), wxTE_PROCESS_ENTER);
style_text_box->Add(style_name, 1, wxEXPAND);
right_sizer->Add(style_text_box, 0, wxEXPAND | wxBOTTOM, 5);
}
{
wxSizer *hotkey_box = new wxStaticBoxSizer(wxVERTICAL, this, _("Keys"));
wxSizer *hotkey_grid = new wxGridSizer(2, 0, 5);
add_hotkey(hotkey_grid, this, "tool/styling_assistant/commit", _("Accept changes"));
add_hotkey(hotkey_grid, this, "tool/styling_assistant/preview", _("Preview changes"));
add_hotkey(hotkey_grid, this, "grid/line/prev", _("Previous line"));
add_hotkey(hotkey_grid, this, "grid/line/next", _("Next line"));
add_hotkey(hotkey_grid, this, "video/play/line", _("Play video"));
add_hotkey(hotkey_grid, this, "audio/play/selection", _("Play audio"));
hotkey_grid->Add(new wxStaticText(this, -1, _("Click on list")));
hotkey_grid->Add(new wxStaticText(this, -1, _("Select style")));
hotkey_box->Add(hotkey_grid, 0, wxEXPAND | wxBOTTOM, 5);
auto_seek = new wxCheckBox(this, -1, _("&Seek video to line start time"));
auto_seek->SetValue(true);
hotkey_box->Add(auto_seek, 0, 0, 0);
hotkey_box->AddStretchSpacer(1);
right_sizer->Add(hotkey_box, 0, wxEXPAND | wxBOTTOM, 5);
}
{
wxSizer *actions_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Actions"));
actions_box->AddStretchSpacer(1);
play_audio = new wxButton(this, -1, _("Play &Audio"));
play_audio->Enable(c->audioController->IsAudioOpen());
actions_box->Add(play_audio, 0, wxLEFT | wxRIGHT | wxBOTTOM, 5);
play_video = new wxButton(this, -1, _("Play &Video"));
play_video->Enable(c->videoController->IsLoaded());
actions_box->Add(play_video, 0, wxBOTTOM | wxRIGHT, 5);
actions_box->AddStretchSpacer(1);
right_sizer->Add(actions_box, 0, wxEXPAND, 5);
}
bottom_sizer->Add(right_sizer);
main_sizer->Add(bottom_sizer, 1, wxEXPAND | wxLEFT | wxBOTTOM | wxRIGHT, 5);
{
auto button_sizer = new wxStdDialogButtonSizer;
button_sizer->AddButton(new wxButton(this, wxID_CANCEL));
button_sizer->AddButton(new HelpButton(this, "Styling Assistant"));
button_sizer->Realize();
main_sizer->Add(button_sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 5);
}
SetSizerAndFit(main_sizer);
persist = agi::util::make_unique<PersistLocation>(this, "Tool/Styling Assistant");
Bind(wxEVT_ACTIVATE, &DialogStyling::OnActivate, this);
Bind(wxEVT_CHAR_HOOK, &DialogStyling::OnCharHook, this);
style_name->Bind(wxEVT_CHAR_HOOK, &DialogStyling::OnCharHook, this);
style_name->Bind(wxEVT_KEY_DOWN, &DialogStyling::OnKeyDown, this);
play_video->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &DialogStyling::OnPlayVideoButton, this);
play_audio->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &DialogStyling::OnPlayAudioButton, this);
style_list->Bind(wxEVT_COMMAND_LISTBOX_SELECTED, &DialogStyling::OnListClicked, this);
style_list->Bind(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, &DialogStyling::OnListDoubleClicked, this);
style_name->Bind(wxEVT_COMMAND_TEXT_UPDATED, &DialogStyling::OnStyleBoxModified, this);
OnActiveLineChanged(c->selectionController->GetActiveLine());
}
示例5: Bind
bool DolphinApp::OnInit()
{
if (!wxApp::OnInit())
return false;
Bind(wxEVT_QUERY_END_SESSION, &DolphinApp::OnEndSession, this);
Bind(wxEVT_END_SESSION, &DolphinApp::OnEndSession, this);
Bind(wxEVT_IDLE, &DolphinApp::OnIdle, this);
// Register message box and translation handlers
RegisterMsgAlertHandler(&wxMsgAlert);
RegisterStringTranslator(&wxStringTranslator);
#if wxUSE_ON_FATAL_EXCEPTION
wxHandleFatalExceptions(true);
#endif
UICommon::SetUserDirectory(m_user_path.ToStdString());
UICommon::CreateDirectories();
InitLanguageSupport(); // The language setting is loaded from the user directory
UICommon::Init();
if (m_select_video_backend && !m_video_backend_name.empty())
SConfig::GetInstance().m_strVideoBackend = WxStrToStr(m_video_backend_name);
if (m_select_audio_emulation)
SConfig::GetInstance().bDSPHLE = (m_audio_emulation_name.Upper() == "HLE");
VideoBackendBase::ActivateBackend(SConfig::GetInstance().m_strVideoBackend);
DolphinAnalytics::Instance()->ReportDolphinStart("wx");
// Enable the PNG image handler for screenshots
wxImage::AddHandler(new wxPNGHandler);
int x = SConfig::GetInstance().iPosX;
int y = SConfig::GetInstance().iPosY;
int w = SConfig::GetInstance().iWidth;
int h = SConfig::GetInstance().iHeight;
// The following is not needed with X11, where window managers
// do not allow windows to be created off the desktop.
#ifdef _WIN32
// Out of desktop check
int leftPos = GetSystemMetrics(SM_XVIRTUALSCREEN);
int topPos = GetSystemMetrics(SM_YVIRTUALSCREEN);
int width = GetSystemMetrics(SM_CXVIRTUALSCREEN);
int height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
if ((leftPos + width) < (x + w) || leftPos > x || (topPos + height) < (y + h) || topPos > y)
x = y = wxDefaultCoord;
#elif defined __APPLE__
if (y < 1)
y = wxDefaultCoord;
#endif
main_frame = new CFrame(nullptr, wxID_ANY, StrToWxStr(scm_rev_str), wxPoint(x, y), wxSize(w, h),
m_use_debugger, m_batch_mode, m_use_logger);
SetTopWindow(main_frame);
main_frame->SetMinSize(wxSize(400, 300));
AfterInit();
return true;
}
示例6: wxDialog
PostProcessingConfigDiag::PostProcessingConfigDiag(wxWindow* parent, const std::string& shader)
: wxDialog(parent, wxID_ANY, _("Post Processing Shader Configuration")),
m_shader(shader)
{
// Depending on if we are running already, either use the one from the videobackend
// or generate our own.
if (g_renderer && g_renderer->GetPostProcessor())
{
m_post_processor = g_renderer->GetPostProcessor()->GetConfig();
}
else
{
m_post_processor = new PostProcessingShaderConfiguration();
m_post_processor->LoadShader(m_shader);
}
// Create our UI classes
const PostProcessingShaderConfiguration::ConfigMap& config_map = m_post_processor->GetOptions();
for (const auto& it : config_map)
{
if (it.second.m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_BOOL)
{
ConfigGrouping* group = new ConfigGrouping(ConfigGrouping::WidgetType::TYPE_TOGGLE,
it.second.m_gui_name, it.first, it.second.m_dependent_option,
&it.second);
m_config_map[it.first] = group;
}
else
{
ConfigGrouping* group = new ConfigGrouping(ConfigGrouping::WidgetType::TYPE_SLIDER,
it.second.m_gui_name, it.first, it.second.m_dependent_option,
&it.second);
m_config_map[it.first] = group;
}
}
// Arrange our vectors based on dependency
for (const auto& it : m_config_map)
{
const std::string parent_name = it.second->GetParent();
if (parent_name.size())
{
// Since it depends on a different object, push it to a parent's object
m_config_map[parent_name]->AddChild(m_config_map[it.first]);
}
else
{
// It doesn't have a child, just push it to the vector
m_config_groups.push_back(m_config_map[it.first]);
}
}
// Generate our UI
wxNotebook* const notebook = new wxNotebook(this, wxID_ANY);
wxPanel* const page_general = new wxPanel(notebook);
wxFlexGridSizer* const szr_general = new wxFlexGridSizer(2, 5, 5);
// Now let's actually populate our window with our information
bool add_general_page = false;
for (const auto& it : m_config_groups)
{
if (it->HasChildren())
{
// Options with children get their own tab
wxPanel* const page_option = new wxPanel(notebook);
wxFlexGridSizer* const szr_option = new wxFlexGridSizer(2, 10, 5);
it->GenerateUI(this, page_option, szr_option);
// Add all the children
for (const auto& child : it->GetChildren())
{
child->GenerateUI(this, page_option, szr_option);
}
page_option->SetSizerAndFit(szr_option);
notebook->AddPage(page_option, _(it->GetGUIName()));
}
else
{
// Options with no children go in to the general tab
if (!add_general_page)
{
// Make it so it doesn't show up if there aren't any options without children.
add_general_page = true;
}
it->GenerateUI(this, page_general, szr_general);
}
}
if (add_general_page)
{
page_general->SetSizerAndFit(szr_general);
notebook->InsertPage(0, page_general, _("General"));
}
// Close Button
wxButton* const btn_close = new wxButton(this, wxID_OK, _("Close"));
btn_close->Bind(wxEVT_BUTTON, &PostProcessingConfigDiag::Event_ClickClose, this);
Bind(wxEVT_CLOSE_WINDOW, &PostProcessingConfigDiag::Event_Close, this);
//.........這裏部分代碼省略.........
示例7: traceloop
void
traceloop(void)
{
int seq, code, done;
double rtt;
struct rec *rec;
struct timeval tvrecv;
recvfd = Socket(pr->sasend->sa_family, SOCK_RAW, pr->icmpproto);
setuid(getuid()); /* don't need special permissions anymore */
#ifdef IPV6
if (pr->sasend->sa_family == AF_INET6 && verbose == 0) {
struct icmp6_filter myfilt;
ICMP6_FILTER_SETBLOCKALL(&myfilt);
ICMP6_FILTER_SETPASS(ICMP6_TIME_EXCEEDED, &myfilt);
ICMP6_FILTER_SETPASS(ICMP6_DST_UNREACH, &myfilt);
setsockopt(recvfd, IPPROTO_IPV6, ICMP6_FILTER,
&myfilt, sizeof(myfilt));
}
#endif
sendfd = Socket(pr->sasend->sa_family, SOCK_DGRAM, 0);
pr->sabind->sa_family = pr->sasend->sa_family;
sport = (getpid() & 0xffff) | 0x8000; /* our source UDP port # */
sock_set_port(pr->sabind, pr->salen, htons(sport));
Bind(sendfd, pr->sabind, pr->salen);
sig_alrm(SIGALRM);
seq = 0;
done = 0;
for (ttl = 1; ttl <= max_ttl && done == 0; ttl++) {
Setsockopt(sendfd, pr->ttllevel, pr->ttloptname, &ttl, sizeof(int));
bzero(pr->salast, pr->salen);
printf("%2d ", ttl);
fflush(stdout);
for (probe = 0; probe < nprobes; probe++) {
rec = (struct rec *) sendbuf;
rec->rec_seq = ++seq;
rec->rec_ttl = ttl;
Gettimeofday(&rec->rec_tv, NULL);
sock_set_port(pr->sasend, pr->salen, htons(dport + seq));
Sendto(sendfd, sendbuf, datalen, 0, pr->sasend, pr->salen);
if ( (code = (*pr->recv)(seq, &tvrecv)) == -3)
printf(" *"); /* timeout, no reply */
else {
char str[NI_MAXHOST];
if (sock_cmp_addr(pr->sarecv, pr->salast, pr->salen) != 0) {
if (getnameinfo(pr->sarecv, pr->salen, str, sizeof(str),
NULL, 0, 0) == 0)
printf(" %s (%s)", str,
Sock_ntop_host(pr->sarecv, pr->salen));
else
printf(" %s",
Sock_ntop_host(pr->sarecv, pr->salen));
memcpy(pr->salast, pr->sarecv, pr->salen);
}
tv_sub(&tvrecv, &rec->rec_tv);
rtt = tvrecv.tv_sec * 1000.0 + tvrecv.tv_usec / 1000.0;
printf(" %.3f ms", rtt);
if (code == -1) /* port unreachable; at destination */
done++;
else if (code >= 0)
printf(" (ICMP %s)", (*pr->icmpcode)(code));
}
fflush(stdout);
}
printf("\n");
}
}
示例8: Bind
ServerPlayModeMap::ServerPlayModeMap() {
Bind("before_kick_off", SPM_BeforeKickOff);
Bind("time_over", SPM_TimeOver);
Bind("play_on", SPM_PlayOn);
Bind("kick_off_l", SPM_KickOff_Left);
Bind("kick_off_r", SPM_KickOff_Right);
Bind("kick_in_l", SPM_KickIn_Left);
Bind("kick_in_r", SPM_KickIn_Right);
Bind("free_kick_l", SPM_FreeKick_Left);
Bind("free_kick_r", SPM_FreeKick_Right);
Bind("corner_kick_l", SPM_CornerKick_Left);
Bind("corner_kick_r", SPM_CornerKick_Right);
Bind("goal_kick_l", SPM_GoalKick_Left);
Bind("goal_kick_r", SPM_GoalKick_Right);
Bind("goal_l", SPM_AfterGoal_Left);
Bind("goal_r", SPM_AfterGoal_Right);
Bind("drop_ball", SPM_Drop_Ball);
Bind("offside_l", SPM_OffSide_Left);
Bind("offside_r", SPM_OffSide_Right);
Bind("penalty_kick_l", SPM_PK_Left);
Bind("penalty_kick_r", SPM_PK_Right);
Bind("first_half_over", SPM_FirstHalfOver);
Bind("pause", SPM_Pause);
Bind("human_judge", SPM_Human);
Bind("foul_charge_l", SPM_Foul_Charge_Left);
Bind("foul_charge_r", SPM_Foul_Charge_Right);
Bind("foul_push_l", SPM_Foul_Push_Left);
Bind("foul_push_r", SPM_Foul_Push_Right);
Bind("foul_multiple_attack_l", SPM_Foul_MultipleAttacker_Left);
Bind("foul_multiple_attack_r", SPM_Foul_MultipleAttacker_Right);
Bind("foul_ballout_l", SPM_Foul_BallOut_Left);
Bind("foul_ballout_r", SPM_Foul_BallOut_Right);
Bind("back_pass_l", SPM_Back_Pass_Left);
Bind("back_pass_r", SPM_Back_Pass_Right);
Bind("free_kick_fault_l", SPM_Free_Kick_Fault_Left);
Bind("free_kick_fault_r", SPM_Free_Kick_Fault_Right);
Bind("catch_fault_l", SPM_CatchFault_Left);
Bind("catch_fault_r", SPM_CatchFault_Right);
Bind("indirect_free_kick_l", SPM_IndFreeKick_Left);
Bind("indirect_free_kick_r", SPM_IndFreeKick_Right);
Bind("penalty_setup_l", SPM_PenaltySetup_Left);
Bind("penalty_setup_r", SPM_PenaltySetup_Right);
Bind("penalty_ready_l", SPM_PenaltyReady_Left);
Bind("penalty_ready_r", SPM_PenaltyReady_Right);
Bind("penalty_taken_l", SPM_PenaltyTaken_Left);
Bind("penalty_taken_r", SPM_PenaltyTaken_Right);
Bind("penalty_miss_l", SPM_PenaltyMiss_Left);
Bind("penalty_miss_r", SPM_PenaltyMiss_Right);
Bind("penalty_score_l", SPM_PenaltyScore_Left);
Bind("penalty_score_r", SPM_PenaltyScore_Right);
Bind("goalie_catch_ball_l", SPM_GoalieCatchBall_Left);
Bind("goalie_catch_ball_r", SPM_GoalieCatchBall_Right);
Bind("foul_l", SPM_Foul_Left);
Bind("foul_r", SPM_Foul_Right);
Bind("penalty_onfield_l", SPM_PenaltyOnfield_Left);
Bind("penalty_onfield_r", SPM_PenaltyOnfield_Right);
Bind("penalty_foul_l", SPM_PenaltyFoul_Left);
Bind("penalty_foul_r", SPM_PenaltyFoul_Right);
Bind("penalty_winner_l", SPM_PenaltyWinner_Left);
Bind("penalty_winner_r", SPM_PenaltyWinner_Right);
Bind("half_time", SPM_HalfTime);
Bind("time_up", SPM_TimeUp);
Bind("time_extended", SPM_TimeExtended);
Assert(mString2Enum.size() == SPM_MAX - 1);
}
示例9: main
int main(int argc, char **argv)
{
struct msghdr *msg;
struct hwa_info *hwa, *hwahead;
struct sockaddr_un su;
struct sockaddr *sa;
socklen_t addrlen;
int i, j;
int protocol, maxfdp1;
fd_set rset;
char address[16], name[16];
char rcvline[MAXLINE];
struct hostent *host;
if(argc < 2)
{
printf("Usage: odr staleness\n");
return -1;
}
staleness = atoi(argv[1]);
gethostname(name, 16);
host = malloc(sizeof(struct hostent));
host = gethostbyname(name);
if(host == NULL)
printf("host is NULL\n");
strncpy(canonical, inet_ntoa( *( struct in_addr*)( host -> h_addr_list[0])), 16);
printf("Local ODR on host %s\n", name);
printf( "Canonical IP: %s\n", canonical);
printf("Finding interfaces\n");
for (i = 0, hwahead = hwa = Get_hw_addrs(); hwa != NULL && i < MAX_INTERFACES; hwa = hwa->hwa_next, i++)
{
if(strncmp(hwa->if_name, "eth0", 4) != 0 && strncmp(hwa->if_name, "lo", 2) != 0)
{
for(j = 0; j < 6; j++)
{
interfaces[i].if_haddr[j] = hwa->if_haddr[j];
}
interfaces[i].if_index = hwa->if_index;
sa = hwa->ip_addr;
strncpy(interfaces[i].ip_addr, sock_ntop_host(sa, sizeof(*sa)), 16);
printf("IP Address: %s\n", interfaces[i].ip_addr);
printf("Hardware Address: ");
printHW(interfaces[i].if_haddr);
printf("\nIndex: %d\n\n", interfaces[i].if_index);
}
else
i--;
}
if_nums = i;
err_msg("%s",ODR_SUNPATH);
printf("Found %d interfaces\n", if_nums);
//Creating packet socket
pfsock = socket(PF_PACKET, SOCK_RAW, htons(ODR_PROTOCOL));
if(pfsock < 0)
{
printf("pfsock: %d %s\n", errno, strerror(errno));
return -1;
}
//Creating application socket
su.sun_family = AF_LOCAL;
strcpy(su.sun_path, ODR_SUNPATH);
//strcat(su.sun_path, "\0");
appsock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if(appsock < 0)
{
printf("appsock: %d %s\n", errno, strerror(errno));
return -1;
}
unlink(ODR_SUNPATH);
if(Bind(appsock, (struct sockaddr*) &su, SUN_LEN(&su)) < 0)
{
printf("bind failed: %d %s\n", errno, strerror(errno));
return -1;
}
printf("Bound appsock\n");
for ( ; ; )
{
printf("in for\n");
FD_ZERO(&rset);
printf("zero\n");
FD_SET(pfsock, &rset);
printf("set1\n");
FD_SET(appsock, &rset);
printf("set2\n");
maxfdp1 = max(pfsock, appsock) + 1;
printf("max\n");
select(maxfdp1, &rset, NULL, NULL, NULL);
printf("Selecting...\n");
if(FD_ISSET(appsock, &rset))
//.........這裏部分代碼省略.........
示例10: wxStaticBox
void BedShapePanel::build_panel(ConfigOptionPoints* default_pt)
{
// on_change(nullptr);
auto box = new wxStaticBox(this, wxID_ANY, _(L("Shape")));
auto sbsizer = new wxStaticBoxSizer(box, wxVERTICAL);
// shape options
m_shape_options_book = new wxChoicebook(this, wxID_ANY, wxDefaultPosition,
wxSize(25*wxGetApp().em_unit(), -1), wxCHB_TOP);
sbsizer->Add(m_shape_options_book);
auto optgroup = init_shape_options_page(_(L("Rectangular")));
ConfigOptionDef def;
def.type = coPoints;
def.default_value = new ConfigOptionPoints{ Vec2d(200, 200) };
def.label = L("Size");
def.tooltip = L("Size in X and Y of the rectangular plate.");
Option option(def, "rect_size");
optgroup->append_single_option_line(option);
def.type = coPoints;
def.default_value = new ConfigOptionPoints{ Vec2d(0, 0) };
def.label = L("Origin");
def.tooltip = L("Distance of the 0,0 G-code coordinate from the front left corner of the rectangle.");
option = Option(def, "rect_origin");
optgroup->append_single_option_line(option);
optgroup = init_shape_options_page(_(L("Circular")));
def.type = coFloat;
def.default_value = new ConfigOptionFloat(200);
def.sidetext = L("mm");
def.label = L("Diameter");
def.tooltip = L("Diameter of the print bed. It is assumed that origin (0,0) is located in the center.");
option = Option(def, "diameter");
optgroup->append_single_option_line(option);
optgroup = init_shape_options_page(_(L("Custom")));
Line line{ "", "" };
line.full_width = 1;
line.widget = [this](wxWindow* parent) {
auto btn = new wxButton(parent, wxID_ANY, _(L("Load shape from STL...")), wxDefaultPosition, wxDefaultSize);
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(btn);
btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e)
{
load_stl();
}));
return sizer;
};
optgroup->append_line(line);
Bind(wxEVT_CHOICEBOOK_PAGE_CHANGED, ([this](wxCommandEvent e)
{
update_shape();
}));
// right pane with preview canvas
m_canvas = new Bed_2D(this);
m_canvas->m_bed_shape = default_pt->values;
// main sizer
auto top_sizer = new wxBoxSizer(wxHORIZONTAL);
top_sizer->Add(sbsizer, 0, wxEXPAND | wxLeft | wxTOP | wxBOTTOM, 10);
if (m_canvas)
top_sizer->Add(m_canvas, 1, wxEXPAND | wxALL, 10) ;
SetSizerAndFit(top_sizer);
set_shape(default_pt);
update_preview();
}
示例11: Bind
/**
* Unlocks the buffer. Pointers to buffer data will no longer be valid after this call
*/
void FSlateOpenGLIndexBuffer::Unlock()
{
Bind();
glUnmapBuffer( GL_ELEMENT_ARRAY_BUFFER );
}
示例12: wxFrame
//.........這裏部分代碼省略.........
m_btnClose->SetBitmapPressed(m_CloseButtonImg_Pressed);
m_btnClose->SetBitmapFocus(m_CloseButtonImg_Focus);
m_btnClose->SetBitmapCurrent(m_CloseButtonImg_Hover);
m_btnClose->SetBackgroundColour(APPLICATION_BACKGROUND);
m_btnClose->Enable(true);
gridBagSizerRight->Add( m_btnClose, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
gridBagSizerRight->AddGrowableCol( 0 );
gridBagSizerRight->AddGrowableRow( 0 );
gridBagSizerBody->Add( gridBagSizerRight, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_RIGHT|wxEXPAND, 5 );
gridBagSizerBody->AddGrowableCol( 1 );
gridBagSizerBody->AddGrowableRow( 0 );
gridBagSizerFrame->Add( gridBagSizerBody, wxGBPosition( 0, 0 ), wxGBSpan( 1, 2 ), wxEXPAND, 5 );
// Footer Area (Progress Bar and Launch button)
wxGridBagSizer* gridBagSizerFooter;
gridBagSizerFooter = new wxGridBagSizer( 0, 0 );
gridBagSizerFooter->SetFlexibleDirection( wxBOTH );
gridBagSizerFooter->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
// Text for the Progress Bar
m_txtProgress = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxNO_BORDER );
m_txtProgress->SetForegroundColour( COMPONENT_TEXT_COLOR );
m_txtProgress->SetBackgroundColour( APPLICATION_BACKGROUND );
gridBagSizerFooter->Add( m_txtProgress, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_BOTTOM|wxEXPAND, 5 );
// Progress Bar
m_progress = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
m_progress->SetValue( 0 );
m_progress->SetMinSize( wxSize( 500,25 ) );
gridBagSizerFooter->Add( m_progress, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_TOP|wxALL|wxEXPAND, 5 );
gridBagSizerFooter->AddGrowableCol( 0 );
gridBagSizerFooter->AddGrowableRow( 0 );
gridBagSizerFrame->Add( gridBagSizerFooter, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
// Launch Button
m_LaunchButtonImg_Normal.LoadFile(GetResourcesDirectory() + LAUNCH_BUTTON_NORMAL, wxBITMAP_TYPE_PNG);
m_LaunchButtonImg_Disabled.LoadFile(GetResourcesDirectory() + LAUNCH_BUTTON_DISABLED, wxBITMAP_TYPE_PNG);
m_LaunchButtonImg_Pressed.LoadFile(GetResourcesDirectory() + LAUNCH_BUTTON_PRESSED, wxBITMAP_TYPE_PNG);
m_LaunchButtonImg_Focus.LoadFile(GetResourcesDirectory() + LAUNCH_BUTTON_FOCUS, wxBITMAP_TYPE_PNG);
m_LaunchButtonImg_Hover.LoadFile(GetResourcesDirectory() + LAUNCH_BUTTON_HOVER, wxBITMAP_TYPE_PNG);
m_btnLaunch = new wxButton( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxBU_EXACTFIT | wxBU_NOTEXT);
m_btnLaunch->SetBitmap(m_LaunchButtonImg_Normal);
m_btnLaunch->SetBitmapDisabled(m_LaunchButtonImg_Disabled);
m_btnLaunch->SetBitmapPressed(m_LaunchButtonImg_Pressed);
m_btnLaunch->SetBitmapFocus(m_LaunchButtonImg_Focus);
m_btnLaunch->SetBitmapCurrent(m_LaunchButtonImg_Hover);
m_btnLaunch->SetBackgroundColour(APPLICATION_BACKGROUND);
m_btnLaunch->Enable( false );
gridBagSizerFrame->Add( m_btnLaunch, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_BOTTOM|wxALL, 5 );
gridBagSizerFrame->AddGrowableCol( 0 );
gridBagSizerFrame->AddGrowableRow( 0 );
this->SetSizer( gridBagSizerFrame );
this->Layout();
this->Centre( wxBOTH );
// Set background image, if any.
SetBackgroundStyle(wxBG_STYLE_PAINT);
if (g_BackgroundImage != wxEmptyString)
m_backgroundImg.LoadFile(g_BackgroundImage, wxBITMAP_TYPE_PNG);
// Bind Message Events
Bind(wxEVT_PAINT, &ZLauncherFrame::PaintEvent, this);
Bind(wxEVT_COMMAND_UPDATE_PROGRESS_BAR, &ZLauncherFrame::OnProgressBarUpdate, this);
Bind(wxEVT_COMMAND_UPDATE_PROGRESS_TEXT, &ZLauncherFrame::OnProgressTextUpdate, this);
Bind(wxEVT_COMMAND_HTML_SET_CONTENT, &ZLauncherFrame::OnHTMLSetContent, this);
Bind(wxEVT_COMMAND_HTML_LOAD_PAGE, &ZLauncherFrame::OnHTMLLoadPage, this);
Bind(wxEVT_COMMAND_ENABLE_LAUNCH_BUTTON, &ZLauncherFrame::OnEnableLaunchButton, this);
Bind(wxEVT_CLOSE_WINDOW, &ZLauncherFrame::OnClose, this);
Bind(wxEVT_WEBVIEW_NAVIGATING, &ZLauncherFrame::OnClickLink, this);
// Bind Button Events
m_btnClose->Bind(wxEVT_BUTTON, &ZLauncherFrame::OnCloseButtonClicked, this);
m_btnLaunch->Bind(wxEVT_BUTTON, &ZLauncherFrame::OnLaunchButtonClicked, this);
// Read Header html data from external file
if (wxFile::Exists(GetResourcesDirectory() + g_PatchHTMLHeaderFileName))
{
wxFile headerFile(GetResourcesDirectory() + g_PatchHTMLHeaderFileName, wxFile::OpenMode::read);
headerFile.ReadAll(&PatchHTMLHeader);
}
else
{
wxMessageBox(wxString::Format("HTML Header file missing. Make sure it can be found in the following directory:\n %s", GetResourcesDirectory() + g_PatchHTMLHeaderFileName), "Missing file", wxOK| wxICON_EXCLAMATION);
}
}
示例13: wxSashWindow
AudioBox::AudioBox(wxWindow *parent, agi::Context *context)
: wxSashWindow(parent, -1, wxDefaultPosition, wxDefaultSize, wxSW_3D | wxCLIP_CHILDREN)
, controller(context->audioController.get())
, context(context)
, audio_open_connection(context->audioController->AddAudioPlayerOpenListener(&AudioBox::OnAudioOpen, this))
, panel(new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_RAISED))
, audioDisplay(new AudioDisplay(panel, context->audioController.get(), context))
, HorizontalZoom(new wxSlider(panel, Audio_Horizontal_Zoom, -OPT_GET("Audio/Zoom/Horizontal")->GetInt(), -50, 30, wxDefaultPosition, wxSize(-1, 20), wxSL_VERTICAL|wxSL_BOTH))
, VerticalZoom(new wxSlider(panel, Audio_Vertical_Zoom, OPT_GET("Audio/Zoom/Vertical")->GetInt(), 0, 100, wxDefaultPosition, wxSize(-1, 20), wxSL_VERTICAL|wxSL_BOTH|wxSL_INVERSE))
, VolumeBar(new wxSlider(panel, Audio_Volume, OPT_GET("Audio/Volume")->GetInt(), 0, 100, wxDefaultPosition, wxSize(-1, 20), wxSL_VERTICAL|wxSL_BOTH|wxSL_INVERSE))
{
SetSashVisible(wxSASH_BOTTOM, true);
Bind(wxEVT_SASH_DRAGGED, &AudioBox::OnSashDrag, this);
HorizontalZoom->SetToolTip(_("Horizontal zoom"));
VerticalZoom->SetToolTip(_("Vertical zoom"));
VolumeBar->SetToolTip(_("Audio Volume"));
bool link = OPT_GET("Audio/Link")->GetBool();
if (link) {
VolumeBar->SetValue(VerticalZoom->GetValue());
VolumeBar->Enable(false);
}
// VertVol sider
wxSizer *VertVol = new wxBoxSizer(wxHORIZONTAL);
VertVol->Add(VerticalZoom,1,wxEXPAND,0);
VertVol->Add(VolumeBar,1,wxEXPAND,0);
wxSizer *VertVolArea = new wxBoxSizer(wxVERTICAL);
VertVolArea->Add(VertVol,1,wxEXPAND,0);
auto link_btn = new ToggleBitmap(panel, context, "audio/opt/vertical_link", 16, "Audio", wxSize(20, -1));
link_btn->SetMaxSize(wxDefaultSize);
VertVolArea->Add(link_btn, 0, wxRIGHT | wxEXPAND, 0);
OPT_SUB("Audio/Link", &AudioBox::OnVerticalLink, this);
// Top sizer
wxSizer *TopSizer = new wxBoxSizer(wxHORIZONTAL);
TopSizer->Add(audioDisplay,1,wxEXPAND,0);
TopSizer->Add(HorizontalZoom,0,wxEXPAND,0);
TopSizer->Add(VertVolArea,0,wxEXPAND,0);
context->karaoke = new AudioKaraoke(panel, context);
// Main sizer
auto MainSizer = new wxBoxSizer(wxVERTICAL);
MainSizer->Add(TopSizer,1,wxEXPAND|wxALL,3);
MainSizer->Add(toolbar::GetToolbar(panel, "audio", context, "Audio"),0,wxEXPAND|wxLEFT|wxRIGHT,3);
MainSizer->Add(context->karaoke,0,wxEXPAND|wxALL,3);
MainSizer->Show(context->karaoke, false);
panel->SetSizer(MainSizer);
wxSizer *audioSashSizer = new wxBoxSizer(wxHORIZONTAL);
audioSashSizer->Add(panel, 1, wxEXPAND);
SetSizerAndFit(audioSashSizer);
SetMinSize(wxSize(-1, OPT_GET("Audio/Display Height")->GetInt()));
SetMinimumSizeY(panel->GetSize().GetHeight());
audioDisplay->Bind(wxEVT_MOUSEWHEEL, &AudioBox::OnMouseWheel, this);
audioDisplay->SetZoomLevel(-HorizontalZoom->GetValue());
audioDisplay->SetAmplitudeScale(pow(mid(1, VerticalZoom->GetValue(), 100) / 50.0, 3));
}
示例14: Link
bool Link()
{
TIMER_ACCRUE(tc_ShaderGLSLLink);
ENSURE(!m_Program);
m_Program = pglCreateProgramObjectARB();
pglAttachObjectARB(m_Program, m_VertexShader);
ogl_WarnIfError();
pglAttachObjectARB(m_Program, m_FragmentShader);
ogl_WarnIfError();
// Set up the attribute bindings explicitly, since apparently drivers
// don't always pick the most efficient bindings automatically,
// and also this lets us hardcode indexes into VertexPointer etc
for (std::map<CStrIntern, int>::iterator it = m_VertexAttribs.begin(); it != m_VertexAttribs.end(); ++it)
pglBindAttribLocationARB(m_Program, it->second, it->first.c_str());
pglLinkProgramARB(m_Program);
GLint ok = 0;
pglGetProgramiv(m_Program, GL_LINK_STATUS, &ok);
GLint length = 0;
pglGetProgramiv(m_Program, GL_INFO_LOG_LENGTH, &length);
if (!ok && length == 0)
length = 4096;
if (length > 1)
{
char* infolog = new char[length];
pglGetProgramInfoLog(m_Program, length, NULL, infolog);
if (ok)
LOGMESSAGE(L"Info when linking program '%ls'+'%ls':\n%hs", m_VertexFile.string().c_str(), m_FragmentFile.string().c_str(), infolog);
else
LOGERROR(L"Failed to link program '%ls'+'%ls':\n%hs", m_VertexFile.string().c_str(), m_FragmentFile.string().c_str(), infolog);
delete[] infolog;
}
ogl_WarnIfError();
if (!ok)
return false;
m_Uniforms.clear();
m_Samplers.clear();
Bind();
ogl_WarnIfError();
GLint numUniforms = 0;
pglGetProgramiv(m_Program, GL_ACTIVE_UNIFORMS, &numUniforms);
ogl_WarnIfError();
for (GLint i = 0; i < numUniforms; ++i)
{
char name[256] = {0};
GLsizei nameLength = 0;
GLint size = 0;
GLenum type = 0;
pglGetActiveUniformARB(m_Program, i, ARRAY_SIZE(name), &nameLength, &size, &type, name);
ogl_WarnIfError();
GLint loc = pglGetUniformLocationARB(m_Program, name);
CStrIntern nameIntern(name);
m_Uniforms[nameIntern] = std::make_pair(loc, type);
// Assign sampler uniforms to sequential texture units
if (type == GL_SAMPLER_2D
|| type == GL_SAMPLER_CUBE
#if !CONFIG2_GLES
|| type == GL_SAMPLER_2D_SHADOW
#endif
)
{
int unit = (int)m_Samplers.size();
m_Samplers[nameIntern].first = (type == GL_SAMPLER_CUBE ? GL_TEXTURE_CUBE_MAP : GL_TEXTURE_2D);
m_Samplers[nameIntern].second = unit;
pglUniform1iARB(loc, unit); // link uniform to unit
ogl_WarnIfError();
}
}
// TODO: verify that we're not using more samplers than is supported
Unbind();
ogl_WarnIfError();
return true;
}
示例15: wxDialog
//.........這裏部分代碼省略.........
{
guChannelUpdateImageThread * UpdateImageThread = new guChannelUpdateImageThread( this, channel->m_Image.c_str() );
if( !UpdateImageThread )
{
guLogError( wxT( "Could not create the Channel Image Thread" ) );
}
}
}
}
m_Title = new wxStaticText( this, wxID_ANY, channel->m_Title, wxDefaultPosition, wxDefaultSize, 0 );
FlexGridSizer->Add( m_Title, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
DescLabel = new wxStaticText( this, wxID_ANY, _( "Description:" ), wxDefaultPosition, wxDefaultSize, 0 );
DescLabel->Wrap( -1 );
DescLabel->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
FlexGridSizer->Add( DescLabel, 0, wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_DescText = new wxStaticText( this, wxID_ANY, ( channel->m_Description.Length() > 200 ?
channel->m_Description.Mid( 0, 200 ) + wxT( " ..." ) :
channel->m_Description ), wxDefaultPosition, wxDefaultSize, 0 );
m_DescText->Wrap( 450 );
FlexGridSizer->Add( m_DescText, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
AuthorLabel = new wxStaticText( this, wxID_ANY, _("Author:"), wxDefaultPosition, wxDefaultSize, 0 );
AuthorLabel->Wrap( -1 );
AuthorLabel->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
FlexGridSizer->Add( AuthorLabel, 0, wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_AuthorText = new wxStaticText( this, wxID_ANY, channel->m_Author, wxDefaultPosition, wxDefaultSize, 0 );
m_AuthorText->Wrap( -1 );
FlexGridSizer->Add( m_AuthorText, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
OwnerLabel = new wxStaticText( this, wxID_ANY, _("Owner:"), wxDefaultPosition, wxDefaultSize, 0 );
OwnerLabel->Wrap( -1 );
OwnerLabel->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
FlexGridSizer->Add( OwnerLabel, 0, wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_OwnerText = new wxStaticText( this, wxID_ANY, channel->m_OwnerName +
wxT( " ( " ) + channel->m_OwnerEmail + wxT( " )" ) , wxDefaultPosition, wxDefaultSize, 0 );
m_OwnerText->Wrap( -1 );
FlexGridSizer->Add( m_OwnerText, 0, wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
DownloadLabel = new wxStaticText( this, wxID_ANY, _("Download:"), wxDefaultPosition, wxDefaultSize, 0 );
DownloadLabel->Wrap( -1 );
FlexGridSizer->Add( DownloadLabel, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
wxBoxSizer* DownloadSizer;
DownloadSizer = new wxBoxSizer( wxHORIZONTAL );
wxString m_DownloadChoiceChoices[] = { _( "Manually" ), _( "Only if contains" ), _( "Everything" ) };
int m_DownloadChoiceNChoices = sizeof( m_DownloadChoiceChoices ) / sizeof( wxString );
m_DownloadChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_DownloadChoiceNChoices, m_DownloadChoiceChoices, 0 );
m_DownloadChoice->SetSelection( channel->m_DownloadType );
DownloadSizer->Add( m_DownloadChoice, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 );
m_DownloadText = new wxTextCtrl( this, wxID_ANY, channel->m_DownloadText, wxDefaultPosition, wxDefaultSize, 0 );
m_DownloadText->Enable( ( channel->m_DownloadType == guPODCAST_DOWNLOAD_FILTER ) );
DownloadSizer->Add( m_DownloadText, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
FlexGridSizer->Add( DownloadSizer, 1, wxEXPAND, 5 );
DeleteLabel = new wxStaticText( this, wxID_ANY, _("Delete:"), wxDefaultPosition, wxDefaultSize, 0 );
DeleteLabel->Wrap( -1 );
FlexGridSizer->Add( DeleteLabel, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_DeleteCheckBox = new wxCheckBox( this, wxID_ANY, _( "Allow delete old items" ), wxDefaultPosition, wxDefaultSize, 0 );
m_DeleteCheckBox->SetValue( channel->m_AllowDelete );
FlexGridSizer->Add( m_DeleteCheckBox, 0, wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
ChannelSizer->Add( FlexGridSizer, 1, wxEXPAND, 5 );
MainSizer->Add( ChannelSizer, 1, wxEXPAND|wxALL, 5 );
ButtonsSizer = new wxStdDialogButtonSizer();
ButtonsSizerOK = new wxButton( this, wxID_OK );
ButtonsSizer->AddButton( ButtonsSizerOK );
ButtonsSizerCancel = new wxButton( this, wxID_CANCEL );
ButtonsSizer->AddButton( ButtonsSizerCancel );
ButtonsSizer->SetAffirmativeButton( ButtonsSizerOK );
ButtonsSizer->SetCancelButton( ButtonsSizerCancel );
ButtonsSizer->Realize();
MainSizer->Add( ButtonsSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
this->SetSizer( MainSizer );
this->Layout();
ButtonsSizerOK->SetDefault();
// Bind Events
m_DownloadChoice->Bind( wxEVT_CHOICE, &guChannelEditor::OnDownloadChoice, this );
Bind( guChannelEditorEvent, &guChannelEditor::OnChannelImageUpdated, this, guCHANNELEDITOR_EVENT_UPDATE_IMAGE );
m_DescText->SetFocus();
}