Esempio n. 1
0
/*-----------------------------------------------------------------*/
void __fastcall TDBWFRM::RangePatternsClick(TObject *Sender)
{
    dbw3_assert(cursorhandler);
    cursorhandler->DisableCursor();
    try {
        dbw3_assert(bereichundo);
        TBlockmusterForm* pFrm = new TBlockmusterForm(this, *bereichundo, &bereichmuster, currentbm, cursorhandler, SUBST_RANGE, false);
        if (pFrm->ShowModal()==mrOk) {
            int x = pFrm->mx+1;
            int y = pFrm->my+1;

            // Auf Schlagpatrone umschalten
            ViewSchlagpatrone->Checked = true;
            trittfolge.einzeltritt = false;

            BereicheFillPattern (x, y);

            CalcRange();
            CalcRapport();
            RecalcAll();

            Invalidate();
            dbw3_assert (undo!=0);
            undo->Snapshot();
        }
        delete pFrm;
    } catch (...) {
    }
    SetModified();
    cursorhandler->EnableCursor();
}
Esempio n. 2
0
JBoolean
JXFileInput::InputValid()
{
	if (itsAllowInvalidFileFlag)
		{
		return kJTrue;
		}
	else if (!JXInputField::InputValid())
		{
		return kJFalse;
		}

	const JString& text = GetText();
	if (text.IsEmpty())
		{
		return JNegate(IsRequired());
		}

	JString fullName;
	const JCharacter* errID = NULL;
	if (JIsRelativePath(text) && !HasBasePath())
		{
		errID = kNoRelPathID;
		RecalcAll(kJTrue);
		}
	else if (!JConvertToAbsolutePath(text, itsBasePath, &fullName) ||
			 !JFileExists(fullName))
		{
		errID = kDoesNotExistID;
		}
	else if (itsRequireReadFlag && !JFileReadable(fullName))
		{
		errID = kUnreadableID;
		}
	else if (itsRequireWriteFlag && !JFileWritable(fullName))
		{
		errID = kUnwritableID;
		}
	else if (itsRequireExecFlag && !JFileExecutable(fullName))
		{
		errID = kCannotExecID;
		}

	if (JStringEmpty(errID))
		{
		return kJTrue;
		}
	else
		{
		(JGetUserNotification())->ReportError(JGetString(errID));
		return kJFalse;
		}
}
void
JXPathInput::SetBasePath
	(
	const JCharacter* path
	)
{
	if (JStringEmpty(path))
		{
		ClearBasePath();
		}
	else
		{
		assert( JIsAbsolutePath(path) );
		itsBasePath = path;
		RecalcAll(kJTrue);
		}
}
Esempio n. 4
0
void
JXFileInput::SetBasePath
	(
	const JCharacter* path
	)
{
	if (JStringEmpty(path))
		{
		ClearBasePath();
		}
	else
		{
		assert( !JIsRelativePath(path) );
		itsBasePath = path;
		RecalcAll(kJTrue);
		}
}
Esempio n. 5
0
/*-----------------------------------------------------------------*/
void __fastcall TDBWFRM::SwitchRange (int _range)
{
    RANGE savesel = selection;
    selection.Normalize();

    if (selection.Valid() && selection.feld==GEWEBE) {
        bool changed = false;
        bool empty = true;
        for (int i=selection.begin.i; i<=selection.end.i; i++)
            for (int j=selection.begin.j; j<=selection.end.j; j++) {
                char c = gewebe.feld.Get(i,j);
                if (c>0) {
                    gewebe.feld.Set (i, j, char(_range));
                    if (c!=_range) changed = true;
                    empty = false;
                }
            }
        if (empty) {
            for (int i=selection.begin.i; i<=selection.end.i; i++)
                for (int j=selection.begin.j; j<=selection.end.j; j++)
                    gewebe.feld.Set (i, j, char(_range));
            changed = true;
        }
        if (changed) {
            RecalcAll();
            CalcRangeSchuesse();
            CalcRangeKette();
            CalcRapport();
            UpdateStatusBar();
            Invalidate();
            SetModified();
            if (undo) undo->Snapshot();
        }
    } else if (selection.Valid() && selection.feld==AUFKNUEPFUNG) {
        bool changed = false;
        bool empty = true;
        for (int i=selection.begin.i; i<=selection.end.i; i++)
            for (int j=selection.begin.j; j<=selection.end.j; j++) {
                char c = aufknuepfung.feld.Get(i,j);
                if (c>0) {
                    aufknuepfung.feld.Set (i, j, char(_range));
                    if (c!=_range) changed = true;
                    empty = false;
                }
            }
        if (empty) {
            for (int i=selection.begin.i; i<=selection.end.i; i++)
                for (int j=selection.begin.j; j<=selection.end.j; j++)
                    aufknuepfung.feld.Set (i, j, char(_range));
            changed = true;
        }
        if (changed) {
            RecalcGewebe();
//            RecalcAll(); // Nötig weil u. U. Änderungen...
            CalcRangeSchuesse();
            CalcRangeKette();
            CalcRapport();
            UpdateStatusBar();
            Invalidate();
            SetModified();
            if (undo) undo->Snapshot();
        }
    } else if (ViewSchlagpatrone->Checked && selection.Valid() && selection.feld==TRITTFOLGE) {
        bool changed = false;
        bool empty = true;
        for (int i=selection.begin.i; i<=selection.end.i; i++)
            for (int j=selection.begin.j; j<=selection.end.j; j++) {
                char c = trittfolge.feld.Get(i,j);
                if (c>0) {
                    trittfolge.feld.Set (i, j, char(_range));
                    if (c!=_range) changed = true;
                    empty = false;
                }
            }
        if (empty) {
            for (int i=selection.begin.i; i<=selection.end.i; i++)
                for (int j=selection.begin.j; j<=selection.end.j; j++)
                    trittfolge.feld.Set (i, j, char(_range));
            changed = true;
        }
        if (changed) {
            RecalcGewebe();
//            RecalcAll(); // Nötig weil u. U. Änderungen...
            CalcRangeSchuesse();
            CalcRangeKette();
            CalcRapport();
            UpdateStatusBar();
            Invalidate();
            SetModified();
            if (undo) undo->Snapshot();
        }
    }
    switch (_range) {
        case 1: Range1Click(this); break;
        case 2: Range2Click(this); break;
        case 3: Range3Click(this); break;
        case 4: Range4Click(this); break;
        case 5: Range5Click(this); break;
        case 6: Range6Click(this); break;
        case 7: Range7Click(this); break;
        case 8: Range8Click(this); break;
        case 9: Range9Click(this); break;
    }
    selection = savesel;
}
JBoolean
JXPathInput::InputValid()
{
	if (itsAllowInvalidPathFlag)
		{
		return kJTrue;
		}
	else if (!JXInputField::InputValid())
		{
		return kJFalse;
		}

	const JString& text = GetText();
	if (text.IsEmpty())		// paranoia -- JXInputField should have reported
		{
		return !IsRequired();
		}

	JString path;
	if (JIsRelativePath(text) && !HasBasePath())
		{
		(JGetUserNotification())->ReportError(JGetString(kNoRelPathID));
		RecalcAll(kJTrue);
		return kJFalse;
		}
	if (!JConvertToAbsolutePath(text, itsBasePath, &path))
		{
		(JGetUserNotification())->ReportError(JGetString(kInvalidPathID));
		RecalcAll(kJTrue);
		return kJFalse;
		}

	const JString currDir = JGetCurrentDirectory();
	const JError err      = JChangeDirectory(path);
	JChangeDirectory(currDir);

	if (err.OK())
		{
		if (!JDirectoryReadable(path))
			{
			(JGetUserNotification())->ReportError(JGetString(kUnreadableID));
			RecalcAll(kJTrue);
			return kJFalse;
			}
		else if (itsRequireWriteFlag && !JDirectoryWritable(path))
			{
			(JGetUserNotification())->ReportError(JGetString(kUnwritableID));
			RecalcAll(kJTrue);
			return kJFalse;
			}
		else
			{
			return kJTrue;
			}
		}

	const JCharacter* errID;
	if (err == kJAccessDenied)
		{
		errID = kAccessDeniedID;
		}
	else if (err == kJBadPath)
		{
		errID = kBadPathID;
		}
	else if (err == kJComponentNotDirectory)
		{
		errID = kCompNotDirID;
		}
	else
		{
		errID = kInvalidDirID;
		}

	(JGetUserNotification())->ReportError(JGetString(errID));
	RecalcAll(kJTrue);
	return kJFalse;
}
Esempio n. 7
0
void AutoFieldSetup()
{
  MenuRootC::currTreeObj = NULL;
  fieldDataRoot.CloseUI();

  bool multiWells = MultiWellIDS() && processTestZonePressureData;

  autoRoot = &fieldDataRoot;

  // just for effect
  fieldDataRoot.pageLeafs[0]->pageObjects[0]->SetID("Pens&ColorMaps");
  fieldDataRoot.pageLeafs[0]->pageSelected = false;
  fieldDataRoot.pageLeafs[0]->pageExpanded = false;
  fieldDataRoot.pageLeafs[0]->UpdatePage();

  // delete downstream pages
  DeleteFieldPage(processTestZonePressureData, "P_Cartesian", 0);
  DeleteFieldPage(processTestZoneFlowData, "Q_Cartesian", 0);

  //
  FuncObjArray fieldPFO, fieldQFO, simPFO, simQFO;
  if (multiWells)
  {
    for (int i = 0; i < currentWells.Size(); i++)
    {
      MenuPageC* currWell = fieldDataRoot.FindPage(currentWells[i], 0);
      if (currWell)
      {
        DeleteFieldPages(currWell);
        if (currWell->childPages.IsEmpty())
          DeleteFieldPage(true, currentWells[i], 0);
      }
    }

    for (int i = 0; i < currentWells.Size(); i++)
    {
      wellID = currentWells[i];
      MenuPageC* currWell = fieldDataRoot.FindPage(wellID, 0);
      if (!currWell)
      {
        AddNewDataPage(wellID, 0);
        currWell = autoPage;
      }

      AddFieldPages(autoPage, i == 0, fieldPFO, fieldQFO);
      simPFO += DataCaptureStaticSupport::GetWellPFO(wellID);
      simQFO += DataCaptureStaticSupport::GetWellQFO(wellID);
    }

  }
  else
  {
    DeleteFieldPages(0);
    wellID = currentWells[0];
    AddFieldPages(0, true, fieldPFO, fieldQFO);
    simPFO += DataCaptureStaticSupport::GetWellPFO(wellID);
    simQFO += DataCaptureStaticSupport::GetWellQFO(wellID);
  }


  // set data capture
//  dataCapture.SetToInitial();   // sets s_PDAT & s_QDAT

  FuncObjC* pressSimFO = 0;
  FuncObjC* flowSimFO = 0;
  if (dataCapture.DataCaptureOK())
  {
    pressSimFO = dataCaptureData[0]->GetObjRef();
    if (processTestZoneFlowData)
      flowSimFO = dataCaptureData[1]->GetObjRef();
  }

  if (createPressurePlot && processTestZonePressureData)
  {
    AddNewXYPage("Fld", "P_Cartesian", true, true);

    if (multiWells)
    {
      for (int i = 0; i < currentWells.Size(); i++)
      {
        char objID[80];
        MakeString(objID, currentWells[i], "_Pressure", 80);
        PFO_2DXYData* currXY = AddXYDataPFO(objID);

        MakeString(objID, currentWells[i], " measured pressure", 80);
        SetXYDisplay(*currXY, 0, FuncObjRef(fieldPFO[i], 0), ps_FCircle, objID);
        currXY->xySeries[0].seriesPen = i + 1;

        MakeString(objID, currentWells[i], " simulated pressure", 80);
        SetXYDisplay(*currXY, 1, FuncObjRef(simPFO[i], 0), "Simulated pressure");
        currXY->xySeries[1].seriesPen = i + 1;
      }
    }
    else
    {
      PFO_2DXYData* currXY = AddXYDataPFO("Pressure");
      SetXYDisplay(*currXY, 0, FuncObjRef(fieldPFO[0], 0), ps_FCircle, "Measured pressure");
      SetXYDisplay(*currXY, 1, FuncObjRef(simPFO[0], 0), "Simulated pressure");
    }

    AddNewObject("PPO_SequenceGridLines", "Sequences", true);
    RecalcPage();
  }

  if (createFlowPlot && processTestZoneFlowData)
  {
    AddNewXYPage("Fld", "Q_Cartesian", true, true);
    PFO_2DXYData* currXY = AddXYDataPFO("Flow");
    SetXYDisplay(*currXY, 0, FuncObjRef(fieldQFO[0], 0), ps_FCircle, "Field flow rate");
    SetXYDisplay(*currXY, 1, FuncObjRef(simQFO[0], 0), "Simulated flow rate");
    AddNewObject("PPO_SequenceGridLines", "Sequences", true);
    RecalcPage();
  }

  RecalcAll();
}