コード例 #1
0
ファイル: WMemoryMap.C プロジェクト: InstRO/InstRO-ROSE-edg4x
void
WMemoryMap::updateRowGroupDataWidgets(RowGroup &rg, MemoryMap::NodeIterator mmNode) {
    ASSERT_require(mmNode != memoryMap_.nodes().end());
    const AddressInterval &interval = mmNode->key();
    ASSERT_forbid(interval.isEmpty());
    ASSERT_require(rg.segmentVa == interval.least());

    rg.wSplit->setHidden(!isEditable_ || rg.editingColumn==SplitColumn || !canSplit(rg, mmNode));
    rg.wMerge->setHidden(!isEditable_ || rg.editingColumn==MergeColumn || !canMerge(rg, mmNode));

    rg.wLeastVa->setText(StringUtility::addrToString(interval.least()));
    rg.wGreatestVa->setText(StringUtility::addrToString(interval.greatest()));

    if (interval.isWhole()) {
        rg.wSize->setText("whole");                    // since size would overflow back to zero
    } else {
        rg.wSize->setText(StringUtility::addrToString(interval.size()));
    }

    const MemoryMap::Segment &segment = mmNode->value();
    rg.wReadable->setChecked(0 != (segment.accessibility() & MemoryMap::READABLE));
    rg.wWritable->setChecked(0 != (segment.accessibility() & MemoryMap::WRITABLE));
    rg.wExecutable->setChecked(0 != (segment.accessibility() & MemoryMap::EXECUTABLE));

    rg.wName->setText(StringUtility::cEscape(segment.name()));
}
コード例 #2
0
ファイル: map.cpp プロジェクト: csellsword/planeswalker
void Map::expand(MapNode *node){
	unsigned int x, y;
	if(canSplit(node,x,y)){
		if((x>ROOM_MAX+2) && (y>ROOM_MAX+2)){
			//pick a split and do it
			if(mapRNG->getInt(0,9) > 4) splitX(node);
			else splitY(node);
		}else if(y > ROOM_MAX+2){
			splitY(node);
		}else{
			splitX(node); 
		}
	}else return;
}	
コード例 #3
0
ファイル: WMemoryMap.C プロジェクト: InstRO/InstRO-ROSE-edg4x
void
WMemoryMap::updateRowGroupEditWidgets(RowGroup &rg, MemoryMap::NodeIterator mmNode) {
    if (isEditable_) {
        rg.wDelete->setHidden(rg.editingColumn==DeleteColumn);
        rg.wMove->setHidden(rg.editingColumn==MoveColumn);
        rg.wSplit->setHidden(rg.editingColumn==SplitColumn || !canSplit(rg, mmNode));
        rg.wMerge->setHidden(rg.editingColumn==MergeColumn || !canMerge(rg, mmNode));
        rg.wReadable->setEnabled(true);
        rg.wWritable->setEnabled(true);
        rg.wExecutable->setEnabled(true);

        switch (rg.editingColumn) {
            case ZeroColumn:
                rg.wEditStack->hide();
                break;
            case DeleteColumn:
                rg.wEditStack->setCurrentWidget(rg.wDeleteConfirm);
                rg.wEditStack->show();
                break;
            case MoveColumn:
                rg.wEditStack->setCurrentWidget(rg.wMoveSegment);
                rg.wEditStack->show();
                break;
            case MergeColumn:
                rg.wEditStack->setCurrentWidget(rg.wMergeConfirm);
                rg.wEditStack->show();
                break;
            case SplitColumn:
            case LeastVaColumn:
            case GreatestVaColumn:
            case SizeColumn:
                rg.wEditStack->setCurrentWidget(rg.wHexValueEdit);
                rg.wEditStack->show();
                break;
            default:
                ASSERT_not_reachable("don't know how to edit column " + StringUtility::numberToString(rg.editingColumn));
        }
    } else {
        rg.wDelete->hide();
        rg.wMove->hide();
        rg.wSplit->hide();
        rg.wMerge->hide();
        rg.wReadable->setEnabled(false);
        rg.wWritable->setEnabled(false);
        rg.wExecutable->setEnabled(false);
    }
}