void coupon_calc_f::num_btnClick( wxCommandEvent& event ) { // TODO: Implement num_btnClick destroyProcessor_t<boost::function<void ()> > restoreFocus(boost::function<void ()>(boost::bind(&wxWindow::SetFocus, clear_btn))); wxButton* btn = dynamic_cast<wxButton*>(event.GetEventObject()); if (btn == 0) return; int num = boost::lexical_cast<int>(to_mb(btn->GetLabel())); try { if (press_ == procent_btn) { wxString str = procent_ed->GetValue(); double val = ksi_cafe::percent_t().reverse(to_mb(str)); val = val*10 + num; procent_ed->SetValue(to_uc(ksi_cafe::percent_t().format(val))); money_ed->SetValue(locale->get_currency(val*subtotal_/100)); if (val*10 + 0 > 100) num00_btn->Enable(false); else num00_btn->Enable(true); if (val*10 + 1 > 100) num01_btn->Enable(false); else num01_btn->Enable(true); if (val*10 + 2 > 100) num02_btn->Enable(false); else num02_btn->Enable(true); if (val*10 + 3 > 100) num03_btn->Enable(false); else num03_btn->Enable(true); if (val*10 + 4 > 100) num04_btn->Enable(false); else num04_btn->Enable(true); if (val*10 + 5 > 100) num05_btn->Enable(false); else num05_btn->Enable(true); if (val*10 + 6 > 100) num06_btn->Enable(false); else num06_btn->Enable(true); if (val*10 + 7 > 100) num07_btn->Enable(false); else num07_btn->Enable(true); if (val*10 + 8 > 100) num08_btn->Enable(false); else num08_btn->Enable(true); if (val*10 + 9 > 100) num09_btn->Enable(false); else num09_btn->Enable(true); } else { double val = locale->reverse_currency(money_ed->GetValue()); val = val*10 + double(num)/100; money_ed->SetValue(locale->get_currency(val)); double percent = 100*val/subtotal_; procent_ed->SetValue(to_uc(ksi_cafe::percent_t().format(percent))); if (val*10 + double(0)/100 > subtotal_) num00_btn->Enable(false); else num00_btn->Enable(true); if (val*10 + double(1)/100 > subtotal_) num01_btn->Enable(false); else num01_btn->Enable(true); if (val*10 + double(2)/100 > subtotal_) num02_btn->Enable(false); else num02_btn->Enable(true); if (val*10 + double(3)/100 > subtotal_) num03_btn->Enable(false); else num03_btn->Enable(true); if (val*10 + double(4)/100 > subtotal_) num04_btn->Enable(false); else num04_btn->Enable(true); if (val*10 + double(5)/100 > subtotal_) num05_btn->Enable(false); else num05_btn->Enable(true); if (val*10 + double(6)/100 > subtotal_) num06_btn->Enable(false); else num06_btn->Enable(true); if (val*10 + double(7)/100 > subtotal_) num07_btn->Enable(false); else num07_btn->Enable(true); if (val*10 + double(8)/100 > subtotal_) num08_btn->Enable(false); else num08_btn->Enable(true); if (val*10 + double(9)/100 > subtotal_) num09_btn->Enable(false); else num09_btn->Enable(true); } wxString str = money_ed->GetValue(); if (int(locale->reverse_currency(str)*100) != 0) ok_btn->Enable(true); else ok_btn->Enable(false); } catch (exception_t& ex) { wxMessageBox(to_uc(ex.comp_message())); } }
char * to_mb_string(const wchar_t *wcs) { char *mbs; char *ptr; int len; mbs = malloc((wcslen(wcs) * mb_cur_max) + 1); if (mbs == NULL) { errf("out of memory"); return (NULL); } ptr = mbs; while (*wcs) { if ((len = to_mb(ptr, *wcs)) < 0) { INTERR; free(mbs); return (NULL); } wcs++; ptr += len; } *ptr = 0; return (mbs); }
void text_f::btnClick( wxCommandEvent& event ) { // TODO: Implement btnClick wxButton* btn = dynamic_cast<wxButton*>(event.GetEventObject()); if (btn == 0) return; if (active_ == text_ed) { text_ed->WriteText(btn->GetLabel()); } else if (active_ == amount_ed && currency) { wxString sval = btn->GetLabel(); amount_ed->SetInsertionPoint(amount_ed->GetLastPosition()); int val = -1; if (sval == _("1")) val = 1; else if (sval == _("2")) val = 2; else if (sval == _("3")) val = 3; else if (sval == _("4")) val = 4; else if (sval == _("5")) val = 5; else if (sval == _("6")) val = 6; else if (sval == _("7")) val = 7; else if (sval == _("8")) val = 8; else if (sval == _("9")) val = 9; else if (sval == _("0")) val = 0; if (val != -1) { double amount = currency->reverse(to_mb(amount_ed->GetValue())); if (amount > 999999) return; amount = amount*10+double(val)/100; amount_ed->SetValue(to_uc(currency->format(amount))); } } if (passwd_) { vkbdEvent throw_event(btn->GetLabel(), 0); GetParent()->GetEventHandler()->ProcessEvent(throw_event); } }
void tip_amount_f::btnClick( wxCommandEvent& event ) { // TODO: Implement btnClick wxButton* btn = dynamic_cast<wxButton*>(event.GetEventObject()); if (btn == 0) return; int curr_val = boost::lexical_cast<int>(to_mb(btn->GetLabel())); double tip = locale->reverse_currency(tip_ed->GetValue())*10 + double(curr_val)/100; tip_ed->SetValue(locale->get_currency(tip)); total_ed->SetValue(locale->get_currency(tip+locale->reverse_currency(amount_ed->GetValue()))); }
int progressbar::update(double now) { time_t tnow; time(&tnow); const time_t elapsed = tnow - _time_started; bool force_update = false; #ifdef WITH_RESIZE if (recv_sigwinch && _mode == normal) { const size_t old_term_width = _term_width; _term_width = get_term_width(); if (!_term_width) _term_width = default_term_width; if (_term_width != old_term_width) { _width = _term_width; force_update = true; } recv_sigwinch = 0; } #endif // WITH_RESIZE const bool inactive = now == 0; if (!_done) { if ((elapsed - _last_update) < _update_interval && !force_update) { return 0; } } else now = _expected_bytes; // Current size. const double size = (!_done) ? _initial_bytes + now : now; std::stringstream size_s; size_s.setf(std::ios::fixed); size_s << std::setprecision(1) << to_mb(size) << "M"; // Rate. double rate = elapsed ? (now/elapsed):0; std::stringstream rate_s, eta_s; rate_s.setf(std::ios::fixed); eta_s.setf(std::ios::fixed); if (!inactive) { // ETA. std::string eta; if (!_done) { const double left = (_expected_bytes - (now + _initial_bytes)) / rate; eta = to_s(static_cast<int>(left+0.5)); } else { rate = (_expected_bytes - _initial_bytes) / elapsed; eta = to_s(elapsed); } std::string unit = to_unit(rate); rate_s << std::setw(4) << std::setprecision(1) << rate << unit; eta_s << std::setw(6) << eta; } else // ETA: inactive (default). { rate_s << "--.-K/s"; eta_s << "--:--:--"; } // Percent. std::stringstream percent_s; int percent = 0; if (_expected_bytes > 0) { percent = static_cast<int>(100.0*size/_expected_bytes); if (percent < 100) percent_s << std::setw(2) << percent << "%"; else percent_s << "100%"; } // Filename. fs::path p = fs::system_complete(_file.path()); #if BOOST_FILESYSTEM_VERSION > 2 std::string fname = p.filename().string(); #else std::string fname = p.filename(); #endif switch (_mode) { default: case normal: _normal(size_s, rate_s, eta_s, percent, percent_s); break; case dotline: _dotline(size_s, rate_s, eta_s, percent_s); break; case simple: _simple(size_s, percent_s); break; } _last_update = elapsed; _count = now; return 0; }