// Interface methods NS_IMETHODIMP nsXULSelectableAccessible::GetSelectedChildren(nsIArray **aChildren) { *aChildren = nsnull; if (!mSelectControl) { return NS_ERROR_FAILURE; } nsCOMPtr<nsIAccessibilityService> accService = GetAccService(); NS_ENSURE_TRUE(accService, NS_ERROR_FAILURE); nsCOMPtr<nsIMutableArray> selectedAccessibles = do_CreateInstance(NS_ARRAY_CONTRACTID); NS_ENSURE_STATE(selectedAccessibles); // For XUL multi-select control nsCOMPtr<nsIDOMXULMultiSelectControlElement> xulMultiSelect = do_QueryInterface(mSelectControl); nsCOMPtr<nsIAccessible> selectedAccessible; if (xulMultiSelect) { PRInt32 length = 0; xulMultiSelect->GetSelectedCount(&length); for (PRInt32 index = 0; index < length; index++) { nsCOMPtr<nsIDOMXULSelectControlItemElement> selectedItem; xulMultiSelect->GetSelectedItem(index, getter_AddRefs(selectedItem)); nsCOMPtr<nsIDOMNode> selectedNode(do_QueryInterface(selectedItem)); accService->GetAccessibleInWeakShell(selectedNode, mWeakShell, getter_AddRefs(selectedAccessible)); if (selectedAccessible) selectedAccessibles->AppendElement(selectedAccessible, PR_FALSE); } } else { // Single select? nsCOMPtr<nsIDOMXULSelectControlItemElement> selectedItem; mSelectControl->GetSelectedItem(getter_AddRefs(selectedItem)); nsCOMPtr<nsIDOMNode> selectedNode(do_QueryInterface(selectedItem)); if(selectedNode) { accService->GetAccessibleInWeakShell(selectedNode, mWeakShell, getter_AddRefs(selectedAccessible)); if (selectedAccessible) selectedAccessibles->AppendElement(selectedAccessible, PR_FALSE); } } PRUint32 uLength = 0; selectedAccessibles->GetLength(&uLength); if (uLength != 0) { // length of nsIArray containing selected options NS_ADDREF(*aChildren = selectedAccessibles); } return NS_OK; }
void DiagramWindow::cut() { Node *node = selectedNode(); if(!node) return; copy(); delete node; }
void DiagramWindow::copy() { Node *node = selectedNode(); if(!node) return; QString str = QString("Node %1 %2 %3 %4") .arg(node->textColor().name()) .arg(node->outlineColor().name()) .arg(node->backgroundColor().name()) .arg(node->text()); QApplication::clipboard()->setText(str); }
void DiagramWindow::properties() { Node *node = selectedNode(); Link *link = selectedLink(); if(node) { PropertiesDialog dialog(node, this); dialog.exec(); } else if(link) { QColor color = QColorDialog::getColor(link->color(), this); if(color.isValid()) link->setColor(color); } }
void DiagramWindow::updateActions() { bool hasSelection = !scene->selectedItems().isEmpty(); bool isNode = (selectedNode() != 0); bool isNodePair = (selectedNodePair() != QPair<Node *, Node *>()); cutAction->setEnabled(isNode); copyAction->setEnabled(isNode); addLinkAction->setEnabled(isNodePair); deleteAction->setEnabled(hasSelection); bringToFrontAction->setEnabled(isNode); sendToBackAction->setEnabled(isNode); propertiesAction->setEnabled(isNode); foreach(QAction *action, view->actions()) view->removeAction(action); foreach(QAction *action, editMenu->actions()) if(action->isEnabled()) view->addAction(action); }
void DiagramWindow::setZValue(int z) { Node *node = selectedNode(); if(node) node->setZValue(z); }