示例#1
0
void TankItem::modelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
{
	// We don't have enougth data to calculate things, quit.

	if (!dataModel || !pInfoEntry || !pInfoNr)
		return;

	// remove the old rectangles
	foreach (QGraphicsRectItem *r, rects) {
		delete(r);
	}
	rects.clear();

	// walk the list and figure out which tanks go where
	struct plot_data *entry = pInfoEntry;
	int cylIdx = entry->cylinderindex;
	int i = -1;
	int startTime = 0;
	struct gasmix *gas = &diveCylinderStore.cylinder[cylIdx].gasmix;
	qreal width, left;
	while (++i < pInfoNr) {
		entry = &pInfoEntry[i];
		if (entry->cylinderindex == cylIdx)
			continue;
		width = hAxis->posAtValue(entry->sec) - hAxis->posAtValue(startTime);
		left = hAxis->posAtValue(startTime);
		createBar(left, width, gas);
		cylIdx = entry->cylinderindex;
		gas = &diveCylinderStore.cylinder[cylIdx].gasmix;
		startTime = entry->sec;
	}
	width = hAxis->posAtValue(entry->sec) - hAxis->posAtValue(startTime);
	left = hAxis->posAtValue(startTime);
	createBar(left, width, gas);
}
示例#2
0
PopupChatWidget::PopupChatWidget(SimpleChatServer& server,
				 const std::string& id)
  : SimpleChatWidget(server),
    missedMessages_(0)
{
  setId(id);

  if (Wt::WApplication::instance()->environment().agentIsIE()) {
    if (Wt::WApplication::instance()->environment().agent()
	== Wt::WEnvironment::IE6)
      setPositionScheme(Wt::Absolute);
    else
      setPositionScheme(Wt::Fixed);
  }

  implementJavaScript
    (&PopupChatWidget::toggleSize,
     "{"
     """var s = $('#" + id + "');"
     """s.toggleClass('chat-maximized chat-minimized');"
     "}");

  online_ = false;
  minimized_ = true;
  setStyleClass("chat-widget chat-minimized");

  clear();
  addWidget(createBar());
  updateUsers();

  connect();

}
示例#3
0
void TankItem::modelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
{
	Q_UNUSED(topLeft);
	Q_UNUSED(bottomRight);
	// We don't have enougth data to calculate things, quit.
	if (!dataModel || !pInfoEntry || !pInfoNr)
		return;

	// remove the old rectangles
	foreach (QGraphicsRectItem *r, rects) {
		delete(r);
	}
	rects.clear();

	qreal width, left;

	// Find correct end of the dive plot for correct end of the tankbar
	struct plot_data *last_entry = &pInfoEntry[pInfoNr-1];

	// get the information directly from the displayed_dive (the dc always exists)
	struct divecomputer *dc = get_dive_dc(&displayed_dive, dc_number);

	// start with the first gasmix and at the start of the dive
	int cyl = explicit_first_cylinder(&displayed_dive, dc);
	struct gasmix *gasmix = &displayed_dive.cylinder[cyl].gasmix;
	int startTime = 0;

	// work through all the gas changes and add the rectangle for each gas while it was used
	struct event *ev = get_next_event(dc->events, "gaschange");
	while (ev && ev->time.seconds < last_entry->sec) {
		width = hAxis->posAtValue(ev->time.seconds) - hAxis->posAtValue(startTime);
		left = hAxis->posAtValue(startTime);
		createBar(left, width, gasmix);
		startTime = ev->time.seconds;
		gasmix = get_gasmix_from_event(&displayed_dive, ev);
		ev = get_next_event(ev->next, "gaschange");
	}
	width = hAxis->posAtValue(last_entry->sec) - hAxis->posAtValue(startTime);
	left = hAxis->posAtValue(startTime);
	createBar(left, width, gasmix);
}
示例#4
0
void PopupChatWidget::createLayout(Wt::WWidget *messages,
				   Wt::WWidget *userList,
				   Wt::WWidget *messageEdit,
				   Wt::WWidget *sendButton,
				   Wt::WWidget *logoutButton)
{
  Wt::WVBoxLayout *layout = new Wt::WVBoxLayout();
  layout->setContentsMargins(0, 0, 0, 0);
  layout->setSpacing(0);

  Wt::WContainerWidget *bar = createBar();

  layout->addWidget(bar);
  layout->addWidget(messages, 1);
  layout->addWidget(messageEdit);

  setLayout(layout);
}
示例#5
0
bool WidgetBar::load( std::string id )
{
	if( !WidgetText::load( id ) )
		return false;

	std::string imgname;
	int picture;
	int barheight;
	color4u color;
	std::vector<int> vcolor;
	LuaConfig* cfg = new LuaConfig;

	//Order: topimgx, topimgy, barheight, r, g, b
	//Ya, it's cruve, but it's simple
	cfg->getValue( "barheight", id, barheight );
	cfg->getValue( "barwidth", id, BarWidth );
	cfg->getValue( "barx", id, BarX );
	cfg->getValue( "bary", id, BarY );
	cfg->getValue( "topimage", id, imgname );
	cfg->getValue( "toppicture", id, picture );
	cfg->getValue( "barcoverx", id, TopX );
	cfg->getValue( "barcovery", id, TopY );
	cfg->getValue( "barcolor", id, vcolor );

	for( unsigned int i=0; i < 3; ++i ){
		if( i >= vcolor.size() )
			vcolor.push_back(0);
	}
	color.set( (unsigned)vcolor[0], (unsigned)vcolor[1], (unsigned)vcolor[2] );

	if( BarWidth <= 0 )
		BarWidth = (float)Width;
	createBar( imgname, picture, barheight, color );
	updatePosition();

	delete cfg;

	return true;
}
示例#6
0
void *Commands::processEvent(Event *e)
{
    BarShow *b;
    ProcessMenuParam *mp;
    switch (e->type()){
    case EventPluginsUnload:
        clear();
        break;
    case EventToolbarCreate:
        return (void*)createBar((unsigned)(e->param()));
    case EventToolbarRemove:
        removeBar((unsigned)(e->param()));
        break;
    case EventShowBar:
        b = (BarShow*)(e->param());
        return show(b->bar_id, b->parent);
    case EventMenuCreate:
        return (void*)createMenu((unsigned)(e->param()));
    case EventMenuRemove:
        removeMenu((unsigned)(e->param()));
        break;
    case EventGetMenu:
        return (void*)get((CommandDef*)(e->param()));
    case EventGetMenuDef:
        return (void*)getDef((unsigned)(e->param()));
    case EventProcessMenu:
        mp = (ProcessMenuParam*)(e->param());
        return (void*)processMenu(mp->id, mp->param, mp->key);
    case EventMenuCustomize:
        customizeMenu((unsigned)(e->param()));
        break;
    default:
        break;
    }
    return NULL;
}
MiniStatusWindow::MiniStatusWindow() :
    Window("MiniStatus", false, nullptr, "ministatus.xml"),
    InventoryListener(),
    AttributeListener(),
    StatListener(),
    ArrowsListener(),
    UpdateStatusListener(),
    mBars(),
    mBarNames(),
    mIcons(),
    // TRANSLATORS: status bar name
    mHpBar(createBar(0, 100, 0, Theme::HP_BAR, Theme::PROG_HP,
        "hpprogressbar.xml", "hpprogressbar_fill.xml",
        "hp bar", _("health bar"))),
    mMpBar(Net::getGameHandler()->canUseMagicBar()
        ? createBar(0, 100, 0, Net::getPlayerHandler()->canUseMagic()
        ? Theme::MP_BAR : Theme::NO_MP_BAR,
        Net::getPlayerHandler()->canUseMagic()
        ? Theme::PROG_MP : Theme::PROG_NO_MP,
        Net::getPlayerHandler()->canUseMagic()
        ? "mpprogressbar.xml" : "nompprogressbar.xml",
        Net::getPlayerHandler()->canUseMagic()
        ? "mpprogressbar_fill.xml" : "nompprogressbar_fill.xml",
        // TRANSLATORS: status bar name
        "mp bar", _("mana bar")) : nullptr),
    mXpBar(createBar(0, 100, 0, Theme::XP_BAR, Theme::PROG_EXP,
        "xpprogressbar.xml", "xpprogressbar_fill.xml",
        // TRANSLATORS: status bar name
        "xp bar", _("experience bar"))),
    mJobBar(nullptr),
    mWeightBar(createBar(0, 140, 0, Theme::WEIGHT_BAR, Theme::PROG_WEIGHT,
        "weightprogressbar.xml", "weightprogressbar_fill.xml",
        // TRANSLATORS: status bar name
        "weight bar", _("weight bar"))),
    mInvSlotsBar(createBar(0, 45, 0,
        Theme::SLOTS_BAR, Theme::PROG_INVY_SLOTS,
        "slotsprogressbar.xml", "slotsprogressbar_fill.xml",
        "inventory slots bar",
        // TRANSLATORS: status bar name
        _("inventory slots bar"))),
    mMoneyBar(createBar(0, 130, 0, Theme::MONEY_BAR, Theme::PROG_MONEY,
        "moneyprogressbar.xml", "moneyprogressbar_fill.xml",
        // TRANSLATORS: status bar name
        "money bar", _("money bar"))),
    mArrowsBar(createBar(0, 50, 0, Theme::ARROWS_BAR, Theme::PROG_ARROWS,
        "arrowsprogressbar.xml", "arrowsprogressbar_fill.xml",
        // TRANSLATORS: status bar name
        "arrows bar", _("arrows bar"))),
    mStatusBar(createBar(100, (config.getIntValue("fontSize") > 16
        ? 250 : 165), 0, Theme::STATUS_BAR, Theme::PROG_STATUS,
        "statusprogressbar.xml", "statusprogressbar_fill.xml",
        // TRANSLATORS: status bar name
        "status bar", _("status bar"))),
    mTextPopup(new TextPopup),
    mStatusPopup(new StatusPopup),
    mSpacing(mSkin ? mSkin->getOption("spacing", 3) : 3),
    mIconPadding(mSkin ? mSkin->getOption("iconPadding", 3) : 3),
    mIconSpacing(mSkin ? mSkin->getOption("iconSpacing", 2) : 2),
    mMaxX(0)
{
    mTextPopup->postInit();
    mStatusPopup->postInit();

    StatusWindow::updateHPBar(mHpBar);

    if (Net::getGameHandler()->canUseMagicBar() && statusWindow)
        statusWindow->updateMPBar(mMpBar);

    const int job = Net::getPlayerHandler()->getJobLocation()
        && serverConfig.getValueBool("showJob", true);

    StatusWindow::updateXPBar(mXpBar);

    if (job)
    {
        mJobBar = createBar(0, 100, 0, Theme::JOB_BAR, Theme::PROG_JOB,
            // TRANSLATORS: status bar name
            "jobprogressbar.xml", "jobprogressbar_fill.xml",
            "job bar", _("job bar"));
        StatusWindow::updateJobBar(mJobBar);
    }

    loadBars();
    updateBars();

    setVisible(true);
    addMouseListener(this);
    Inventory *const inv = PlayerInfo::getInventory();
    if (inv)
        inv->addInventoyListener(this);

    StatusWindow::updateMoneyBar(mMoneyBar);
    StatusWindow::updateArrowsBar(mArrowsBar);
    updateStatus();
}
示例#8
0
void onClick3(int button, int state, int x, int y)
{
	if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
	{
		if(x >= 25 && x <= 90){
			yy[0] = 640-(y+20);
			bdX[0] = baseX;
			createBar(bdX[0], baseY,640-(y));
		}
		else if(x >= 165 && x <= 220){
			yy[1] = 640-(y+20);
			bdX[1] = baseX+110;
			createBar(bdX[1], baseY, 640-(y));
		}
		else if(x >= 275 && x <= 330){
			yy[2] = 640-(y+20);
			bdX[2] = baseX+220;
			createBar(bdX[2], baseY, 640-(y));
		}
		else if(x >= 385 && x <= 440){
			yy[3] = 640-(y+20);
			bdX[3] = baseX+330;
			createBar(bdX[3], baseY, 640-(y));
		}
		else if(x >= 495 && x <= 550){
			yy[4] = 640-(y+20);
			bdX[4] = baseX+440;
			createBar(bdX[4], baseY, 640-(y));
		}
		else if(x >= 605 && x <= 660){
			yy[5] = 640-(y+20);
			bdX[5] = baseX+550;
			createBar(bdX[5], baseY, 640-(y));
		}
		else if(x >= 715 && x <= 770){
			yy[6] = 640-(y+20);
			bdX[6] = baseX+660;
			createBar(bdX[6], baseY, 640-(y));
		}
		else if(x >= 825 && x <= 880){
			yy[7] = 640-(y+20);
			bdX[7] = baseX+770;
			createBar(bdX[7], baseY, 640-(y));
		}
		/*else if(x >= 935 && x <= 990){
			yy[8] = 640-(y+20);
			bdX[8] = baseX+880;
			createBar(bdX[8], baseY, 640-(y));
		}
		else if(x >= 1045 && x <= 1100){
			yy[9] = 640-(y+20);
			bdX[9] = baseX+990;
			createBar(bdX[9], baseY, 640-(y));
		}
		else if(x >= 1155 && x <= 1210){
			yy[10] = 640-(y+20);
			bdX[10] = baseX+1100;
			createBar(bdX[10], baseY, 640-(y));
		}*/
	}
	glFlush();
}