예제 #1
0
/**
 Une los puntos de la nueva celula.
 */
void PanelDibujado::unePuntosPintado()
{
	PanelPropiedades *panelDer;

	panelDer = interfazPrincipal->getPanelPropiedades(); 
		   
	if(!capaCelula->getSeccionBorrada())
	{
		//Lanzamos la señal para añadir a la pila deshacer
		modifCell.emit();
	}
	
	//Agregamos la celula
	if(!capaCelula->agregaCelula())
	{
		capaCelula->borrarCelulaNueva();
	}
	else
	{
		capaCelula->addCellToListCells();
	}
	
	actualizarVista();
	
}
예제 #2
0
/**
 Establece el estado de las celulas.
 @param est, string.
 */
void PanelDibujado::estabEstadoPopup(string est)
{
	int tam, numCelula;
	PanelPropiedades *panelDer;

	panelDer = interfazPrincipal->getPanelPropiedades();

	tam = capaCelula->getNumsCelulaSeleccionada();
		
	modifClaseEstadoP.emit();

	
	//if(est == "sin estado")
	if(est == "without state")
	{
		est = "";
	}
	
	for(int i = 0; i < tam; i++)
	{
		numCelula = capaCelula->getCelulaSeleccionada(i);
		
		est = capaCelula->setEstadoCelulaSeleccionada(est, numCelula);
	}

	barraEst->setEstadoCell(est);
	
	capaCelula->vaciaVectorCelulaSeleccionada();

	menuPopupCel->setSensitiveInicialPopup();
	menuPrinc->setSensitiveOpcMenu("SubCalcularUnDiam");
	panelDer->setSensitiveCalcDiam(false);
	panelDer->setSensitiveSelecClase(false);
	panelDer->setSensitiveSelecEstado(false);
	
	//Repintamos
	actualizarVista();
}
예제 #3
0
/**
 Destruye la rejilla.
 */
