示例#1
0
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()));
	}	
}
示例#2
0
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);
}
示例#3
0
文件: text_f.cpp 项目: jumandan/cafe
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);
	}
}
示例#4
0
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())));
}
示例#5
0
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;
}