virtual void UpdateInfo() { const float YSEP = Gui::Screen::GetFontHeight() * 1.5f; DeleteAllChildren(); Add(new Gui::Label(Lang::CARGO_INVENTORY), 40, 40); Add(new Gui::Label(Lang::JETTISON), 40, 40+YSEP*2); float ypos = 40 + 3*YSEP; for (int i=1; i<Equip::TYPE_MAX; i++) { if (Equip::types[i].slot != Equip::SLOT_CARGO) continue; const int gotNum = Pi::player->m_equipment.Count(Equip::SLOT_CARGO, static_cast<Equip::Type>(i)); if (!gotNum) continue; Gui::Button *b = new Gui::SolidButton(); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &CargoPage::JettisonCargo), static_cast<Equip::Type>(i))); Add(b, 40, ypos); Add(new Gui::Label(Equip::types[i].name), 70, ypos); char buf[128]; snprintf(buf, sizeof(buf), "%dt", gotNum*Equip::types[i].mass); Add(new Gui::Label(buf), 300, ypos); ypos += YSEP; } if (Pi::player->m_equipment.Count(Equip::SLOT_CARGO, Equip::WATER) > 0) { Gui::HBox *box = new Gui::HBox(); box->SetSpacing(5.0f); Gui::Button *b = new Gui::SolidButton(); b->onClick.connect(sigc::mem_fun(this, &CargoPage::Refuel)); box->PackEnd(b); box->PackEnd(new Gui::Label(Lang::REFUEL)); Add(box, 300, 40); box->ShowAll(); } ShowChildren(); }
void Stack::Clear() { DeleteAllChildren(); while (!m_widgets.empty()) m_widgets.pop(); ResizeRequest(); }
void SubtitleScreen::DisplayRawTextSubtitles(void) { if (!InitialiseFont(m_fontStretch) || !m_player || !m_subreader) return; uint64_t duration; QStringList subs = m_subreader->GetRawTextSubtitles(duration); if (subs.empty()) return; VideoOutput *vo = m_player->GetVideoOutput(); if (vo) { QRect oldsafe = m_safeArea; m_safeArea = m_player->GetVideoOutput()->GetSafeRect(); if (oldsafe != m_safeArea) { int height = (m_safeArea.height() * m_textFontZoom) / 1800; gTextSubFont->GetFace()->setPixelSize(height); gTextSubFont->SetColor(Qt::white); } } else return; VideoFrame *currentFrame = vo->GetLastShownFrame(); if (!currentFrame) return; // delete old subs that may still be on screen DeleteAllChildren(); OptimiseTextSubs(subs); DrawTextSubtitles(subs, currentFrame->timecode, duration); }
void SubtitleScreen::ClearDisplayedSubtitles(void) { for (int i = 0; i < 8; i++) Clear708Cache(i); DeleteAllChildren(); m_expireTimes.clear(); SetRedraw(); }
AccessibilityTreeNode::~AccessibilityTreeNode() { DeleteAllChildren(); if (m_parent) m_parent->RemoveChild(this); if (m_label) m_label->RemoveControl(this); }
void SubtitleScreen::DisplayDVDButton(AVSubtitle* dvdButton, QRect &buttonPos) { if (!dvdButton || !m_player) return; VideoOutput *vo = m_player->GetVideoOutput(); if (!vo) return; DeleteAllChildren(); SetRedraw(); float tmp = 0.0; QRect dummy; vo->GetOSDBounds(dummy, m_safeArea, tmp, tmp, tmp); AVSubtitleRect *hl_button = dvdButton->rects[0]; uint h = hl_button->h; uint w = hl_button->w; QRect rect = QRect(hl_button->x, hl_button->y, w, h); QImage bg_image(hl_button->pict.data[0], w, h, w, QImage::Format_Indexed8); uint32_t *bgpalette = (uint32_t *)(hl_button->pict.data[1]); QVector<uint32_t> bg_palette(4); for (int i = 0; i < 4; i++) bg_palette[i] = bgpalette[i]; bg_image.setColorTable(bg_palette); // copy button region of background image const QRect fg_rect(buttonPos.translated(-hl_button->x, -hl_button->y)); QImage fg_image = bg_image.copy(fg_rect); QVector<uint32_t> fg_palette(4); uint32_t *fgpalette = (uint32_t *)(dvdButton->rects[1]->pict.data[1]); if (fgpalette) { for (int i = 0; i < 4; i++) fg_palette[i] = fgpalette[i]; fg_image.setColorTable(fg_palette); } bg_image = bg_image.convertToFormat(QImage::Format_ARGB32); fg_image = fg_image.convertToFormat(QImage::Format_ARGB32); // set pixel of highlight area to highlight color for (int x=fg_rect.x(); x < fg_rect.x()+fg_rect.width(); ++x) { if ((x < 0) || (x > hl_button->w)) continue; for (int y=fg_rect.y(); y < fg_rect.y()+fg_rect.height(); ++y) { if ((y < 0) || (y > hl_button->h)) continue; bg_image.setPixel(x, y, fg_image.pixel(x-fg_rect.x(),y-fg_rect.y())); } } AddScaledImage(bg_image, rect); }
clRowEntry::~clRowEntry() { // Delete all the node children DeleteAllChildren(); wxDELETE(m_clientObject); // Notify the model that a selection is being deleted if(m_model) { m_model->NodeDeleted(this); } }
void TeletextScreen::ClearScreen(void) { DeleteAllChildren(); QHash<int, QImage*>::iterator it = m_rowImages.begin(); for (; it != m_rowImages.end(); ++it) { if (*it) delete (*it); } m_rowImages.clear(); SetRedraw(); }
void CMVarNode::StealChildren ( CMVarNode* node ) { DeleteAllChildren(); const JSize count = node->GetChildCount(); for (JIndex i=1; i<=count; i++) { Append(node->GetChild(1)); } }
void UseEquipWidget::UpdateEquip() { DeleteAllChildren(); int numSlots = Pi::player->m_equipment.GetSlotSize(Equip::SLOT_MISSILE); if (numSlots) { float spacing = 380.0f / numSlots; for (int i = 0; i < numSlots; ++i) { const Equip::Type t = Pi::player->m_equipment.Get(Equip::SLOT_MISSILE, i); if (t == Equip::NONE) continue; Gui::Button *b; switch (t) { case Equip::MISSILE_UNGUIDED: b = new Gui::ImageButton(PIONEER_DATA_DIR "/icons/missile_unguided.png"); break; case Equip::MISSILE_GUIDED: b = new Gui::ImageButton(PIONEER_DATA_DIR "/icons/missile_guided.png"); break; case Equip::MISSILE_SMART: b = new Gui::ImageButton(PIONEER_DATA_DIR "/icons/missile_smart.png"); break; default: case Equip::MISSILE_NAVAL: b = new Gui::ImageButton(PIONEER_DATA_DIR "/icons/missile_naval.png"); break; } Add(b, spacing * i, 40); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &UseEquipWidget::FireMissile), i)); b->SetToolTip(Equip::types[t].name); } } { const Equip::Type t = Pi::player->m_equipment.Get(Equip::SLOT_ECM); if (t != Equip::NONE) { Gui::Button *b = 0; if (t == Equip::ECM_BASIC) b = new Gui::ImageButton(PIONEER_DATA_DIR "/icons/ecm_basic.png"); else if (t == Equip::ECM_ADVANCED) b = new Gui::ImageButton(PIONEER_DATA_DIR "/icons/ecm_advanced.png"); assert(b); b->onClick.connect(sigc::mem_fun(Pi::player, &Ship::UseECM)); Add(b, 32, 0); } } }
CEntity::~CEntity() { #if 0 && defined(NIV_DEBUG) CLogFile::Printf("CEntity[%d]::~CEntity()",m_ID); #endif // Remove all children elements DeleteAllChildren(); // remove the parent SetParent(NULL); // push the entity ID back into the pool CEntityIDs::Push(this); }
//***************************************************************************** void CCeWatchElement::Init() //***************************************************************************** { DeleteAllChildren(); m_Name.Empty(); m_strFormat.Empty(); m_Type.Init(); SetQuality(OPC_QUALITY_BAD | OPC_QUALITY_NOT_CONNECTED); m_strValue = CCeWatchBackEnd::GetStateText(CEEmptyValue); m_strTime.Empty(); m_HistoryList.RemoveAll(); m_DebugId = 4711; }
virtual void UpdateInfo() { Sint64 crime, fine; Polit::GetCrime(&crime, &fine); const float YSEP = Gui::Screen::GetFontHeight() * 1.5f; DeleteAllChildren(); float ypos = 40.0f; Add((new Gui::Label(Lang::COMBAT_RATING))->Shadow(true), 40, ypos); Add(new Gui::Label(Pi::combatRating[ Pi::CombatRating(Pi::player->GetKillCount()) ]), 40, ypos+YSEP); ypos = 160.0f; Add((new Gui::Label(Lang::CRIMINAL_RECORD))->Shadow(true), 40, ypos); for (int i=0; i<64; i++) { if (!(crime & (Uint64(1)<<i))) continue; if (!Polit::crimeNames[i]) continue; ypos += YSEP; Add(new Gui::Label(Polit::crimeNames[i]), 40, ypos); } ShowChildren(); }
void ShowAll() { DeleteAllChildren(); PackEnd(new Gui::Label(m_title)); m_tentry = new Gui::TextEntry(); PackEnd(m_tentry); std::list<std::string> files; GetDirectoryContents(GetFullSavefileDirPath().c_str(), files); Gui::HBox *hbox = new Gui::HBox(); PackEnd(hbox); Gui::HBox *buttonBox = new Gui::HBox(); buttonBox->SetSpacing(5.0f); Gui::Button *b = new Gui::LabelButton(new Gui::Label(m_type == SAVE ? Lang::SAVE : Lang::LOAD)); b->onClick.connect(sigc::mem_fun(this, &FileDialog::OnClickAction)); buttonBox->PackEnd(b); b = new Gui::LabelButton(new Gui::Label(Lang::CANCEL)); b->onClick.connect(sigc::mem_fun(this, &FileDialog::OnClickCancel)); buttonBox->PackEnd(b); PackEnd(buttonBox); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(390); portal->SetTransparency(false); scroll->SetAdjustment(&portal->vscrollAdjust); hbox->PackEnd(portal); hbox->PackEnd(scroll); Gui::Box *vbox = new Gui::VBox(); for (std::list<std::string>::iterator i = files.begin(); i!=files.end(); ++i) { b = new SimpleLabelButton(new Gui::Label(*i)); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &FileDialog::OnClickFile), *i)); vbox->PackEnd(b); } portal->Add(vbox); Gui::VBox::ShowAll(); }
void CDriveView::OnItemExpanding(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; HTREEITEM hItem = pNMTreeView->itemNew.hItem; CString string = GetPathFromItem (hItem); *pResult = FALSE; if (pNMTreeView->action == TVE_EXPAND) { DeleteFirstChild (hItem); if (AddDirectories (hItem, string) == 0) *pResult = TRUE; } else { // pNMTreeView->action == TVE_COLLAPSE DeleteAllChildren (hItem); if (GetTreeCtrl ().GetParentItem (hItem) == NULL) GetTreeCtrl ().InsertItem (_T (""), ILI_CLOSED_FOLDER, ILI_CLOSED_FOLDER, hItem); else SetButtonState (hItem, string); } }
void FileSelectorWidget::ShowAll() { DeleteAllChildren(); PackEnd(new Gui::Label(m_title)); m_tentry = new Gui::TextEntry(); PackEnd(m_tentry); Gui::HBox *hbox = new Gui::HBox(); PackEnd(hbox); Gui::HBox *buttonBox = new Gui::HBox(); buttonBox->SetSpacing(5.0f); Gui::Button *b = new Gui::LabelButton(new Gui::Label(m_type == SAVE ? Lang::SAVE : Lang::LOAD)); b->onClick.connect(sigc::mem_fun(this, &FileSelectorWidget::OnClickAction)); buttonBox->PackEnd(b); b = new Gui::LabelButton(new Gui::Label(Lang::CANCEL)); b->onClick.connect(sigc::mem_fun(this, &FileSelectorWidget::OnClickCancel)); buttonBox->PackEnd(b); PackEnd(buttonBox); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(390); portal->SetTransparency(false); scroll->SetAdjustment(&portal->vscrollAdjust); hbox->PackEnd(portal); hbox->PackEnd(scroll); Gui::Box *vbox = new Gui::VBox(); for (FileSystem::FileEnumerator files(FileSystem::rawFileSystem, Pi::GetSaveDir()); !files.Finished(); files.Next()) { std::string name = files.Current().GetName(); b = new SimpleLabelButton(new Gui::Label(name)); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &FileSelectorWidget::OnClickFile), name)); vbox->PackEnd(b); } portal->Add(vbox); Gui::VBox::ShowAll(); }
void Composite::Serialize(Archive * pArchv) { pArchv->Transfer(m_idData); if (pArchv->m_bIsLoading) { DeleteAllChildren(); while (pArchv->GetSize()) { Chunk * pChunk = LoadChunk(pArchv); InsertChildLast(pChunk); pChunk->Release(); } } else { for (ChildNode * pNode = m_pFirst; pNode; pNode = GetNextChild(pNode)) { pNode->GetChunk()->Write(pArchv); } } }
virtual void UpdateInfo() { const float YSEP = Gui::Screen::GetFontHeight() * 1.5f; DeleteAllChildren(); Gui::Label *l = new Gui::Label(Lang::MISSIONS); Add(l, 20, 20); l = new Gui::Label(Lang::TYPE); Add(l, 20, 20+YSEP*2); l = new Gui::Label(Lang::CLIENT); Add(l, 100, 20+YSEP*2); l = new Gui::Label(Lang::LOCATION); Add(l, 260, 20+YSEP*2); l = new Gui::Label(Lang::DUE); Add(l, 420, 20+YSEP*2); l = new Gui::Label(Lang::REWARD); Add(l, 580, 20+YSEP*2); l = new Gui::Label(Lang::STATUS); Add(l, 680, 20+YSEP*2); ShowChildren(); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(760); scroll->SetAdjustment(&portal->vscrollAdjust); const std::list<const Mission*> &missions = Pi::player->missions.GetAll(); Gui::Fixed *innerbox = new Gui::Fixed(760, YSEP*3 * missions.size()); float ypos = 0; for (std::list<const Mission*>::const_iterator i = missions.begin(); i != missions.end(); ++i) { SystemPath path = (*i)->location; StarSystem *s = StarSystem::GetCached(path); SBody *sbody = s->GetBodyByPath(&path); l = new Gui::Label((*i)->type); innerbox->Add(l, 0, ypos); l = new Gui::Label((*i)->client); innerbox->Add(l, 80, ypos); l = new Gui::Label(stringf("%0,\n%1 [%2{d},%3{d},%4{d}]", sbody->name.c_str(), s->GetName().c_str(), path.sectorX, path.sectorY, path.sectorZ)); innerbox->Add(l, 240, ypos); l = new Gui::Label(format_date((*i)->due)); innerbox->Add(l, 400, ypos); l = new Gui::Label(format_money((*i)->reward)); innerbox->Add(l, 560, ypos); switch ((*i)->status) { case Mission::FAILED: l = new Gui::Label(std::string("#f00")+std::string(Lang::FAILED)); break; case Mission::COMPLETED: l = new Gui::Label(std::string("#ff0")+std::string(Lang::COMPLETED)); break; default: case Mission::ACTIVE: l = new Gui::Label(std::string("#0f0")+std::string(Lang::ACTIVE)); break; } innerbox->Add(l, 660, ypos); ypos += YSEP*3; } Add(portal, 20, 20 + YSEP*3); Add(scroll, 780, 20 + YSEP*3); scroll->ShowAll(); portal->Add(innerbox); portal->ShowAll(); }
ActorFrame::~ActorFrame() { if( m_bDeleteChildren ) DeleteAllChildren(); }
Composite::~Composite() { DeleteAllChildren(); }
void BDOverlayScreen::DisplayBDOverlay(BDOverlay *overlay) { if (!overlay || !m_player) return; if (!overlay->m_data) { m_overlayArea = overlay->m_position; SetArea(MythRect(m_overlayArea)); DeleteAllChildren(); m_overlayMap.clear(); SetRedraw(); LOG(VB_PLAYBACK, LOG_INFO, LOC + QString("Initialised Size: %1x%2 (%3+%4) Plane: %5 Pts: %6") .arg(overlay->m_position.width()) .arg(overlay->m_position.height()) .arg(overlay->m_position.left()) .arg(overlay->m_position.top()) .arg(overlay->m_plane) .arg(overlay->m_pts)); BDOverlay::DeleteOverlay(overlay); return; } if (!m_overlayArea.isValid()) { LOG(VB_GENERAL, LOG_ERR, LOC + "Error: Overlay image submitted before initialisation."); } VideoOutput *vo = m_player->GetVideoOutput(); if (!vo) return; QRect rect = overlay->m_position; QString hash = QString("%1+%2+%3x%4") .arg(rect.left()).arg(rect.top()) .arg(rect.width()).arg(rect.height()); // remove if we already have this overlay if (m_overlayMap.contains(hash)) { LOG(VB_PLAYBACK, LOG_DEBUG, LOC + QString("Removing %1 (%2 left)") .arg(hash).arg(m_overlayMap.size())); MythUIImage *old = m_overlayMap.take(hash); DeleteChild(old); } // convert the overlay palette to ARGB uint32_t *origpalette = (uint32_t *)(overlay->m_palette); QVector<unsigned int> palette; for (int i = 0; i < 256; i++) { int y = (origpalette[i] >> 0) & 0xff; int cr = (origpalette[i] >> 8) & 0xff; int cb = (origpalette[i] >> 16) & 0xff; int a = (origpalette[i] >> 24) & 0xff; int r = int(y + 1.4022 * (cr - 128)); int b = int(y + 1.7710 * (cb - 128)); int g = int(1.7047 * y - (0.1952 * b) - (0.5647 * r)); if (r < 0) r = 0; if (g < 0) g = 0; if (b < 0) b = 0; if (r > 0xff) r = 0xff; if (g > 0xff) g = 0xff; if (b > 0xff) b = 0xff; palette.push_back((a << 24) | (r << 16) | (g << 8) | b); } // convert the image to QImage QImage img(rect.size(), QImage::Format_Indexed8); memcpy(img.bits(), overlay->m_data, rect.width() * rect.height()); img.setColorTable(palette); img.convertToFormat(QImage::Format_ARGB32); // add to screen QRect scaled = vo->GetImageRect(rect); if (scaled.size() != rect.size()) { img = img.scaled(scaled.width(), scaled.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } MythPainter *osd_painter = vo->GetOSDPainter(); MythImage* image = NULL; if (osd_painter) image = osd_painter->GetFormatImage(); if (image) { image->Assign(img); MythUIImage *uiimage = new MythUIImage(this, "bdoverlay"); if (uiimage) { uiimage->SetImage(image); uiimage->SetArea(MythRect(scaled)); m_overlayMap.insert(hash, uiimage); LOG(VB_PLAYBACK, LOG_DEBUG, LOC + QString("Added %1 (%2 tot)") .arg(hash).arg(m_overlayMap.size())); } } SetRedraw(); BDOverlay::DeleteOverlay(overlay); }
emPanel::~emPanel() { InvalidatePainting(); if (View.SeekPosPanel==this) View.SetSeekPos(NULL,NULL); DeleteAllChildren(); if (!Parent) { if (View.IsPoppedUp()) View.ZoomOut(); View.RootPanel=NULL; View.SupremeViewedPanel=NULL; View.MinSVP=NULL; View.MaxSVP=NULL; View.VisitedPanel=NULL; View.ActivePanel=NULL; View.VisitAdherent=false; View.TitleInvalid=true; View.CursorInvalid=true; View.UpdateEngine->WakeUp(); } else { if (InVisitedPath) { if (Parent->Viewed) { Focusable=true; View.VisitImmobile(Parent,false); } else { LayoutX=-2.0; LayoutY=-2.0; LayoutWidth=1.0; LayoutHeight=1.0; CanvasColor=0; Focusable=true; View.ProtectSeeking++; View.VisitFullsized(Parent,!InActivePath && View.VisitAdherent); View.ProtectSeeking--; } if (InVisitedPath) { emFatalError("emPanel::~emPanel: Could not to get rid of the visit."); } } View.RestartInputRecursion=true; if (InViewedPath) { View.SVPChoiceInvalid=true; View.TitleInvalid=true; View.CursorInvalid=true; View.UpdateEngine->WakeUp(); } Parent->AvlRemoveChild(this); Parent->AddPendingNotice(NF_CHILD_LIST_CHANGED); if (Next) Next->Prev=Prev; else Parent->LastChild=Prev; if (Prev) Prev->Next=Next; else Parent->FirstChild=Next; Next=NULL; Prev=NULL; } if (NoticeNode.Next) { NoticeNode.Next->Prev=NoticeNode.Prev; NoticeNode.Prev->Next=NoticeNode.Next; NoticeNode.Next=NULL; NoticeNode.Prev=NULL; } if (View.ActivationCandidate==this) { View.SetActivationCandidate(NULL); } }
void SystemInfoView::SystemChanged(const SystemPath &path) { DeleteAllChildren(); m_tabs = 0; m_bodyIcons.clear(); if (!path.HasValidSystem()) return; m_system = StarSystemCache::GetCached(path); m_sbodyInfoTab = new Gui::Fixed(float(Gui::Screen::GetWidth()), float(Gui::Screen::GetHeight()-100)); if (m_system->GetUnexplored()) { Add(m_sbodyInfoTab, 0, 0); std::string _info = Lang::UNEXPLORED_SYSTEM_STAR_INFO_ONLY; Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0); m_sbodyInfoTab->Add(l, 35, 300); m_selectedBodyPath = SystemPath(); ShowAll(); return; } m_econInfoTab = new Gui::Fixed(float(Gui::Screen::GetWidth()), float(Gui::Screen::GetHeight()-100)); Gui::Fixed *demographicsTab = new Gui::Fixed(); m_tabs = new Gui::Tabbed(); m_tabs->AddPage(new Gui::Label(Lang::PLANETARY_INFO), m_sbodyInfoTab); m_tabs->AddPage(new Gui::Label(Lang::ECONOMIC_INFO), m_econInfoTab); m_tabs->AddPage(new Gui::Label(Lang::DEMOGRAPHICS), demographicsTab); Add(m_tabs, 0, 0); m_sbodyInfoTab->onMouseButtonEvent.connect(sigc::mem_fun(this, &SystemInfoView::OnClickBackground)); int majorBodies, starports, onSurface; { float pos[2] = { 0, 0 }; float psize = -1; majorBodies = starports = onSurface = 0; PutBodies(m_system->GetRootBody().Get(), m_econInfoTab, 1, pos, majorBodies, starports, onSurface, psize); majorBodies = starports = onSurface = 0; pos[0] = pos[1] = 0; psize = -1; PutBodies(m_system->GetRootBody().Get(), m_sbodyInfoTab, 1, pos, majorBodies, starports, onSurface, psize); majorBodies = starports = onSurface = 0; pos[0] = pos[1] = 0; psize = -1; PutBodies(m_system->GetRootBody().Get(), demographicsTab, 1, pos, majorBodies, starports, onSurface, psize); } std::string _info = stringf( Lang::STABLE_SYSTEM_WITH_N_MAJOR_BODIES_STARPORTS, formatarg("bodycount", majorBodies), formatarg("body(s)", std::string(majorBodies == 1 ? Lang::BODY : Lang::BODIES)), formatarg("portcount", starports), formatarg("starport(s)", std::string(starports == 1 ? Lang::STARPORT : Lang::COUNT_STARPORTS))); if (starports > 0) _info += stringf(Lang::COUNT_ON_SURFACE, formatarg("surfacecount", onSurface)); _info += ".\n\n"; _info += m_system->GetLongDescription(); { // astronomical body info tab m_infoBox = new Gui::VBox(); Gui::HBox *scrollBox = new Gui::HBox(); scrollBox->SetSpacing(5); m_sbodyInfoTab->Add(scrollBox, 35, 250); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(730); scroll->SetAdjustment(&portal->vscrollAdjust); Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0); m_infoBox->PackStart(l); portal->Add(m_infoBox); scrollBox->PackStart(scroll); scrollBox->PackStart(portal); } { // economy tab Gui::HBox *scrollBox2 = new Gui::HBox(); scrollBox2->SetSpacing(5); m_econInfoTab->Add(scrollBox2, 35, 300); Gui::VScrollBar *scroll2 = new Gui::VScrollBar(); Gui::VScrollPortal *portal2 = new Gui::VScrollPortal(730); scroll2->SetAdjustment(&portal2->vscrollAdjust); scrollBox2->PackStart(scroll2); scrollBox2->PackStart(portal2); m_econInfo = new Gui::Label(""); m_econInfoTab->Add(m_econInfo, 35, 250); Gui::Fixed *f = new Gui::Fixed(); m_econMajImport = new Gui::Label(""); m_econMinImport = new Gui::Label(""); m_econMajExport = new Gui::Label(""); m_econMinExport = new Gui::Label(""); m_econIllegal = new Gui::Label(""); m_econMajImport->Color(255,255,0); m_econMinImport->Color(255,255,0); m_econMajExport->Color(255,255,0); m_econMinExport->Color(255,255,0); m_econIllegal->Color(255,255,0); f->Add(m_econMajImport, 0, 0); f->Add(m_econMinImport, 150, 0); f->Add(m_econMajExport, 300, 0); f->Add(m_econMinExport, 450, 0); f->Add(m_econIllegal, 600, 0); portal2->Add(f); UpdateEconomyTab(); } { Gui::Fixed *col1 = new Gui::Fixed(); demographicsTab->Add(col1, 200, 300); Gui::Fixed *col2 = new Gui::Fixed(); demographicsTab->Add(col2, 400, 300); const float YSEP = Gui::Screen::GetFontHeight() * 1.2f; col1->Add((new Gui::Label(Lang::SYSTEM_TYPE))->Color(255,255,0), 0, 0); col2->Add(new Gui::Label(m_system->GetShortDescription()), 0, 0); col1->Add((new Gui::Label(Lang::GOVERNMENT_TYPE))->Color(255,255,0), 0, 2*YSEP); col2->Add(new Gui::Label(m_system->GetSysPolit().GetGovernmentDesc()), 0, 2*YSEP); col1->Add((new Gui::Label(Lang::ECONOMY_TYPE))->Color(255,255,0), 0, 3*YSEP); col2->Add(new Gui::Label(m_system->GetSysPolit().GetEconomicDesc()), 0, 3*YSEP); col1->Add((new Gui::Label(Lang::ALLEGIANCE))->Color(255,255,0), 0, 4*YSEP); col2->Add(new Gui::Label(m_system->GetFaction()->name.c_str()), 0, 4*YSEP); col1->Add((new Gui::Label(Lang::POPULATION))->Color(255,255,0), 0, 5*YSEP); std::string popmsg; fixed pop = m_system->GetTotalPop(); if (pop >= fixed(1,1)) { popmsg = stringf(Lang::OVER_N_BILLION, formatarg("population", pop.ToInt32())); } else if (pop >= fixed(1,1000)) { popmsg = stringf(Lang::OVER_N_MILLION, formatarg("population", (pop*1000).ToInt32())); } else if (pop != fixed(0)) { popmsg = Lang::A_FEW_THOUSAND; } else { popmsg = Lang::NO_REGISTERED_INHABITANTS; } col2->Add(new Gui::Label(popmsg), 0, 5*YSEP); col1->Add((new Gui::Label(Lang::SECTOR_COORDINATES))->Color(255,255,0), 0, 6*YSEP); col2->Add(new Gui::Label(stringf("%0{d}, %1{d}, %2{d}", path.sectorX, path.sectorY, path.sectorZ)), 0, 6*YSEP); col1->Add((new Gui::Label(Lang::SYSTEM_NUMBER))->Color(255,255,0), 0, 7*YSEP); col2->Add(new Gui::Label(stringf("%0", path.systemIndex)), 0, 7*YSEP); } UpdateIconSelections(); ShowAll(); }
//***************************************************************************** CCeWatchElement::~CCeWatchElement() //***************************************************************************** { DeleteAllChildren(); m_DebugId = 0; }
void SubtitleScreen::DisplayTextSubtitles(void) { if (!InitialiseFont(m_fontStretch) || !m_player || !m_subreader) return; bool changed = false; VideoOutput *vo = m_player->GetVideoOutput(); if (vo) { QRect oldsafe = m_safeArea; m_safeArea = m_player->GetVideoOutput()->GetSafeRect(); if (oldsafe != m_safeArea) { changed = true; int height = (m_safeArea.height() * m_textFontZoom) / 2000; gTextSubFont->GetFace()->setPixelSize(height); gTextSubFont->GetFace()->setItalic(false); gTextSubFont->GetFace()->setUnderline(false); gTextSubFont->SetColor(Qt::white); } } else { return; } VideoFrame *currentFrame = vo->GetLastShownFrame(); if (!currentFrame) return; TextSubtitles *subs = m_subreader->GetTextSubtitles(); subs->Lock(); uint64_t playPos = 0; if (subs->IsFrameBasedTiming()) { // frame based subtitles get out of synch after running mythcommflag // for the file, i.e., the following number is wrong and does not // match the subtitle frame numbers: playPos = currentFrame->frameNumber; } else { // Use timecodes for time based SRT subtitles. Feeding this into // NormalizeVideoTimecode() should adjust for non-zero start times // and wraps. For MPEG, wraps will occur just once every 26.5 hours // and other formats less frequently so this should be sufficient. // Note: timecodes should now always be valid even in the case // when a frame doesn't have a valid timestamp. If an exception is // found where this is not true then we need to use the frameNumber // when timecode is not defined by uncommenting the following lines. //if (currentFrame->timecode == 0) // playPos = (uint64_t) // ((currentFrame->frameNumber / video_frame_rate) * 1000); //else playPos = m_player->GetDecoder()->NormalizeVideoTimecode(currentFrame->timecode); } if (playPos != 0) changed |= subs->HasSubtitleChanged(playPos); if (!changed) { subs->Unlock(); return; } DeleteAllChildren(); SetRedraw(); if (playPos == 0) { subs->Unlock(); return; } QStringList rawsubs = subs->GetSubtitles(playPos); if (rawsubs.empty()) { subs->Unlock(); return; } OptimiseTextSubs(rawsubs); subs->Unlock(); DrawTextSubtitles(rawsubs, 0, 0); }
void BGAnimation::Unload() { DeleteAllChildren(); }
void CMVarNode::Receive ( JBroadcaster* sender, const Message& message ) { if (sender == CMGetLink() && ShouldUpdate(message)) { // root node only if (itsShouldUpdateFlag) { UpdateChildren(); } else { itsNeedsUpdateFlag = kJTrue; } } else if (sender == itsValueCommand && message.Is(CMVarCommand::kValueUpdated)) { const CMVarCommand::ValueMessage& info = dynamic_cast<const CMVarCommand::ValueMessage&>(message); SetValid(kJTrue); Update(info.GetRootNode()); } else if (sender == itsValueCommand && message.Is(CMVarCommand::kValueFailed)) { SetValue(itsValueCommand->GetData()); MakePointer(kJFalse); } else if (sender == itsContentCommand && message.Is(CMVarCommand::kValueUpdated)) { const CMVarCommand::ValueMessage& info = dynamic_cast<const CMVarCommand::ValueMessage&>(message); CMVarNode* root = info.GetRootNode(); // value or pointer if (!root->HasChildren()) { DeleteAllChildren(); CMVarNode* child = (CMGetLink())->CreateVarNode(this, root->GetName(), root->GetFullName(), root->GetValue()); assert( child != NULL ); child->MakePointer(root->itsIsPointerFlag); } // struct or static array else if (SameElements(root)) { MergeChildren(root); } else { StealChildren(root); } } else if (sender == itsContentCommand && message.Is(CMVarCommand::kValueFailed)) { DeleteAllChildren(); CMVarNode* child = (CMGetLink())->CreateVarNode(this, "", "", itsContentCommand->GetData()); assert( child != NULL ); child->SetValid(kJFalse); } else { JNamedTreeNode::Receive(sender, message); } }
void CommodityTradeWidget::ShowAll() { DeleteAllChildren(); m_stockLabels.clear(); m_cargoLabels.clear(); SetTransparency(true); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(450); scroll->SetAdjustment(&portal->vscrollAdjust); //int GetStock(Equip::Type t) const { return m_equipmentStock[t]; } int NUM_ITEMS = 0; const float YSEP = floor(Gui::Screen::GetFontHeight() * 2.5f); for (int i=Equip::FIRST_COMMODITY; i<=Equip::LAST_COMMODITY; i++) { assert(Equip::types[i].slot == Equip::SLOT_CARGO); if (m_seller->DoesSell(Equip::Type(i))) { NUM_ITEMS++; } } Gui::Fixed *innerbox = new Gui::Fixed(450, NUM_ITEMS*YSEP); innerbox->SetTransparency(true); const float iconOffset = 8.0f; for (int i=Equip::FIRST_COMMODITY, num=0; i<=Equip::LAST_COMMODITY; i++) { assert(Equip::types[i].slot == Equip::SLOT_CARGO); if (!m_seller->DoesSell(Equip::Type(i))) continue; int stock = m_seller->GetStock(static_cast<Equip::Type>(i)); std::map<Equip::Type,std::string>::iterator icon_iter = s_iconMap.find(Equip::Type(i)); if (icon_iter != s_iconMap.end()) { Gui::Image *icon = new Gui::Image(("icons/goods/" + (*icon_iter).second + ".png").c_str()); // this forces the on-screen rendering to fit within (rescale) to these dimensions icon->SetRenderDimensions(38.0f, 32.0f); innerbox->Add(icon, 0, num*YSEP); } Gui::Label *l = new Gui::Label(Equip::types[i].name); if (Equip::types[i].description) l->SetToolTip(Equip::types[i].description); innerbox->Add(l,42,num*YSEP+iconOffset); Gui::RepeaterButton *b = new Gui::RepeaterButton(RBUTTON_DELAY, RBUTTON_REPEAT); sigc::slot<void> func = sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::OnClickBuy), i); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::ManageRButton), b, func)); innerbox->Add(b, 380, num*YSEP+iconOffset); b = new Gui::RepeaterButton(RBUTTON_DELAY, RBUTTON_REPEAT); func = sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::OnClickSell), i); b->onClick.connect(sigc::bind(sigc::mem_fun(this, &CommodityTradeWidget::ManageRButton), b, func)); innerbox->Add(b, 415, num*YSEP+iconOffset); char buf[128]; innerbox->Add(new Gui::Label( format_money(m_seller->GetPrice(static_cast<Equip::Type>(i))) ), 200, num*YSEP+iconOffset); snprintf(buf, sizeof(buf), "%dt", stock*Equip::types[i].mass); Gui::Label *stocklabel = new Gui::Label(buf); m_stockLabels[i] = stocklabel; innerbox->Add(stocklabel, 275, num*YSEP+iconOffset); snprintf(buf, sizeof(buf), "%dt", Pi::player->m_equipment.Count(Equip::SLOT_CARGO, static_cast<Equip::Type>(i))*Equip::types[i].mass); Gui::Label *cargolabel = new Gui::Label(buf); m_cargoLabels[i] = cargolabel; innerbox->Add(cargolabel, 325, num*YSEP+iconOffset); num++; } innerbox->ShowAll(); portal->Add(innerbox); portal->ShowAll(); Gui::Fixed *heading = new Gui::Fixed(470, Gui::Screen::GetFontHeight()); const Color &col = Gui::Theme::Colors::tableHeading; heading->Add((new Gui::Label(Lang::ITEM))->Color(col), 0, 0); heading->Add((new Gui::Label(Lang::PRICE))->Color(col), 200, 0); heading->Add((new Gui::Label(Lang::BUY))->Color(col), 380, 0); heading->Add((new Gui::Label(Lang::SELL))->Color(col), 415, 0); heading->Add((new Gui::Label(Lang::STOCK))->Color(col), 275, 0); heading->Add((new Gui::Label(Lang::CARGO))->Color(col), 325, 0); PackEnd(heading); Gui::HBox *body = new Gui::HBox(); body->PackEnd(portal); body->PackEnd(scroll); PackEnd(body); SetSpacing(YSEP-Gui::Screen::GetFontHeight()); Gui::VBox::ShowAll(); }
void SystemInfoView::SystemChanged(const SystemPath &path) { DeleteAllChildren(); m_tabs = 0; m_bodyIcons.clear(); if (!path.HasValidSystem()) return; m_system = StarSystem::cache->GetCached(path); m_sbodyInfoTab = new Gui::Fixed(float(Gui::Screen::GetWidth()), float(Gui::Screen::GetHeight()-100)); if (m_system->GetUnexplored()) { Add(m_sbodyInfoTab, 0, 0); std::string _info = Lang::UNEXPLORED_SYSTEM_STAR_INFO_ONLY; Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0); m_sbodyInfoTab->Add(l, 35, 300); m_selectedBodyPath = SystemPath(); ShowAll(); return; } Gui::Fixed *demographicsTab = new Gui::Fixed(); m_tabs = new Gui::Tabbed(); m_tabs->AddPage(new Gui::Label(Lang::PLANETARY_INFO), m_sbodyInfoTab); m_tabs->AddPage(new Gui::Label(Lang::DEMOGRAPHICS), demographicsTab); Add(m_tabs, 0, 0); m_sbodyInfoTab->onMouseButtonEvent.connect(sigc::mem_fun(this, &SystemInfoView::OnClickBackground)); int majorBodies, starports, onSurface; { float pos[2] = { 0, 0 }; float psize = -1; majorBodies = starports = onSurface = 0; pos[0] = pos[1] = 0; psize = -1; PutBodies(m_system->GetRootBody().Get(), m_sbodyInfoTab, 1, pos, majorBodies, starports, onSurface, psize); majorBodies = starports = onSurface = 0; pos[0] = pos[1] = 0; psize = -1; PutBodies(m_system->GetRootBody().Get(), demographicsTab, 1, pos, majorBodies, starports, onSurface, psize); } std::string _info = stringf( Lang::STABLE_SYSTEM_WITH_N_MAJOR_BODIES_STARPORTS, formatarg("bodycount", majorBodies), formatarg("body(s)", std::string(majorBodies == 1 ? Lang::BODY : Lang::BODIES)), formatarg("portcount", starports), formatarg("starport(s)", std::string(starports == 1 ? Lang::STARPORT : Lang::COUNT_STARPORTS))); if (starports > 0) _info += stringf(Lang::COUNT_ON_SURFACE, formatarg("surfacecount", onSurface)); _info += ".\n\n"; _info += m_system->GetLongDescription(); { // astronomical body info tab m_infoBox = new Gui::VBox(); Gui::HBox *scrollBox = new Gui::HBox(); scrollBox->SetSpacing(5); m_sbodyInfoTab->Add(scrollBox, 35, 250); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(730); scroll->SetAdjustment(&portal->vscrollAdjust); Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0); m_infoBox->PackStart(l); portal->Add(m_infoBox); scrollBox->PackStart(scroll); scrollBox->PackStart(portal); } { Gui::Fixed *col1 = new Gui::Fixed(); demographicsTab->Add(col1, 200, 300); Gui::Fixed *col2 = new Gui::Fixed(); demographicsTab->Add(col2, 400, 300); const float YSEP = Gui::Screen::GetFontHeight() * 1.2f; col1->Add((new Gui::Label(Lang::SYSTEM_TYPE))->Color(255,255,0), 0, 0); col1->Add((new Gui::Label(Lang::SECTOR_COORDINATES))->Color(255,255,0), 0, 6*YSEP); col2->Add(new Gui::Label(stringf("%0{d}, %1{d}, %2{d}", path.sectorX, path.sectorY, path.sectorZ)), 0, 6*YSEP); col1->Add((new Gui::Label(Lang::SYSTEM_NUMBER))->Color(255,255,0), 0, 7*YSEP); col2->Add(new Gui::Label(stringf("%0", path.systemIndex)), 0, 7*YSEP); } UpdateIconSelections(); ShowAll(); }
Container::~Container() { DeleteAllChildren(); }