Beispiel #1
0
void __fastcall TFrmDemand::Button_add_textClick(TObject *Sender)
{
	Demand* text = new Demand;
	text->text_dem = string(AnsiString(Edit_textNode->Text).c_str());
	TreeView_doc_Struct->Items->AddObject(NULL, this->Edit_textNode->Text, (void*)text);
}
void __fastcall TfrmMain::Open1Click(TObject *Sender)
{
    if (CloseTexture("This will close current texture, are you sure?", "Warning") == false)
    {
        return;
    }

    if (openedByClicking)
    {
        openedByClicking = false;
    }
    else
    {
        if (dlgOpen->Execute() == false)
        {
            return;
        }

        textureFilename = dlgOpen->Files->Strings[0].c_str();
    }

    loadingTexture = true;

    nrLayers = 0;

    int handle;

    if ((handle = open(textureFilename, O_RDONLY | O_BINARY, S_IREAD)) == -1)
    {
        Application->MessageBoxA("Error opening file", "Error", MB_OK);
        return;
    }

    char header[5] = {'0','0','0','0','\0'};
    read(handle, header, 4);

    int version = - 1;
    if (strcmp(header, TEXGEN_HEADER1) == 0)
    {
        version = 1;
    }
    else
    if (strcmp(header, TEXGEN_HEADER2) == 0)
    {
        version = 2;
    }
    if (version == -1)
    {
        Application->MessageBoxA("Not a valid Aardbei Texture Studio file", "Error", MB_OK);
        return;
    }

    read(handle, &nrFilters, 2);

    read(handle, &textureWidth, 2);
    read(handle, &textureHeight, 2);

    generator = new TextureGenerator(textureWidth, textureHeight);

    NewLayer1Click(this);

    layerPreview = new unsigned int[textureWidth * textureHeight];

    for (int i = 0; i < nrFilters; i++)
    {
        stbMain->SimpleText = "Loading texture (filter " + IntToStr(i + 1) + " / " + IntToStr(nrFilters) + ")";
        unsigned char command;
        long offset = lseek(handle, 0, SEEK_CUR);
        read(handle, &command, 1);
        lseek(handle, offset, SEEK_SET);
        if (command == TEXGEN_NEWLAYER)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            NewLayer1Click(this);
        }
        if (command == TEXGEN_CHANGELAYER)
        {
            FilterChangeLayer *filter = new FilterChangeLayer();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterChangeLayer));
            frmLayers[filter->layerNr]->SetFocus();
        }
        if (command == TEXGEN_COPY)
        {
            FilterCopy *filter = new FilterCopy();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterCopy));
            generator->FilterCopy(generator->layerActive,
                                  generator->layers[filter->sourceNr],
                                  filter->channel);
        }
        if (command == TEXGEN_ADD)
        {
            FilterAdd *filter = new FilterAdd();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterAdd));
            generator->FilterAdd(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->channel);
        }
        if (command == TEXGEN_SUB)
        {
            FilterSub *filter = new FilterSub();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterSub));
            generator->FilterSub(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->channel);
        }
        if (command == TEXGEN_MUL)
        {
            FilterMul *filter = new FilterMul();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterMul));
            generator->FilterMul(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->channel);
        }
        if (command == TEXGEN_NOTNULLCOPY)
        {
            FilterNotNull *filter = new FilterNotNull();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterNotNull));
            generator->FilterNotNullCopy(generator->layerActive,
                                         generator->layers[filter->sourceNr],
                                         filter->channel);
        }
        if (command == TEXGEN_MIX)
        {
            FilterMix *filter = new FilterMix();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterMix));
            generator->FilterMix(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->alpha,
                                 filter->channel);
        }
        if (command == TEXGEN_SHADE)
        {
            FilterShade *filter = new FilterShade();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterShade));
            generator->FilterShade(generator->layerActive,
                                   generator->layers[filter->sourceNr],
                                   filter->lightning,
                                   filter->channel);
        }
        if (command == TEXGEN_PLASMA)
        {
            FilterPlasma *filter = new FilterPlasma();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterPlasma));
            generator->FilterPlasma(filter->aantalX,
                                    filter->aantalY,
                                    filter->shiftX,
                                    filter->shiftY,
                                    filter->channel,
                                    filter->method);
        }
        if (command == TEXGEN_FRACTALPLASMA)
        {
            FilterFractalPlasma *filter = new FilterFractalPlasma();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterFractalPlasma));
            generator->FilterFractalPlasma(filter->factor,
                                           filter->seed,
                                           filter->channel,
                                           filter->method);
        }
        if (command == TEXGEN_CELLS)
        {
            FilterCells *filter = new FilterCells();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterCells));
            generator->FilterCells(filter->density,
                                   filter->strength,
                                   filter->seed,
                                   filter->channel,
                                   filter->method);
        }
        if (command == TEXGEN_TEXT)
        {
            FilterText *filter = new FilterText();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterText));
            generator->FilterText(filter->text,
                                  filter->font,
                                  filter->color,
                                  filter->size,
                                  filter->x,
                                  filter->y,
                                  filter->aa,
                                  filter->style,
                                  filter->clip,
                                  filter->method);
        }
        if (command == TEXGEN_BRUSH)
        {
            FilterBrush *filter = new FilterBrush();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterBrush));
            generator->FilterBrush(filter->x,
                                    filter->y,
                                    filter->size,
                                    filter->density,
                                    filter->hardness,
                                    filter->opacity,
                                    filter->color);
        }
        if (command == TEXGEN_NOISE)
        {
            FilterNoise *filter = new FilterNoise();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterNoise));
            generator->FilterNoise(filter->strength,
                                   filter->uniform,
                                   filter->multi,
                                   filter->seed,
                                   filter->channel,
                                   filter->method);
        }
        if (command == TEXGEN_RECTANGLE)
        {
            FilterRectangle *filter = new FilterRectangle();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterRectangle));
            generator->FilterRectangle(filter->x1,
                                       filter->y1,
                                       filter->x2,
                                       filter->y2,
                                       filter->color,
                                       filter->method);
        }
        if (command == TEXGEN_GAUSSIANBLUR)
        {
            FilterGaussianBlur *filter = new FilterGaussianBlur();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterGaussianBlur));
            if (version == 1)
            {
                filter->radius *= 27;
            }
            generator->FilterGaussianBlur(filter->radius);
        }
        if (command == TEXGEN_MOTIONBLUR)
        {
            FilterMotionBlur *filter = new FilterMotionBlur();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterMotionBlur));
            generator->FilterMotionBlur(filter->angle,
                                        filter->radius);
        }
        if (command == TEXGEN_DIRBLUR)
        {
            FilterDirBlur *filter = new FilterDirBlur();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterDirBlur));
            generator->FilterDirBlur(generator->layers[filter->sourceNr],
                                     filter->aantal,
                                     filter->channel);
        }
        if (command == TEXGEN_BOXBLUR)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterBoxBlur();
        }
        if (command == TEXGEN_EMBOSS)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterEmboss();
        }
        if (command == TEXGEN_SOBEL)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterSobel();
        }
        if (command == TEXGEN_EDGE)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterEdge();
        }
        if (command == TEXGEN_TOPLEFT)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterTopLeft();
        }
        if (command == TEXGEN_HSV)
        {
            FilterHsv *filter = new FilterHsv();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterHsv));
            generator->FilterHsv(filter->rotation,
                                 filter->saternation);
        }
        if (command == TEXGEN_INVERT)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterInvert();
        }
        if (command == TEXGEN_CONTRAST)
        {
            FilterContrast *filter = new FilterContrast();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterContrast));
            generator->FilterContrast(filter->strength);
        }
        if (command == TEXGEN_BRIGHTNESS)
        {
            FilterBrightness *filter = new FilterBrightness();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterBrightness));
            generator->FilterBrightness(filter->strength);
        }
        if (command == TEXGEN_SINEDISTORT)
        {
            FilterSineDistort *filter = new FilterSineDistort();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterSineDistort));
            generator->FilterSineDistort(filter->nrX,
                                         filter->nrY,
                                         filter->ampX,
                                         filter->ampY,
                                         filter->shiftX,
                                         filter->shiftY);
        }
        if (command == TEXGEN_TILE)
        {
            FilterTile *filter = new FilterTile();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterTile));
            generator->FilterTile(filter->repX,
                                  filter->repY);
        }
    }

    close(handle);

    mnuMain->Items->Items[menuIndexGenerate]->Visible = true;
    mnuMain->Items->Items[menuIndexDistort]->Visible  = true;
    mnuMain->Items->Items[menuIndexLayer]->Visible    = true;
    mnuMain->Items->Items[menuIndexBlur]->Visible     = true;
    Undo1->Enabled = true;
    Export1->Enabled = true;
    mnuMain->Items->Items[menuIndexColor]->Visible    = true;
    mnuMain->Items->Items[menuIndexFile]->Items[menuIndexClose]->Visible  = true;
    mnuMain->Items->Items[menuIndexFile]->Items[menuIndexSave]->Visible   = true;
    mnuMain->Items->Items[menuIndexFile]->Items[menuIndexSaveAs]->Visible = true;

    Caption = "Aardbei Texture Studio (" + AnsiString(textureFilename) + ")";

    havesFilename    = true;
    workingOnTexture = true;
    loadingTexture   = false;

    for (int i = 0; i < nrLayers; i++)
    {
        frmLayers[i]->UpdateOutput();
    }

    stbMain->SimpleText = "";

    Cascade();
}
Beispiel #3
0
bool
TestConnect::PerformTest(ConnectionSecurity connection_security, const String  &localAddressStr, const String &server, int port, String &result)
{
    std::shared_ptr<IOService> io_service_wrapper = Application::Instance()->GetIOService();

    IPAddress localAddress;
    if (!localAddressStr.IsEmpty())
    {
        if (!localAddress.TryParse(localAddressStr, false))
        {
            result.append(Formatter::Format("ERROR: Unable to parse address {0}.\r\n", localAddressStr));
            return false;
        }
        else
            result.append(Formatter::Format("Local address is {0}.\r\n", localAddress.ToString()));
    }

    result.append(Formatter::Format("Trying to connect to host {0}...\r\n", server));


    // Get a list of endpoints corresponding to the server name.
    tcp::resolver resolver(io_service_wrapper->GetIOService());
    tcp::resolver::query query(AnsiString(server), AnsiString(StringParser::IntToString(port)), tcp::resolver::query::numeric_service);
    boost::system::error_code errorResolve = boost::asio::error::host_not_found;
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query, errorResolve);
    tcp::resolver::iterator end;

    if (errorResolve || endpoint_iterator == end)
    {
        // Host was not found.
        String formattedString;
        formattedString.Format(_T("ERROR: The host name %s could not be resolved.\r\n"), server.c_str());

        result.append(formattedString);
        return false;
    }

    String last_error_message;

    // Try each endpoint until we successfully establish a connection.
    boost::system::error_code error = boost::asio::error::host_not_found;
    while (error && endpoint_iterator != end)
    {
        boost::asio::ip::address adr = (*endpoint_iterator).endpoint().address();

        String ipAddressString = adr.to_string();
        String formattedString;
        formattedString.Format(_T("Trying to connect to TCP/IP address %s on port %d.\r\n"), ipAddressString.c_str(), port);
        result.append(formattedString);


        std::shared_ptr<Event> disconnectEvent = std::shared_ptr<Event>(new Event());

        std::shared_ptr<TestConnectionResult> connection_result = std::make_shared<TestConnectionResult>();

        std::shared_ptr<TestConnection> connection = std::make_shared<TestConnection>(connection_security, io_service_wrapper->GetIOService(), io_service_wrapper->GetClientContext(), disconnectEvent, server, connection_result);
        if (connection->Connect(ipAddressString, port, localAddress))
        {
            connection.reset();

            disconnectEvent->Wait();

            if (connection_result->GetConnectedSuccesfully())
            {
                result.append(_T("Connected successfully.\r\n"));

                if (connection_security == CSSSL)
                {
                    if (connection_result->GetHandshakeCompletedSuccesfully())
                    {
                        result.append(_T("SSL/TLS handshake completed successfully.\r\n"));
                        return true;
                    }
                    else
                    {
                        result.append(_T("ERROR: Handshake failed.\r\n"));
                        return false;
                    }
                }
                else
                {
                    return true;
                }
            }
            else
            {
                result.append(Formatter::Format("ERROR: It was not possible to connect. Error: {0}.\r\n", connection_result->GetErrorMessage()));
            }
        }

        endpoint_iterator++;
    }

    // We were unable to connect.
    result.append(_T("ERROR: Failed to connect to all servers.\r\n"));
    return false;
}
void __fastcall TFormSimulacion::TrackBarDeposito5Change(TObject *Sender)
{
	deposito[4].Cantidad(TrackBarDeposito5->Position);
	LabelDeposito5->Caption=AnsiString(deposito[4].Cantidad()/10) + " %";
}
Beispiel #5
0
//---------------------------------------------------------------------
// 検索と置き換えの実行
int __fastcall TValRepDlg::Execute(ANTDEF *ap, int Row, int Col)
{
	Row--;
	Col--;
	WDEF *wp = &ap->wdef[Row];
	double d, nd, od, dd;
	int f = FALSE;
	switch(Col){
		case 0:		// X1
			d = wp->X1;
			dd = GetRmdVal(d);
			break;
		case 1:		// Y1
			d = wp->Y1;
			dd = GetRmdVal(d);
			break;
		case 2:		// Z1
			d = wp->Z1;
			dd = GetRmdVal(d);
			break;
		case 3:		// X2
			d = wp->X2;
			dd = GetRmdVal(d);
			break;
		case 4:		// Y2
			d = wp->Y2;
			dd = GetRmdVal(d);
			break;
		case 5:		// Z2
			d = wp->Z2;
			dd = GetRmdVal(d);
			break;
		case 6:		// R
			RepSel->ItemIndex = 0;
			InvSel->Checked = FALSE;
			RepSel->Enabled = FALSE;
			InvSel->Enabled = FALSE;
			d = wp->R;
			dd = GetRmdValD(d * 1000.0);
			break;
		case 7:		// Seg
			RepSel->ItemIndex = 0;
			InvSel->Checked = FALSE;
			RepSel->Enabled = FALSE;
			InvSel->Enabled = FALSE;
			EditOld->Text = Seg2Str(wp->SEG);
			EditNew->Text = Seg2Str(wp->SEG);
			break;
	}
	if( Col != 7 ){
		EditOld->Text = StrDbl(dd);
		EditNew->Text = StrDbl(dd);
		Calc(dd, AnsiString(EditOld->Text).c_str());
	}
	if( ShowModal() == IDOK ){
		int i;
		wp = ap->wdef;
		if( Col == 7 ){				// SEGの変更
			int oseg, nseg;
			if( Str2Seg(oseg, AnsiString(EditOld->Text).c_str()) != TRUE ) return FALSE;
			if( Str2Seg(nseg, AnsiString(EditNew->Text).c_str()) != TRUE ) return FALSE;
			if( oseg != nseg ){
				for( i = 0; i < ap->wmax; i++, wp++ ){
					if( wp->SEG == oseg ){
						wp->SEG = nseg;
						f = TRUE;
					}
				}
			}
			return f;
		}
		nd = d;
		Calc(od, AnsiString(EditOld->Text).c_str());
		Calc(nd, AnsiString(EditNew->Text).c_str());
		if( od == nd ) return FALSE;
		if( Col == 6 ){				// 半径の変更
			if( dd != od ){
				d = SetRmdValD(od)/1000.0;
			}
			for( i = 0; i < ap->wmax; i++, wp++ ){
				if( wp->R == d ){
					wp->R = SetRmdValD(nd)/1000.0;
					f = TRUE;
				}
			}
		}
		else {
			if( dd != od ){
				d = SetRmdVal(od);
			}
			nd = SetRmdVal(nd);
			for( i = 0; i < ap->wmax; i++, wp++ ){
				switch(RepSel->ItemIndex){
					case 0:
						RepJob(f, wp->X1, d, nd);
						RepJob(f, wp->Y1, d, nd);
						RepJob(f, wp->Z1, d, nd);
						RepJob(f, wp->X2, d, nd);
						RepJob(f, wp->Y2, d, nd);
						RepJob(f, wp->Z2, d, nd);
						break;
					case 1:
						RepJob(f, wp->X1, d, nd);
						RepJob(f, wp->X2, d, nd);
						break;
					case 2:
						RepJob(f, wp->Y1, d, nd);
						RepJob(f, wp->Y2, d, nd);
						break;
					case 3:
						RepJob(f, wp->Z1, d, nd);
						RepJob(f, wp->Z2, d, nd);
						break;
				}
			}
		}
	}
	return f;
}
Beispiel #6
0
//---------------------------------------------------------------------------
void __fastcall TFormDLLProgr::BtnCheckOcenkClick(TObject *Sender)
{
  if (ComboBoxOcenka->ItemIndex==-1)
  {
    MessageBox(Handle,"Выберите оценку пожалуйста.","Ошибка",MB_OK|MB_ICONERROR);
    //ComboBoxOcenka->SetFocus();
    return;
  }
  AnsiString EstimationStr=ComboBoxOcenka->ItemIndex;
  AnsiString BallStr=GetStrWithReplacedPoints(ComboBoxBall->Text);
  double valBall;

  try
  {
    valBall=BallStr.ToDouble();
    if (valBall<0 || valBall>5.0) throw 1;
  }
  catch(...)
  {
     MessageBox(Handle,"Балл это вещественное неотрицательное число из диапазона [0..5].\nИсправьте пожалуйста.","Ошибка",MB_OK|MB_ICONERROR);
     //ComboBoxBall->SetFocus();
     ComboBoxBall->SelectAll();
     return;
  }
  BallStr=GetStrWithReplacedPoints(BallStr,"."); //для MySql нужна точка

  AnsiString Msg="";
  switch (EstimationStr.ToInt())
  {
    case OTL:
      if (valBall<4.50 || valBall>5.0) Msg="Ошибка! При оценке \'отлично\' балл выбирается из дипазаона [4.50 .. 5.00].\nИсправьте пожалуйста.";
      break;
    case HOR:
      if (valBall<3.50 || valBall>4.49) Msg="Ошибка! При оценке \'хорошо\' балл выбирается из дипазаона [3.50 .. 4.49].\nИсправьте пожалуйста.";
      break;
    case UDOVL:
      if (valBall<2.50 || valBall>3.49) Msg="Ошибка! При оценке \'удовлетворительно\' балл выбирается из дипазаона [2.50 .. 3.49].\nИсправьте пожалуйста.";
      break;
    case NEUD:
      Msg="Ошибка! Оценка \'неудовлетворительно\' не может быть проставлена, поскольку о наличии такой оценки часто забывают, что может отразиться в отчетах.\nПроставьте оценку после пересдачи студентом экзамена.";
      break;
    case ZACH:
      if (valBall<2.50 || valBall>5.0) Msg="Ошибка! При оценке \'зачтено\' балл выбирается из дипазаона [2.50 .. 5.00].\nИсправьте пожалуйста.";
      break;
    case NEZACH:
      Msg="Ошибка! Оценка \'незачтено\' не может быть проставлена, поскольку о наличии такой оценки часто забывают, что может отразиться в отчетах.\nПроставьте оценку после пересдачи студентом зачета.";
      break;
  }
  if (!Msg.IsEmpty())
  {
    MessageBox(Handle,Msg.c_str(),"предупреждение",MB_OK|MB_ICONINFORMATION);
    ComboBoxBall->SelectAll();
    return;
  }

  int indexsel=ComboBoxDiscip->ItemIndex;
  if (indexsel < 0 || indexsel >= listIDsOfDiscip->Count) return;
  AnsiString IDDiscipStr=listIDsOfDiscip->Strings[indexsel];
  int classDiscip=listClassOfDiscip->Strings[indexsel].ToInt();
  bool isPeriod = IS_PERIOD(classDiscip);
  AnsiString IDStudStr=AnsiString(idstud);
  AnsiString PlanSemestrStr=UpDownPlan->Position;
  AnsiString GraphSemestrStr=UpDownGraphic->Position;

  AnsiString myquery="INSERT INTO "+opts.DBProgress+" (idstud,iddiscip,numplansemestr,numgraphsemestr,estimation,ball) VALUES("+ToStr(IDStudStr)+","+ToStr(IDDiscipStr)+","+ToStr(PlanSemestrStr)+","+ToStr(GraphSemestrStr)+","+ToStr(EstimationStr)+","+ToStr(BallStr)+")";
  mysql_query(mysql,myquery.c_str());
  //MessageBox(Handle,"Оценка зафиксирована!","Сообщение:",MB_OK|MB_ICONINFORMATION);

  ComboBoxDiscipChange(ComboBoxDiscip);

  // устанавливаем экзамен или зачет

  if ( ComboBoxOcenka->ItemIndex < 4 )
  {
    estim = 1;
    EstimLabel->Caption = "экзамен";
  }
  else
  {
    estim = 2;
    EstimLabel->Caption = "зачет";
  }

}
Beispiel #7
0
//---------------------------------------------------------------------------
void __fastcall TFormDLLProgr::BtnVKRClick(TObject *Sender)
{
// назначение/удаление названия ВКР
  AnsiString myquery;
  myquery="UPDATE "+opts.DBStudTable+" SET vkr_title="+ToStr(EditVKRTitle->Text)+" WHERE id="+ToStr(AnsiString(GetIDCurStud()));
  mysql_query(mysql,myquery.c_str());
  UpdateVKR();
}
Beispiel #8
0
std::ostream& operator<<( std::ostream& out, const UnicodeString& s )
{
    out << AnsiString( s );
    return out;
}
Beispiel #9
0
void __fastcall TfrmHydroGraph::HydroGraph()
{
/*
        int i,j; //i:col,j:row
        int iqobs,iqcal,iMeanGridRain,iAWmean,iSurfaceRunoff,iSubsurfaceRunoff,iRunoff,iETa;

        //Chart1->RemoveSeries(Series1);
        for(i=1;i<StringGrid1->ColCount;i++)
        {
                if(LowerCase(StringGrid1->Cells[i][0]) == "qobs") iqobs = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "qcal") iqcal = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "meangridrain") iMeanGridRain = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "awmean") iAWmean = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "surfacerunoff") iSurfaceRunoff = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "subsurfacerunoff") iSubsurfaceRunoff = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "runoff") iRunoff = i;
                else if(LowerCase(StringGrid1->Cells[i][0]) == "eta") iETa = i;
        }

        switch(iGraph)
        {
         case 0:
                //TLineSeries *LineSeries1;
                //LineSeries1->ParentChart = Chart1;
                //Chart1->AddSeries(TLineSeries *LineSeries1);
                Notebook1->PageIndex = 0;
                Series_qobs->Clear();
                Series_qcal->Clear();
                Series_P->Clear();
                Series_sm->Clear();

                //Chart1->Title->Text->Clear();
                //Chart1->Title->Text->Add("降水-径流过程线");
                //Series1->Style<<tssDenyChangeType; //不出错,但是没有看到作用

                for(j=1;j<StringGrid1->RowCount;j++)
                {
                        Series_qobs->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iqobs][j].ToDouble(),"",clBlack);
                        Series_qcal->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iqcal][j].ToDouble(),"",clRed);
                        Series_P->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iMeanGridRain][j].ToDouble(),"",clGreen);
                        Series_sm->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iAWmean][j].ToDouble(),"",clBlue);
                }
                Chart1->LeftAxis->Maximum = int(max(Series_qobs->MaxYValue(),Series_qcal->MaxYValue())*1.5);
                Chart1->RightAxis->Maximum = int(max(Series_P->MaxYValue(),Series_sm->MaxYValue())*1.5);
                break;
         case 1:
                Notebook1->PageIndex = 1;
                Series_Rd->Clear();
                Series_Rs->Clear();
                Series_R->Clear();
                Series_ETa->Clear();

                //Chart1->Title->Text->Clear();
                //Chart1->Title->Text->Add("地表/地下径流/蒸散发");
                for(j=1;j<StringGrid1->RowCount;j++)
                {
                        Series_R->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iRunoff][j].ToDouble(),"",clTeeColor);
                        Series_ETa->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iETa][j].ToDouble(),"",clTeeColor);
                        Series_Rd->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iSurfaceRunoff][j].ToDouble(),"",clTeeColor);
                        Series_Rs->AddXY(StringGrid1->Cells[0][j].ToInt(),StringGrid1->Cells[iSubsurfaceRunoff][j].ToDouble(),"",clTeeColor);
                }
                Chart2->LeftAxis->Maximum = int(Series_R->MaxYValue()*1.5);
                Chart2->RightAxis->Maximum = int(Series_ETa->MaxYValue()*1.5);
                Chart2->Repaint();
                break;
        }//switch
*/

float pcp,qobs,qcal,sm,ep,eta,tavg,tmax,tmin;
float etau,etad,awd,rud,rgg;
char sgauge[20],sdate[20];
char *s_graphfile;

  FILE *fpgraph;
  s_graphfile = "\dtvgmgraph.txt";
  if (FileExists(s_graphfile))
        {
        if((fpgraph=fopen(s_graphfile,"r"))==NULL)
        {
        fprintf(stderr, "Cannot open input file.\n");
        return ;
        }
        }

  else
        {
        ShowMessage(AnsiString("Couldn't find the file: ")+ s_graphfile + "." );
        return;
        }

   Notebook1->PageIndex = 0;
   Series_qobs->Clear();
   Series_qcal->Clear();
   Series_P->Clear();
   Series_sm->Clear();

  for(;!feof(fpgraph);)
  {

   fscanf(fpgraph,"%s%s%f%f%f%f%f%f%f%f%f%f%f%f%f%f" ,&sgauge,&sdate,&qobs,&qcal,&pcp,&sm,&ep,&eta,&tavg,&tmax,&tmin,&etau,&etad,&awd,&rud,&rgg);

   Series_P->AddXY(StrToDate(sdate),pcp,"",clTeeColor);
   Series_qobs->AddXY(StrToDate(sdate),qobs,"",clTeeColor);
   Series_qcal->AddXY(StrToDate(sdate),qcal,"",clTeeColor);
   Series_sm->AddXY(StrToDate(sdate),sm,"",clTeeColor);
  }
  fclose(fpgraph);


  //Chart1->RightAxis->Maximum = int(Series4->MaxYValue()*3.5);
   Chart1->LeftAxis->Maximum = int(max(Series_qobs->MaxYValue(),Series_qcal->MaxYValue())*1.5);
   Chart1->RightAxis->Maximum = int(max(Series_P->MaxYValue(),Series_sm->MaxYValue())*1.5);

}
Beispiel #10
0
//---------------------------------------------------------------------
void __fastcall TTelnetCfgDlg::FormShow(TObject *Sender)
{
    char str[128];

    if(MainForm->bbs_startup.telnet_interface==0)
        TelnetInterfaceEdit->Text="<ANY>";
    else {
        sprintf(str,"%d.%d.%d.%d"
            ,(MainForm->bbs_startup.telnet_interface>>24)&0xff
            ,(MainForm->bbs_startup.telnet_interface>>16)&0xff
            ,(MainForm->bbs_startup.telnet_interface>>8)&0xff
            ,MainForm->bbs_startup.telnet_interface&0xff
        );
        TelnetInterfaceEdit->Text=AnsiString(str);
    }
    if(MainForm->bbs_startup.rlogin_interface==0)
        RLoginInterfaceEdit->Text="<ANY>";
    else {
        sprintf(str,"%d.%d.%d.%d"
            ,(MainForm->bbs_startup.rlogin_interface>>24)&0xff
            ,(MainForm->bbs_startup.rlogin_interface>>16)&0xff
            ,(MainForm->bbs_startup.rlogin_interface>>8)&0xff
            ,MainForm->bbs_startup.rlogin_interface&0xff
        );
        RLoginInterfaceEdit->Text=AnsiString(str);
    }

    if(MainForm->bbs_startup.ssh_interface==0)
        SshInterfaceEdit->Text="<ANY>";
    else {
        sprintf(str,"%d.%d.%d.%d"
            ,(MainForm->bbs_startup.ssh_interface>>24)&0xff
            ,(MainForm->bbs_startup.ssh_interface>>16)&0xff
            ,(MainForm->bbs_startup.ssh_interface>>8)&0xff
            ,MainForm->bbs_startup.ssh_interface&0xff
        );
        SshInterfaceEdit->Text=AnsiString(str);
    }

	TelnetPortEdit->Text=AnsiString((int)MainForm->bbs_startup.telnet_port);
	RLoginPortEdit->Text=AnsiString((int)MainForm->bbs_startup.rlogin_port);
	SshPortEdit->Text=AnsiString((int)MainForm->bbs_startup.ssh_port);

	FirstNodeEdit->Text=AnsiString((int)MainForm->bbs_startup.first_node);
	LastNodeEdit->Text=AnsiString((int)MainForm->bbs_startup.last_node);
    AutoStartCheckBox->Checked=MainForm->SysAutoStart;
    AnswerSoundEdit->Text=AnsiString(MainForm->bbs_startup.answer_sound);
    HangupSoundEdit->Text=AnsiString(MainForm->bbs_startup.hangup_sound);
    CmdLogCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_DEBUG_TELNET;
    TelnetGaCheckBox->Checked
    	=!(MainForm->bbs_startup.options&BBS_OPT_NO_TELNET_GA);
	XtrnMinCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_XTRN_MINIMIZED;
    AutoLogonCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_AUTO_LOGON;
    HostnameCheckBox->Checked
        =!(MainForm->bbs_startup.options&BBS_OPT_NO_HOST_LOOKUP);
    IdentityCheckBox->Checked
        =MainForm->bbs_startup.options&BBS_OPT_GET_IDENT;

    RLoginEnabledCheckBox->Checked
        =MainForm->bbs_startup.options&BBS_OPT_ALLOW_RLOGIN;
    RLogin2ndNameCheckBox->Checked
        =MainForm->bbs_startup.options&BBS_OPT_USE_2ND_RLOGIN;
    SshEnabledCheckBox->Checked
        =MainForm->bbs_startup.options&BBS_OPT_ALLOW_SSH;

    QWKEventsCheckBox->Checked
        =!(MainForm->bbs_startup.options&BBS_OPT_NO_QWK_EVENTS);
    EventsCheckBox->Checked
        =!(MainForm->bbs_startup.options&BBS_OPT_NO_EVENTS);
    JavaScriptCheckBox->Checked
        =!(MainForm->bbs_startup.options&BBS_OPT_NO_JAVASCRIPT);

    RLoginEnabledCheckBoxClick(Sender);
    SshEnabledCheckBoxClick(Sender);
    PageControl->ActivePage=GeneralTabSheet;
}
Beispiel #11
0
void TMDIhtml::CreateTEMP(void)
{
    FileTemp=GetCurrentDir()+"\\kans"+AnsiString(NumberClass)+".tmp";
    FileClose(FileCreate(FileTemp));
    FileName="";
}
Beispiel #12
0
void CLight::Render(int priority, bool strictB2F)
{
    inherited::Render(priority,strictB2F);
    if ((1==priority)&&(false==strictB2F)) {
        Device.SetShader		(Device.m_WireShader);
        RCache.set_xform_world	(Fidentity);
        u32 clr = Locked()?LOCK_COLOR:(Selected()?SEL_COLOR:(m_Flags.is(ELight::flAffectDynamic)?NORM_DYN_COLOR:NORM_COLOR));
        switch (m_Type) {
        case ELight::ltPoint:
            if (Selected()) 	DU.DrawLineSphere( PPosition, m_Range, clr, true );
            DU.DrawPointLight(PPosition,VIS_RADIUS, clr);
            if (m_Flags.is(ELight::flPointFuzzy)) {
                VERIFY(m_FuzzyData);
                for (FvectorIt it=m_FuzzyData->m_Positions.begin(); it!=m_FuzzyData->m_Positions.end(); it++) {
                    Fvector tmp;
                    _Transform().transform_tiny(tmp,*it);
                    DU.DrawPointLight(tmp,VIS_RADIUS/6, clr);
                }
            }
            break;
        case ELight::ltSpot: {
//			Fvector dir;
//			dir.setHP		(PRotation.y,PRotation.x);
//			DU.DrawCone		(Fidentity, PPosition, dir, Selected()?m_Range:VIS_RADIUS, radius2, clr, true, false);
            if (Selected())	DU.DrawSpotLight( PPosition, FTransformR.k, m_Range, m_Cone, clr );
            else			DU.DrawSpotLight( PPosition, FTransformR.k, VIS_RADIUS, m_Cone, clr );
        }
        break;
        default:
            THROW;
        }
        ESceneLightTools* lt = dynamic_cast<ESceneLightTools*>(ParentTools);
        VERIFY(lt);
        if (lt->m_Flags.is(ESceneLightTools::flShowControlName)) {
            Fvector D;
            D.sub(Device.vCameraPosition,PPosition);
            float dist 	= D.normalize_magn();
            if (!Scene->RayPickObject(dist,PPosition,D,OBJCLASS_SCENEOBJECT,0,0))
                DU.OutText (PPosition,AnsiString().sprintf(" %s",GetLControlName()).c_str(),0xffffffff,0xff000000);
        }
    } else if ((1==priority)&&(true==strictB2F)) {
        Device.SetShader		(Device.m_SelectionShader);
        RCache.set_xform_world	(Fidentity);
        switch (m_Type) {
        case ELight::ltPoint:
            if (m_Flags.is(ELight::flPointFuzzy)) {
                u32 clr = Locked()?LOCK_COLOR:(Selected()?SEL_COLOR:(m_Flags.is(ELight::flAffectDynamic)?NORM_DYN_COLOR:NORM_COLOR));
                clr 	= subst_alpha(clr,0x40);
                const Fvector zero= {0.f,0.f,0.f};
                VERIFY(m_FuzzyData);
                switch (m_FuzzyData->m_ShapeType) {
                case CLight::SFuzzyData::fstSphere:
                    DU.DrawSphere	(_Transform(),zero,m_FuzzyData->m_SphereRadius,clr,clr,true,true);
                    break;
                case CLight::SFuzzyData::fstBox:
                    DU.DrawAABB		(_Transform(),zero,m_FuzzyData->m_BoxDimension,clr,clr,true,true);
                    break;
                }
            }
            break;
        case ELight::ltSpot:
            break;
        default:
            THROW;
        }
    }
}
Beispiel #13
0
void CSceneObject::OnShowHint(AStringVec& dest)
{
	inherited::OnShowHint(dest);
    dest.push_back(AnsiString("Reference: ")+*m_ReferenceName);
    dest.push_back(AnsiString("-------"));
    float dist			= UI->ZFar();
    SRayPickInfo pinf;
    if (m_pReference->RayPick(dist,UI->m_CurrentRStart,UI->m_CurrentRNorm,_ITransform(),&pinf)){
	    dest.push_back(AnsiString("Object Type: ")+get_token_name(eo_type_token,pinf.e_obj->m_Flags.flags));
        R_ASSERT(pinf.e_mesh);
        CSurface* surf=pinf.e_mesh->GetSurfaceByFaceID(pinf.inf.id);
        dest.push_back(AnsiString("Surface: ")+AnsiString(surf->_Name()));
        dest.push_back(AnsiString("2 Sided: ")+AnsiString(surf->m_Flags.is(CSurface::sf2Sided)?"on":"off"));
        if (pinf.e_obj->m_Flags.is(CEditableObject::eoSoundOccluder)){
	        dest.push_back(AnsiString("Game Mtl: ")+AnsiString(surf->_GameMtlName()));
            int gm_id			= surf->_GameMtl(); 
            if (gm_id!=GAMEMTL_NONE_ID){ 
                SGameMtl* mtl 	= GMLib.GetMaterialByID(gm_id);
                if (mtl)		dest.push_back(AnsiString().sprintf("Occlusion Factor: %3.2f",mtl->fSndOcclusionFactor));
            }
        }else if (pinf.e_obj->m_Flags.is(CEditableObject::eoHOM)){
        }else{
	        dest.push_back(AnsiString("Texture: ")+AnsiString(surf->_Texture()));
    	    dest.push_back(AnsiString("Shader: ")+AnsiString(surf->_ShaderName()));
        	dest.push_back(AnsiString("LC Shader: ")+AnsiString(surf->_ShaderXRLCName()));
	        dest.push_back(AnsiString("Game Mtl: ")+AnsiString(surf->_GameMtlName()));
        }
    }
}
Beispiel #14
0
//---------------------------------------------------------------------------
void __fastcall TForm4::cmdOKClick(TObject *Sender)
{

String InsFormatText = "";
String MsgErrorString;

//-----------------------------------
//記憶パスワードの入力タブシート
//-----------------------------------
if ( PageControl1->ActivePageIndex == 0 ) {

	if ( AnsiString(txtInputMemConfirmPassword->Text).Length() > 56 ){
		//'パスワードに使用できる文字数は半角56文字(全角28文字)以内です。'
		MsgErrorString = LoadResourceString(&Msgunit4::_MSG_ERROR_PASSWORD_MAX_NUM);
		MessageDlg(MsgErrorString, mtError, TMsgDlgButtons() << mbOK, 0);
		txtInputMemConfirmPassword->SetFocus();
		txtInputMemConfirmPassword->SelectAll();
		return;
	}

	if ( (AnsiString)txtInputMemPassword->Text != (AnsiString)txtInputMemConfirmPassword->Text ){
		//'入力されたパスワードとちがいます。'+#13+
		//'再度パスワードを入力してください。'
		MsgErrorString = LoadResourceString(&Msgunit4::_MSG_ERROR_INPUT_PASSWORD_MISMATCH);
		MessageDlg(MsgErrorString, mtError, TMsgDlgButtons() << mbOK, 0);

		txtInputMemConfirmPassword->SetFocus();
		txtInputMemConfirmPassword->SelectAll();
		return;
	}

	if ( InputType == 0 ){         //暗号化パスワードの記録

		//OKボタンが押されるまではまだ仮
		Form3->TempMyEncodePassword = (AnsiString)txtInputMemConfirmPassword->Text;
		//文字数分だけ"*"を表示
		Form3->btneditMyEncPassword->Text =
			String::StringOfChar('*', Form3->TempMyEncodePassword.Length());
		Form3->chkMyEncPasswordKeep->Checked = true;

	}
	else if ( InputType == 1 ){    //復号パスワードの記録

		//OKボタンが押されるまではまだ仮
		Form3->TempMyDecodePassword = (AnsiString)txtInputMemConfirmPassword->Text;
		//文字数分だけ"*"を表示
		Form3->btneditMyDecPassword->Text =
			String::StringOfChar('*', Form3->TempMyDecodePassword.Length());
		Form3->chkMyDecPasswordKeep->Checked = true;

	}//end if;

	Close();

}
//-----------------------------------
// 書式入力タブシート
//-----------------------------------
else {

	switch(InputType){

	case 2:	//日付書式の挿入
		InsFormatText = "<date:"+ComboDateTime->Items->Strings[ComboDateTime->ItemIndex]+">";
		break;

	case 3:	//連番書式の挿入
		InsFormatText = "<number:" + IntToStr(UpDown1->Position) + ">";
		break;

	case 4:	//ランダム文字列数の挿入
		InsFormatText = "<fend:" + IntToStr(UpDown1->Position) + ">";
		break;

	case 5:	//ファイル名の先頭文字数の挿入
		InsFormatText = "<fhead:" + IntToStr(UpDown1->Position) + ">";
		break;

	case 6:	//ファイル名の末尾文字数の挿入
		InsFormatText = "<fend:" + IntToStr(UpDown1->Position) + ">";
		break;

	default:
		break;
	}

	Form3->btneditAutoNameFormatText->SelText = InsFormatText;
	Close();

}

}
AnsiString AnsiString::operator +(const char * rhs) const
{
  AnsiString Result = AnsiString(Data.c_str(), Data.size());
  Result += rhs;
  return Result;
}
Beispiel #16
0
int BaseFontBitmap::textHeightDraw(const byte *text, int x, int y, int width, TTextAlign align, bool draw, int maxHeight, int maxLength) {
	if (maxLength == 0) {
		return 0;
	}

	if (text == nullptr || text[0] == '\0') {
		return _tileHeight;
	}

	AnsiString str;

	if (_gameRef->_textEncoding == TEXT_UTF8) {
		WideString wstr = StringUtil::utf8ToWide(Utf8String((const char *)text));
		str = StringUtil::wideToAnsi(wstr);
	} else {
		str = AnsiString((const char *)text);
	}
	if (str.empty()) {
		return 0;
	}

	int lineLength = 0;
	int realLength = 0;
	int numLines = 0;

	int i;

	int index = -1;
	int start = 0;
	int end = 0;
	int last_end = 0;

	bool done = false;
	bool newLine = false;
	bool longLine = false;

	if (draw) {
		_gameRef->_renderer->startSpriteBatch();
	}

	while (!done) {
		if (maxHeight > 0 && (numLines + 1)*_tileHeight > maxHeight) {
			if (draw) {
				_gameRef->_renderer->endSpriteBatch();
			}
			return numLines * _tileHeight;
		}

		index++;

		if (str[index] == ' ' && (maxHeight < 0 || maxHeight / _tileHeight > 1)) {
			end = index - 1;
			realLength = lineLength;
		}

		if (str[index] == '\n') {
			end = index - 1;
			realLength = lineLength;
			newLine = true;
		}

		if (lineLength + getCharWidth(str[index]) > width && last_end == end) {
			end = index - 1;
			realLength = lineLength;
			newLine = true;
			longLine = true;
		}

		if ((int)str.size() == (index + 1) || (maxLength >= 0 && index == maxLength - 1)) {
			done = true;
			if (!newLine) {
				end = index;
				lineLength += getCharWidth(str[index]);
				realLength = lineLength;
			}
		} else {
			lineLength += getCharWidth(str[index]);
		}

		if ((lineLength > width) || done || newLine) {
			if (end < 0) {
				done = true;
			}
			int startX;
			switch (align) {
			case TAL_CENTER:
				startX = x + (width - realLength) / 2;
				break;
			case TAL_RIGHT:
				startX = x + width - realLength;
				break;
			case TAL_LEFT:
				startX = x;
				break;
			default:
				error("BaseFontBitmap::TextHeightDraw - Unhandled enum");
				break;
			}
			for (i = start; i < end + 1; i++) {
				if (draw) {
					drawChar(str[i], startX, y);
				}
				startX += getCharWidth(str[i]);
			}
			y += _tileHeight;
			last_end = end;
			if (longLine) {
				end--;
			}
			start = end + 2;
			index = end + 1;
			lineLength = 0;
			newLine = false;
			longLine = false;
			numLines++;
		}
	}

	if (draw) {
		_gameRef->_renderer->endSpriteBatch();
	}

	return numLines * _tileHeight;
}
Beispiel #17
0
void __fastcall TMDIChild::actWriteExecute(TObject *Sender)
{
    if(tvParseTree->Selected == NULL)
        return;

    ParseTreeNode	*	curParseTree = (ParseTreeNode	*)tvParseTree->Selected->Data;

    if(curParseTree == NULL)
    {
        return;
    }

    ClassData	*	curClass = GetCurParseClass();
    if(curClass == NULL)
        return;

    tagSelRect	selRect;
    if(GetTreeSelRect(selRect) == false)
        return;

    String  type = curParseTree->GetClassMember()->GetType();
    if(IsNormalType(type) == false)
    {
        ShowMessage("只能改变普通变量的值");
        return;
    }

    String  value = curParseTree->GetParseResult();
    if(InputQuery("输入值", "输入值", value) == false)
        return;

//    m_HexEditor->BeginUpdate();
    char	*pointer = m_HexEditor->GetFastPointer(0, m_HexEditor->DataSize);
    int dataSize = m_HexEditor->DataSize;
    int pos = selRect.SelStart;
    int nodeSize = m_ParseEngine->GetSize(type, pointer, dataSize, pos);
    int childCount = curParseTree->GetClassMember()->GetArrayVar().ToIntDef(0);

    int curSize = 0;
    for(int i=0; i<m_ParseTree->GetParseTreeNodeCount(); i++)
    {
        ParseTreeNode	* curTreeNode = m_ParseTree->GetParseTreeNode(i);
        if(curTreeNode == curParseTree)
            break;

        int curChildCount = curTreeNode->GetClassMember()->GetArrayVar().ToIntDef(0);
        if(curChildCount == 0)
            curChildCount = 1;
        curSize += curChildCount * m_ParseEngine->GetSize(
                       curTreeNode->GetClassMember()->GetType(), pointer, dataSize, pos);
    }

    pos = m_LastPos + curSize;
    if(childCount == 0)
        childCount = 1;
    nodeSize *= childCount;


    //插入数据
    if(pos + nodeSize > dataSize)
    {
        String  buffer;
        buffer.SetLength(pos + nodeSize - dataSize);
        memset(buffer.c_str(), '\0', buffer.Length());
        m_HexEditor->InsertBuffer(AnsiString(buffer).c_str(), buffer.Length(), selRect.SelStart, "insert", false);
    }


    pointer = m_HexEditor->GetFastPointer(0, m_HexEditor->DataSize);
//	String  setEmpty;
//	setEmpty.SetLength(nodeSize);
//    int oldPos = pos;
//	WriteBuf(pointer, oldPos, setEmpty.c_str(), setEmpty.Length());

    if(type == "char")
    {
        WriteBuf(pointer, pos, value.c_str(), value.Length());
    }
    else
    {
        int iResult = value.ToIntDef(0);
        WriteBuf(pointer, pos, &iResult, sizeof(iResult));
    }
    m_HexEditor->SelStart = m_LastPos;
    ParseData(false);
//    m_HexEditor->EndUpdate();
}
Beispiel #18
0
AnsiString InitUDP2(CConceptClient *owner, char *host) {
    AnsiString result;

    if (owner->RTSOCKET) {
        closesocket(owner->RTSOCKET);
        owner->RTSOCKET = INVALID_SOCKET;
    }
    int s_len = strlen(host);
    if ((!owner) || (!host) || (!s_len))
        return result;

    char *stun_server = host;
    char *p_str       = strchr(host, ',');
    if ((!p_str) || (p_str[1] == '-'))
        return result;
    p_str[0] = 0;
    p_str++;

    char *local_host = strchr(p_str, ',');
    if ((!local_host) || (local_host[1] == '-'))
        return result;
    local_host[0] = 0;
    local_host++;

    char *local_port = strchr(local_host, ',');
    if ((!local_port) || (local_port[1] == '-'))
        return result;
    local_port[0] = 0;
    local_port++;
    AnsiString lport(local_port);

    struct addrinfo hints;
    struct addrinfo *a_res = 0;
    memset(&serveraddr, 0, sizeof(serveraddr));
    memset(&hints, 0, sizeof hints);
    hints.ai_family   = AF_UNSPEC;
    hints.ai_socktype = SOCK_DGRAM;
    hints.ai_protocol = IPPROTO_UDP;

    int gerr = getaddrinfo(local_host, local_port, &hints, &a_res);
    if ((gerr != 0) || (!a_res)) {
        AnsiString err((char *)"Error in getaddrinfo(): ");
        err += host;
        err += (char *)":";
        err += p_str;
        err += (char *)" ";
        err += (char *)gai_strerror(gerr);
        fprintf(stderr, "Dropping RT socket: %s\n", err.c_str());
        result = "";
        return result;
    }
    if ((a_res->ai_family != AF_INET) && (a_res->ai_family != AF_INET6)) {
        freeaddrinfo(a_res);
        fprintf(stderr, "Invalid socket family\n");
        return result;
    }

    memcpy(&serveraddr, a_res->ai_addr, a_res->ai_addrlen);
    server_len = a_res->ai_addrlen;

    unsigned short connect_port = 0;
    int            socket       = CreateUDPSocket(lport.ToInt(), a_res->ai_family == AF_INET6, connect_port);
    freeaddrinfo(a_res);

    if (socket < 0)
        return result;

    char connect_ip[0xFF];
    connect_ip[0] = 0;
    if (stun_server[0] == '*') {
        strcpy(connect_ip, "self");
    } else {
        int res = STUN(socket, stun_server, p_str, connect_ip, &connect_port);
        if (!res) {
            closesocket(socket);
            return result;
        }
    }
    owner->RTSOCKET = socket;
    result          = connect_ip;
    result         += (char *)",";
    result         += AnsiString((long)connect_port);
    return result;
}
Beispiel #19
0
//---------------------------------------------------------------------------
void __fastcall TFormDLLProgr::ComboBoxDiscipChange(TObject *Sender)
{
  indexDiscipForEditOneGroup=ComboBoxDiscip->ItemIndex;

  ListBoxOcenk->Clear();
  listIDsOfOcenk->Clear();

  ListBoxOcenk->Items->Add("Сем. по плану          Сем. по графику                 Оценка                      Балл");
  listIDsOfOcenk->Add("");
  ListBoxOcenk->Items->Add("");
  listIDsOfOcenk->Add("");

  if (ComboBoxDiscip->Items->Count==0)
  {
      BtnCheckOcenk->Enabled=false;
      return;
  }
  else BtnCheckOcenk->Enabled=true;
  int indexsel=ComboBoxDiscip->ItemIndex;
  if (indexsel < 0 || indexsel >= listIDsOfDiscip->Count) return;

  AnsiString idselDiscip=listIDsOfDiscip->Strings[indexsel];
  int classDiscip=listClassOfDiscip->Strings[indexsel].ToInt();

  MYSQL_RES *result;
  MYSQL_ROW row;

  AnsiString numplansem,numgraphsem,est,ball;
  int estindex;

  AnsiString SpaceStr;
  AnsiString Str;
  AnsiString myquery;
  myquery="SELECT id,numplansemestr,numgraphsemestr,estimation,ball FROM "+opts.DBProgress+" WHERE idstud="+ToStr(AnsiString(idstud))+" AND iddiscip="+ToStr(idselDiscip)+" AND deleted=0 ORDER BY numplansemestr";
  mysql_query(mysql,myquery.c_str());
  if (mysql_field_count(mysql))
  {
    result=mysql_store_result(mysql);
    if (result && mysql_num_rows(result))
    {
      while (row = mysql_fetch_row(result))
      {
        listIDsOfOcenk->Add(AnsiString(row[0]));
        numplansem=AnsiString(row[1]);
        numgraphsem=AnsiString(row[2]);
        estindex=AnsiString(row[3]).ToInt();
        est=arrOcenk[estindex];
        ball=GetStrWithReplacedPoints(AnsiString(row[4]),",");

        SpaceStr="      ";
        if (numplansem.Length()==1) SpaceStr+=" ";
        Str=SpaceStr+numplansem;
        SpaceStr="                                 ";
        if (numgraphsem.Length()==1) SpaceStr+=" ";
        Str+=SpaceStr+numgraphsem;
        SpaceStr="                       ";
        switch(estindex)
        {
         case 0: SpaceStr+="           ";break;
         case 1: SpaceStr+="           ";break;
         case 2: SpaceStr+="  ";break;
         case 4: SpaceStr+="           ";break;
         case 5: SpaceStr+="          ";break;
        }
        Str+=SpaceStr+est;
        switch(estindex)
        {
         case 0: SpaceStr="              ";break;
         case 1: SpaceStr="               ";break;
         case 2: SpaceStr="   ";break;
         case 3: SpaceStr=" ";break;
         case 4: SpaceStr="              ";break;
         case 5: SpaceStr="           ";break;
        }
        SpaceStr+="        ";
        Str+=SpaceStr+ball;
        SpaceStr="                 ";
        if (IS_PERIOD(classDiscip))
          Str+=SpaceStr;
        ListBoxOcenk->Items->Add(Str);
      }
    }
    mysql_free_result(result);
  }

  ListBoxOcenkClick(ListBoxOcenk);
}
Beispiel #20
0
AnsiString SwitchP2P(CConceptClient *owner, char *host) {
    AnsiString result;

    is_p2p = 0;
    memset(&p2paddr, 0, sizeof(p2paddr));
    p2paddr_len = 0;
    if (owner->RTSOCKET <= 0)
        return result;

    int s_len = strlen(host);
    if ((!owner) || (!host) || (!s_len))
        return result;

    char *stun_server = host;
    char *p_str       = strchr(host, ',');
    if ((!p_str) || (p_str[1] == '-'))
        return result;
    p_str[0] = 0;
    p_str++;

    char *local_host = strchr(p_str, ',');
    if ((!local_host) || (local_host[1] == '-'))
        return result;
    local_host[0] = 0;
    local_host++;

    char *local_port = strchr(local_host, ',');
    if ((!local_port) || (local_port[1] == '-'))
        return result;
    local_port[0] = 0;
    local_port++;
    AnsiString lport(local_port);

    struct addrinfo hints;
    struct addrinfo *a_res = 0;

    memset(&hints, 0, sizeof hints);
    hints.ai_family   = AF_UNSPEC;
    hints.ai_socktype = SOCK_DGRAM;
    hints.ai_protocol = IPPROTO_UDP;

    int gerr = getaddrinfo(local_host, local_port, &hints, &a_res);
    if ((gerr != 0) || (!a_res)) {
        AnsiString err((char *)"Error in getaddrinfo(): ");
        err += host;
        err += (char *)":";
        err += p_str;
        err += (char *)" ";
        err += (char *)gai_strerror(gerr);
        fprintf(stderr, "Dropping RT socket\n");
        result = "";
        return result;
    }
    if ((a_res->ai_family != AF_INET) && (a_res->ai_family != AF_INET6)) {
        freeaddrinfo(a_res);
        fprintf(stderr, "Invalid socket family\n");
        return result;
    }

    memcpy(&p2paddr, a_res->ai_addr, a_res->ai_addrlen);
    p2paddr_len = a_res->ai_addrlen;

    unsigned short connect_port = 0;

    char connect_ip[0xFF];
    connect_ip[0] = 0;
    if (stun_server[0] == '*') {
        if (a_res->ai_family == AF_INET) {
            inet_ntop(a_res->ai_family, &((struct sockaddr_in *)&p2paddr)->sin_addr, connect_ip, INET6_ADDRSTRLEN + 1);
            connect_port = ntohs(((struct sockaddr_in *)&p2paddr)->sin_port);
        } else {
            inet_ntop(a_res->ai_family, &((struct sockaddr_in6 *)&p2paddr)->sin6_addr, connect_ip, INET6_ADDRSTRLEN + 1);
            connect_port = ntohs(((struct sockaddr_in6 *)&p2paddr)->sin6_port);
        }
        freeaddrinfo(a_res);
    } else {
        freeaddrinfo(a_res);
        int res = STUN(owner->RTSOCKET, stun_server, p_str, connect_ip, &connect_port);
        if (!res)
            return result;
    }
    result  = connect_ip;
    result += (char *)",";
    result += AnsiString((long)connect_port);
    is_p2p  = 1;
    if (lastaddr_len) {
        // already received hello package
        memcpy(&p2paddr, &lastaddr, lastaddr_len);
        p2paddr_len = lastaddr_len;
        memset(&lastaddr, 0, sizeof(lastaddr));
        lastaddr_len = 0;
        is_p2p       = 2;
    }
    sendto(owner->RTSOCKET, "hi", 2, 0, (struct sockaddr *)&p2paddr, p2paddr_len);
    sendto(owner->RTSOCKET, "hi", 2, 0, (struct sockaddr *)&p2paddr, p2paddr_len);
    sendto(owner->RTSOCKET, "hi", 2, 0, (struct sockaddr *)&p2paddr, p2paddr_len);
    return result;
}
void __fastcall TFormSimulacion::TrackBarMezcladoraChange(TObject *Sender)
{
	mezcladora.Cantidad(TrackBarMezcladora->Position);
	LabelMez->Caption=AnsiString(mezcladora.Cantidad()/100) + " %";
}
/*
	gather data from UI to internal representation
*/
bool TframTag::ValidateView()
{
	PTAG_NAME name;
	PRTK_TAG tag;	
	name = &m_TagName;
	tag = &m_Tag;
	
	try{
	#undef cc

	#define cc(name) tag->s.Flags |= (chk##name->Checked ? TF_##name : 0);

		if( edtTagName->Text.Length() >sizeof(TAG_KEY) ||
			!edtTagName->Text.Length()
		){
			m_Hint = "变量名不正确";
			throw(-1);
		}
		if( !is_valid_name(edtTagName->Text.c_str()) ){
			m_Hint = "变量名只能包含字母、数字和下划线";
			throw(-3);
		}
		if(edtTagName->Text.Length() > sizeof(TAG_KEY)){		
			m_Hint = AnsiString("错误: 标签名不能超过 ") + IntToStr(sizeof(TAG_KEY)) + " 个字节";		 
			throw(-3);
		}
		name->sname.tag = CTagName(edtTagName->Text.c_str());
		tag->s.Device = CDeviceName(cmbDevice->Text.c_str());
		tag->key = name->sname.tag;
		if(edtCName->Text.Length() > sizeof(tag->s.Description)){
			m_Hint = "中文名太长(最长 " + AnsiString(sizeof(tag->s.Description)/2) + " 字)";
			throw(-4);
		}
		strncpy(tag->s.Description, edtCName->Text.c_str(), sizeof(tag->s.Description));
		tag->s.Description[sizeof(tag->s.Description) - 1] = 0;
		if(edtAddr->Text.Length() > sizeof(tag->s.Address)){
			m_Hint = "地址太长(最长 " + AnsiString(sizeof(tag->s.Address)/2) + " 字)";
			throw(-5);
		}
		strncpy(tag->s.Address, edtAddr->Text.c_str(), sizeof(tag->s.Address));
		tag->s.Address[sizeof(tag->s.Address) - 1] = 0;

        tag->s.Flags = 0;
        
		switch(cmbType->ItemIndex){
		case 0:
			set_value_type(tag->s.Flags, dt_bool);
			break;
		case 1:
			set_value_type(tag->s.Flags, dt_real4);
			break;
		case 2:
			set_value_type(tag->s.Flags, dt_real8);
			break;

		case 3:
			set_value_type(tag->s.Flags, dt_int8);
			break;
		case 4:
			set_value_type(tag->s.Flags, dt_int16);
			break;
		case 5:
			set_value_type(tag->s.Flags, dt_int32);
			break;
		case 6:
			set_value_type(tag->s.Flags, dt_int64);
			break;

		case 7:
			set_value_type(tag->s.Flags, dt_uint8);
			break;
		case 8:
			set_value_type(tag->s.Flags, dt_uint16);
			break;
		case 9:
			set_value_type(tag->s.Flags, dt_uint32);
			break;
		case 10:
			set_value_type(tag->s.Flags, dt_uint64);
			break;

        case 11:
            set_value_type(tag->s.Flags, dt_date);
            break;

        case 12:
            m_Hint = "不支持这个数据类型.";
            throw(-41);
            break;
		}

		cc(SaveToHistory);
        cc(Step);

		// collecting common analog attributes
		switch(get_value_type(tag->s.Flags)){
        case dt_int8:
		case dt_int16:
		case dt_int32:
        case dt_int64:
        case dt_uint8:
		case dt_uint16:
		case dt_uint32:
        case dt_uint64:
        case dt_real4:
		case dt_real8:
        case dt_date:
			cc(HiHi);
			cc(Lo);
			cc(Hi);
			cc(LoLo);
			cc(Rate);
			strncpy(
				tag->s.AnalogMsg.EU,
				edtEU->Text.c_str(),
				sizeof(tag->s.AnalogMsg.EU)
				);
			tag->s.AnalogMsg.EU[sizeof(tag->s.AnalogMsg.EU) - 1] = 0;
			break;
		case dt_bool:
			cc(On2Off);
			cc(Off2On);
			
			strncpy(
				tag->s.SwitchMsg.OnMsg,
				edtOnMessage->Text.c_str(),
				sizeof(tag->s.SwitchMsg.OnMsg)
				);
			tag->s.SwitchMsg.OnMsg[sizeof(tag->s.SwitchMsg.OnMsg) - 1] = 0;
			strncpy(
				tag->s.SwitchMsg.OffMsg,
				edtOffMessage->Text.c_str(),
				sizeof(tag->s.SwitchMsg.OffMsg)
				);
			tag->s.SwitchMsg.OffMsg[sizeof(tag->s.SwitchMsg.OffMsg) - 1] = 0;
			break;
		}

#define get(msg, name, ignore_on_condition, _default_value)\
	m_Hint = msg;\
	if( !edt##name->Text.Length() ){\
		if(ignore_on_condition){\
			tag->s.flt##name = _default_value;\
		}else{\
			throw(-1);\
		}\
	}else{\
		tag->s.flt##name = edt##name->Text.ToDouble();\
	}
#pragma warn -ccc
#pragma warn -rch
		switch(get_value_type(tag->s.Flags)){
		case dt_real4:
		case dt_real8:
			get("高高值不正确", HiHi, !chkHiHi->Checked, 0);
			get("低低值不正确", LoLo, !chkLoLo->Checked, 0);
			get("低值不正确", Lo, !chkLo->Checked, 0);
			get("高值不正确", Hi, !chkHi->Checked, 0);
			get("报警死区值不正确", AlarmDeadband, !(tag->s.Flags & 0xffffff00), 0);
			get("最大值不正确", MaxValue, false, 0);
			get("最小值不正确", MinValue, false, 0);
			get("速率报警阈值不正确", Rate, !chkRate->Checked, 0.1);
			break;

		case dt_int8:
		case dt_int16:
		case dt_int32:
        case dt_int64:
		case dt_uint8:
		case dt_uint16:
		case dt_uint32:
        case dt_uint64:
			get("速率报警阈值不正确", Rate, !chkRate->Checked, 0.1);
#undef get
#define get(msg, attrName, uiName, ignore_on_condition, _default_value)\
	m_Hint = msg;\
	if( !edt##uiName->Text.Length() ){\
		if(ignore_on_condition){\
			tag->s.##attrName = _default_value;\
		}else{\
			throw(-1);\
		}\
	}else{\
		tag->s.attrName = edt##uiName->Text.ToDouble();\
	}
			get("高高值不正确", u_hihi.i, HiHi, !chkHiHi->Checked, 0);
			get("低低值不正确", u_lolo.i, LoLo, !chkLoLo->Checked, 0);
			get("低值不正确", u_lo.i, Lo, !chkLo->Checked, 0);
			get("高值不正确", u_hi.i, Hi, !chkHi->Checked, 0);
			get("报警死区值不正确", u_deadband.i, AlarmDeadband, !(tag->s.Flags & 0xffffff00), 0);
			get("最大值不正确", u_max.i, MaxValue, false, 0);
			get("最小值不正确", u_min.i, MinValue, false, 0);
			break;
		}

#pragma warn .ccc
#pragma warn .rch

        if(get_value_type(tag->s.Flags) == dt_bool){
            tag->s.AlarmRank = edtAlarmRank2->Text.ToInt();
        }else{
    		tag->s.AlarmRank = edtAlarmRank->Text.ToInt();
        }

		tag->s.Compressing = Compress_Const;
		tag->s.CompDev = StrToFloat(edtCompDev->Text);
		tag->s.CompMax = StrToInt(edtCompMax->Text);
	}catch(...){
		return false;
	}
	m_Hint = "更新成功";
	return true;
}
void __fastcall TFormSimulacion::TrackBarBasculaChange(TObject *Sender)
{
	bascula.Peso(TrackBarBascula->Position);
	LabelBascula->Caption=AnsiString(bascula.Peso()/100) + " %";
}
Beispiel #24
0
void __fastcall TSmallTypeForm::btnokClick(TObject *Sender)
{
   if (!dm1->ConnectDB())
      return;
   switch(btnidx)
   {
      case 0://do add
           if (!CheckEdit())
              break;
           if (!CheckCode())
              break;
           strsql =AnsiString("select st_code from dicsmalltype where st_code='")
                  +edtcode->Text+"'";
           if (DoQuery(dm1->Query1,strsql))
           {
              if (!dm1->Query1->IsEmpty())
              {
                 ErrorDlg("输入了重复的代码!");
                 break;
              }
           }
           else
           {
              SetButton(1,1,1,1,0,0,1,1);
              break;
           }
           strsql =AnsiString("insert into dicsmalltype values('")+edtcode->Text+"','"
                  +edtname->Text+"')";
           if (DoQuery(dm1->Query1,strsql,1))
           {
              btnref->Click();
              ClearEdit();
              edtcode->SetFocus();
           }
           break;
      case 1:
           LocateRow();
           break;
      case 2://do modify
           if (ListView1->SelCount==0)
           {
              InfoDlg("请先在列表中选择要修改的项次!");
              break;
           }
           if (!CheckEdit())
              break;
           if (!CheckCode())
              break;
           strsql =AnsiString("update dicsmalltype set st_name='")
                  +edtname->Text+"' where st_code='"
                  +ListView1->Selected->SubItems->Strings[0]+"'";
           if (DoQuery(dm1->Query1,strsql,1))
           {
              btnref->Click();
              ClearEdit();
              InfoDlg("修改完成!");
           }
           else
              SetButton(1,1,1,1,0,0,1,1);
           break;
      case 3://do delete
           if (ListView1->SelCount==0)
           {
              InfoDlg("请先在列表中选择要删除的项次!");
              break;
           }
           if (AskDlg("确实要删除该项次吗?")==IDNO)
              break;
           strsql =AnsiString("delete dicsmalltype where st_code='")
                  +ListView1->Selected->SubItems->Strings[0]+"'";
           if (DoQuery(dm1->Query1,strsql,1))
           {
              ClearEdit();
              btnref->Click();
              InfoDlg("删除完成!");
           }
           else
              SetButton(1,1,1,1,0,0,1,1);
           break;
   }
   dm1->db1->Connected=false;
}
Beispiel #25
0
TSoundContainer::TSoundContainer(LPDIRECTSOUND pDS, char *Directory, char *strFileName,
                                 int NConcurrent)
{   // wczytanie pliku dŸwiêkowego
    int hr = 111;
    DSBuffer = NULL; // na pocz¹tek, gdyby uruchomiæ dŸwiêków siê nie uda³o

    Concurrent = NConcurrent;

    Oldest = 0;
    //    strcpy(Name, strFileName);

    strcpy(Name, Directory);
    strcat(Name, strFileName);

    CWaveSoundRead *pWaveSoundRead;

    // Create a new wave file class
    pWaveSoundRead = new CWaveSoundRead();

    // Load the wave file
    if (FAILED(pWaveSoundRead->Open(Name)))
        if (FAILED(pWaveSoundRead->Open(strFileName)))
        {
            //        SetFileUI( hDlg, TEXT("Bad wave file.") );
            return;
            ErrorLog("Missed sound: " + AnsiString(strFileName));
        }

    strcpy(Name, AnsiString(strFileName).LowerCase().c_str());

    // Set up the direct sound buffer, and only request the flags needed
    // since each requires some overhead and limits if the buffer can
    // be hardware accelerated
    DSBUFFERDESC dsbd;
    ZeroMemory(&dsbd, sizeof(DSBUFFERDESC));
    dsbd.dwSize = sizeof(DSBUFFERDESC);
    dsbd.dwFlags = DSBCAPS_STATIC | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY;
    if (!Global::bInactivePause) // jeœli prze³¹czony w t³o ma nadal dzia³aæ
        dsbd.dwFlags |= DSBCAPS_GLOBALFOCUS; // to dŸwiêki maj¹ byæ równie¿ s³yszalne
    dsbd.dwBufferBytes = pWaveSoundRead->m_ckIn.cksize;
    dsbd.lpwfxFormat = pWaveSoundRead->m_pwfx;
    fSamplingRate = pWaveSoundRead->m_pwfx->nSamplesPerSec;
    iBitsPerSample = pWaveSoundRead->m_pwfx->wBitsPerSample;

    //    pDSBuffer= (LPDIRECTSOUNDBUFFER*) malloc(Concurrent*sizeof(LPDIRECTSOUNDBUFFER));
    //    for (int i=0; i<Concurrent; i++)
    //      pDSBuffer[i]= NULL;

    // Create the static DirectSound buffer
    if (FAILED(hr = pDS->CreateSoundBuffer(&dsbd, &(DSBuffer), NULL)))
        // if (FAILED(pDS->CreateSoundBuffer(&dsbd,&(DSBuffer),NULL)))
        return;

    // Remember how big the buffer is
    DWORD dwBufferBytes;

    dwBufferBytes = dsbd.dwBufferBytes;

    //----------------------------------------------------------

    BYTE *pbWavData; // Pointer to actual wav data
    UINT cbWavSize; // Size of data
    VOID *pbData = NULL;
    VOID *pbData2 = NULL;
    DWORD dwLength;
    DWORD dwLength2;

    // The size of wave data is in pWaveFileSound->m_ckIn
    INT nWaveFileSize = pWaveSoundRead->m_ckIn.cksize;

    // Allocate that buffer.
    pbWavData = new BYTE[nWaveFileSize];
    if (NULL == pbWavData)
        return; // E_OUTOFMEMORY;

    // if (FAILED(hr=pWaveSoundRead->Read( nWaveFileSize,pbWavData,&cbWavSize)))
    if (FAILED(hr = pWaveSoundRead->Read(nWaveFileSize, pbWavData, &cbWavSize)))
        return;

    // Reset the file to the beginning
    pWaveSoundRead->Reset();

    // Lock the buffer down
    // if (FAILED(hr=DSBuffer->Lock(0,dwBufferBytes,&pbData,&dwLength,&pbData2,&dwLength2,0)))
    if (FAILED(hr = DSBuffer->Lock(0, dwBufferBytes, &pbData, &dwLength, &pbData2, &dwLength2, 0L)))
        return;

    // Copy the memory to it.
    memcpy(pbData, pbWavData, dwBufferBytes);

    // Unlock the buffer, we don't need it anymore.
    DSBuffer->Unlock(pbData, dwBufferBytes, NULL, 0);
    pbData = NULL;

    // We dont need the wav file data buffer anymore, so delete it
    delete[] pbWavData;

    delete pWaveSoundRead;

    DSBuffers.push(DSBuffer);

    /*
        for (int i=1; i<Concurrent; i++)
        {
            if( FAILED( hr= pDS->DuplicateSoundBuffer(pDSBuffer[0],&(pDSBuffer[i]))))
            {
                Concurrent= i;
                break;
            };


        };*/
};
Beispiel #26
0
AnsiString BasePlatform::getPlatformName() {
	// TODO: Should conform to the WME-spec.
	//return AnsiString(SDL_GetPlatform());
	return AnsiString("ScummVM");
}
Beispiel #27
0
void __fastcall TItemList::AssignItems(ListItemsVec& items, bool full_expand, bool full_sort)
{
	// begin fill mode
	LockUpdating			();
    // clear values
//    if (tvItems->Selected) FHelper.MakeFullName(tvItems->Selected,0,last_selected_item);
    if (!m_Items.empty())	ClearParams();
    // fill values
    m_Items					= items;
	for (ListItemsIt it=m_Items.begin(); it!=m_Items.end(); it++){
    	ListItem* prop		= *it;
        if (prop->key.size()&&(prop->key[prop->key.size()-1]=='\\')){
        	prop->item		= FHelper.AppendFolder(tvItems,*prop->key,!m_Flags.is(ilSuppressIcon));
            TElTreeItem* prop_item	= (TElTreeItem*)prop->item;
            prop_item->CheckBoxEnabled 		= false;
            prop_item->UseStyles		   	= true;
            prop_item->MainStyle->TextColor		= (TColor)prop->prop_color;         
            prop_item->MainStyle->OwnerProps 	= true;
            prop_item->MainStyle->Style 		= ElhsOwnerDraw;
        }else{
            prop->item		= FHelper.AppendObject(tvItems,*prop->key,false,!m_Flags.is(ilSuppressIcon));
            if (!prop->item){
				Msg				("#!Duplicate item name found: '%s'",*prop->key);
                break;
            }
            TElTreeItem* prop_item	= (TElTreeItem*)prop->item;
            prop_item->ImageIndex	= prop->icon_index;
            prop_item->Tag	    	= (int)prop;
            prop_item->UseStyles	= true;
            prop_item->CheckBoxEnabled = prop->m_Flags.is(ListItem::flShowCB);
            prop_item->ShowCheckBox 	= prop->m_Flags.is(ListItem::flShowCB);
            prop_item->CheckBoxState 	= (TCheckBoxState)prop->m_Flags.is(ListItem::flCBChecked);

            // set flags                                        
            if (prop->m_Flags.is(ListItem::flDrawThumbnail)){
                prop_item->Height 		= 64;
                prop_item->OwnerHeight = !miDrawThumbnails->Checked;
            }
            // set style
            prop_item->MainStyle->OwnerProps 	= true;
            prop_item->MainStyle->Style 		= ElhsOwnerDraw;
        }
    }

    // end fill mode
	if (full_expand) tvItems->FullExpand();

    // folder restore
    if (m_Flags.is(ilFolderStore)&&!FolderStore.empty()){
        for (TElTreeItem* item=tvItems->Items->GetFirstNode(); item; item=item->GetNext()){
            if (item->ChildrenCount){
                AnsiString nm;
                FHelper.MakeFullName		(item,0,nm);
                FolderStorePairIt it 		= FolderStore.find(nm);
                if (it!=FolderStore.end()){
                    SFolderStore& st_item 	= it->second;
                    if (st_item.expand) 	item->Expand	(false);
                    else					item->Collapse	(false);
                }
            }
        }
    }

    // sorting
    if (full_sort){
        tvItems->ShowColumns	= false;
    	tvItems->Sort			(true);
        tvItems->ShowColumns	= true;
    }else{
        for (ListItemsIt it=m_Items.begin(); it!=m_Items.end(); it++){
            ListItem* prop		= *it;
            if (prop->m_Flags.is(ListItem::flSorted)) ((TElTreeItem*)prop->item)->Sort(true);
        }
    }

    // expand sel items
    for (RStringVecIt s_it=last_selected_items.begin(); s_it!=last_selected_items.end(); s_it++)
    	FHelper.ExpandItem	(tvItems,**s_it);

	UnlockUpdating			();

    // restore selection
    tvItems->DeselectAll	();
    for (s_it=last_selected_items.begin(); s_it!=last_selected_items.end(); s_it++)
	    FHelper.RestoreSelection(tvItems,**s_it,true);

    // check size
	tvItemsResize			(0);

    paStatus->Caption		= AnsiString(" Items count: ")+m_Items.size();
}
AnsiString AnsiString::operator +(const RawByteString & rhs) const
{
  AnsiString Result = AnsiString(Data.c_str(), Data.size());
  Result += rhs.c_str();
  return Result;
}
//int TARGETSEQUENCE::LoadPotentialTargets(const int targetRow, const int targetCol, const int treeRow, const int treeCol)
int TARGETSEQUENCE::LoadPotentialTargets()
{
/*shidong starts */
 int    targetID, parentID, displaypos, ptr, targettype;
 TARGET *cur_target;
 


 // if we already have a list of potential targets, delete this list
 if (targets) delete targets;
 targets=new TARGETLIST();
 if(debug)fprintf(f, "Row # is %d.\n", Parameter("TargetDefinitionMatrix")->NumRows());
 if(debug)fprintf(f, "ID \tType \tDisplay\tFontSizeFactor\tIconFile\n");



/* */


 // parse the target definition matrix
 for (int i = 0; i < Parameter("TargetDefinitionMatrix")->NumRows(); i++)
 {
  targetID =
        AnsiString(Parameter("TargetDefinitionMatrix")(i,0).c_str()).ToInt();
 cur_target = new TARGET(targetID);
 cur_target->targettype = AnsiString(Parameter("TargetDefinitionMatrix")(i,1).c_str()).ToInt();
 cur_target->Caption = AnsiString(Parameter("TargetDefinitionMatrix")(i,2).c_str());
 cur_target->FontSizeFactor = (float)(Parameter("TargetDefinitionMatrix")(i,3));
 cur_target->IconFile = AnsiString(Parameter("TargetDefinitionMatrix")(i,4).c_str());
 cur_target->SoundFile = AnsiString(Parameter("TargetDefinitionMatrix")(i,5).c_str());
 if(debug)fprintf(f, "%d\t", cur_target->targetID);
 if(debug)fprintf(f, "%d\t", cur_target->targettype);
 if(debug)fprintf(f, "%s\t", cur_target->Caption);
 if(debug)fprintf(f, "%f\n", cur_target->FontSizeFactor);
 if(debug)fprintf(f, "%s\n", cur_target->IconFile);
 if(debug)fprintf(f, "%s\n", cur_target->SoundFile);

 // VK adding for playing .wav files
 if ((cur_target->SoundFile != "") && (cur_target->SoundFile != " "))
 {
   // perform parsing to determine sound file or TextToSpeech
   if (cur_target->SoundFile.SubString(0,1) != "'" && (!cur_target->wavplayer) )  // implies .wav file
   {
     cur_target->wavplayer = new WavePlayer;
     cur_target->wavplayer->SetFile(cur_target->SoundFile.c_str());
   }
 }
 targets->Add(cur_target);
 }//for




/*
char    buf[256], line[256];
FILE    *fp;
int     targetID, parentID, displaypos, ptr, targettype;
TARGET  *cur_target;

 // if we already have a list of potential targets, delete this list
 if (targets) delete targets;
 targets=new TARGETLIST();

 // read the target definition file
 fp=fopen(targetdeffilename, "rb");
 if (!fp) return(0);

 while (!feof(fp))
  {
  fgets(line, 255, fp);
  if (strlen(line) > 2)
     {
     ptr=0;
     // first column ... target code
     ptr=get_argument(ptr, buf, line, 255);
     targetID=atoi(buf);
     cur_target=new TARGET(targetID);
     // second column ... caption
     ptr=get_argument(ptr, buf, line, 255);
     cur_target->Caption=AnsiString(buf).Trim();
     // third column ... icon
     ptr=get_argument(ptr, buf, line, 255);
     cur_target->IconFile=AnsiString(buf).Trim();
     targettype=TARGETTYPE_NOTYPE;
     if ((targetID == TARGETID_BLANK) || (targetID == TARGETID_BACKUP) || (targetID == TARGETID_ROOT))
        targettype=TARGETTYPE_CONTROL;
     if ((targetID >= TARGETID_A) && (targetID <= TARGETID__))
        targettype=TARGETTYPE_CHARACTER;
     if ((targetID >= TARGETID_ABCDEFGHI) && (targetID <= TARGETID_YZ_))
        targettype=TARGETTYPE_CHARACTERS;
     cur_target->targettype=targettype;
     targets->Add(cur_target);
     }
  }
 fclose(fp);
 
  */ 
 // load the tree file to go with the list of targets
 //if (tree->LoadTree(treeRow, treeCol) == 0)
 if (tree->LoadTree() == 0)
    return(-1);
                 
 return(1);
 /*shidong ends*/
}
Beispiel #30
0
void __fastcall TFrmDemand::comboboxtypedemChange(TObject *Sender)
{
		 ((Demand*)(TreeView_doc_Struct->Selected->Data))->type_dem = string(AnsiString(this->comboboxtypedem->Text).c_str());
}