void MultiDocumentPanel::addWindow (Component* component) { MultiDocumentPanelWindow* const dw = createNewDocumentWindow(); dw->setResizable (true, false); dw->setContentNonOwned (component, true); dw->setName (component->getName()); const var bkg (component->getProperties() ["mdiDocumentBkg_"]); dw->setBackgroundColour (bkg.isVoid() ? backgroundColour : Colour ((uint32) static_cast <int> (bkg))); int x = 4; Component* const topComp = getChildComponent (getNumChildComponents() - 1); if (topComp != nullptr && topComp->getX() == x && topComp->getY() == x) x += 16; dw->setTopLeftPosition (x, x); const var pos (component->getProperties() ["mdiDocumentPos_"]); if (pos.toString().isNotEmpty()) dw->restoreWindowStateFromString (pos.toString()); addAndMakeVisible (dw); dw->toFront (true); }
//============================================================================== void DrawableImage::refreshFromValueTree (const ValueTree& tree, ImageProvider* imageProvider) { const ValueTreeWrapper controller (tree); setName (controller.getID()); const float newOpacity = controller.getOpacity(); const Colour newOverlayColour (controller.getOverlayColour()); Image newImage; const var imageIdentifier (controller.getImageIdentifier()); jassert (imageProvider != 0 || imageIdentifier.isVoid()); // if you're using images, you need to provide something that can load and save them! if (imageProvider != 0) newImage = imageProvider->getImageForIdentifier (imageIdentifier); const RelativeParallelogram newBounds (controller.getBoundingBox()); if (newOpacity != opacity || overlayColour != newOverlayColour || image != newImage) { repaint(); opacity = newOpacity; overlayColour = newOverlayColour; bounds = newBounds; setImage (newImage); } }
void mouseDrag (const MouseEvent& e) { if (isEnabled() && owner.getModel() != nullptr && ! (e.mouseWasClicked() || isDragging)) { const SparseSet<int> selectedRows (owner.getSelectedRows()); if (selectedRows.size() > 0) { const var dragDescription (owner.getModel()->getDragSourceDescription (selectedRows)); if (! (dragDescription.isVoid() || (dragDescription.isString() && dragDescription.toString().isEmpty()))) { isDragging = true; owner.startDragAndDrop (e, dragDescription); } } } }
void mouseDrag (const MouseEvent& e) override { if (isEnabled() && owner.getModel() != nullptr && ! (e.mouseWasClicked() || isDragging)) { SparseSet<int> rowsToDrag; if (owner.selectOnMouseDown || owner.isRowSelected (row)) rowsToDrag = owner.getSelectedRows(); else rowsToDrag.addRange (Range<int>::withStartAndLength (row, 1)); if (rowsToDrag.size() > 0) { const var dragDescription (owner.getModel()->getDragSourceDescription (rowsToDrag)); if (! (dragDescription.isVoid() || (dragDescription.isString() && dragDescription.toString().isEmpty()))) { isDragging = true; owner.startDragAndDrop (e, rowsToDrag, dragDescription, true); } } } }
static float getOpacityFromVar (const var& v) { return v.isVoid() ? 1.0f : static_cast<float> (v); }