void PanelDibujado::destrucRejilla()
{
	verRejilla = false;
	surfaceRejilla->finish();
	actualizarVista();
}
예제 #4
0
void CSMPCacheView::OnFileOpen()
{
	// TODO: Agregue aquí su código de controlador de comandos
	CString sFiltro;
	sFiltro="Ficheros configuracion (*.cfg)|*.cfg|Fichers traza (*.prg)|*.prg||";

	CFileDialog Dialogoabrir(TRUE,NULL,NULL,4|2,sFiltro);

	if(Dialogoabrir.DoModal() != IDOK)
		return;

	ErrorConfig varControl;

	CStdioFile file;
	CString str;
	int i = 0;
	file.Open(Dialogoabrir.GetPathName(), CFile::modeRead);
	file.ReadString(str);
	file.ReadString(str);
	procn = _wtoi(str);
	if(procn < 1 || procn > 8)
		varControl.add(_T("Error en la configuracion del numero de procesadores!"));
	file.ReadString(str);
	file.ReadString(str);
	protocolo = int2Protocolo(_wtoi(str),varControl);
	file.ReadString(str);
	file.ReadString(str);
	arbitracion = int2Arbitracion(_wtoi(str),varControl);
	file.ReadString(str);
	file.ReadString(str);
	anchoPalabra = _wtoi(str);
	if(anchoPalabra != 8 && anchoPalabra != 16 && anchoPalabra != 32 && anchoPalabra != 64 )
		varControl.add(_T("Error en la configuracion del ancho de palabra!"));
	file.ReadString(str);
	file.ReadString(str);
	palabrasBloque = _wtoi(str);
	if(palabrasBloque < 1 || ((int) log2(palabrasBloque)) != log2(palabrasBloque) || log2(palabrasBloque) > 10 )
		varControl.add(_T("Error en la configuracion de palabras por bloque!"));
	file.ReadString(str);
	file.ReadString(str);
	bloqMemoria = _wtoi(str);
	if(bloqMemoria < 1 || ((int) log2(bloqMemoria)) != log2(bloqMemoria) || log2(bloqMemoria) > 15 )
		varControl.add(_T("Error en la configuracion del numero de bloques en memoria!"));
	file.ReadString(str);
	file.ReadString(str);
	bloqCache = _wtoi(str);
	if(bloqCache < 1 || ((int) log2(bloqCache)) != log2(bloqCache) || log2(bloqCache) > 9 )
		varControl.add(_T("Error en la configuracion del numero de bloques en cache!"));
	file.ReadString(str);
	file.ReadString(str);
	fcorrespondencia = int2Correspondencia(_wtoi(str),varControl);
	file.ReadString(str);
	file.ReadString(str);
	nConjuntos = _wtoi(str);
	if(nConjuntos < 0 || ((int) log2(nConjuntos)) != log2(nConjuntos) || log2(nConjuntos) > 9 )
		varControl.add(_T("Error en la configuracion del numero de conjuntos en cache!"));
	file.ReadString(str);
	file.ReadString(str);
	aremplazamiento = int2ARemplazamiento(_wtoi(str),varControl);
	file.ReadString(str);
	file.ReadString(str);
	nCache = _wtoi(str);
	if(nCache != 1)
		varControl.add(_T("Error en la configuracion del numero de niveles de cache!"));
	file.ReadString(str);
	file.ReadString(str);
	pescritura = _wtoi(str);
	if(pescritura != 2)
		varControl.add(_T("Error en la configuracion del protocolo de escritura!"));
	file.ReadString(str);
	//ficheros de traza
	for(int i = 0; i < 8;i++)
	{
		file.ReadString(str);
		fTrazas[i] = str.Right(str.GetLength()-3);
	}

	//obtencion de las estadisticas totales
	int TAccesos = 0, TInst = 0, TLec = 0, TEsc = 0;
	CStdioFile file2;
	CString str2;
	for(int i = 0; i<procn;i++)
	{
		if(!fTrazas[i].IsEmpty())
		{
				if(!file2.Open(fTrazas[i], CFile::modeRead))
				{
					varControl.add(_T("Error: archivo de traza inexistente"));
				}
				while(file2.ReadString(str2))
				{
					TAccesos++;
					int i = 0;

					switch((TINSTRUCCION)_wtoi(str2.Left(1)))
					{
						case 0: TInst++;break;
						case 2: TLec++;break;
						case 3: TEsc++;break;
					}
				}
				file2.Close();
		}
	}

	bIniciar.EnableWindow(true);

		char cadena[20];
		_itoa_s(TInst,cadena,10);
		TotalInst.SetWindowTextW((CString)cadena);
		_itoa_s(TAccesos,cadena,10);
		TotalAccesos.SetWindowTextW((CString)cadena);
		_itoa_s(TLec,cadena,10);
		TotalLeidas.SetWindowTextW((CString)cadena);
		_itoa_s(TEsc,cadena,10);
		TotalEscritos.SetWindowTextW((CString)cadena);

	bool alguna = false;
	for(int i =0; i< 8; i++)
	{
		if(!fTrazas[i].IsEmpty()) alguna = true;
	}
	if(!alguna)
		varControl.add(_T("Error en la configuracion de los ficheros de traza, no se ha indicado ninguno!"));


	if(fcorrespondencia == F_DIRECTA && (nConjuntos != 0 || aremplazamiento != R_NO))
		varControl.add(_T("Error, falta de coherencia en los datos"));
	if(fcorrespondencia == F_ACONJUNTOS && nConjuntos == 0)
		varControl.add(_T("Error, falta de coherencia en los datos"));
	if(fcorrespondencia == F_TASOCIATIVA && nConjuntos != 0)
		varControl.add(_T("Error, falta de coherencia en los datos"));

	try{
		varControl.check();
		actualizarVista();
	}catch (ErrorConfig *ex)
	{
		ex->what();
	}
}