Commit 76fb213b authored by dickelbeck's avatar dickelbeck
Browse files

2nd of 3 commits for DrcDialog rework

parent 3465bfeb
Loading
Loading
Loading
Loading
+279 −233
Original line number Diff line number Diff line
@@ -11,21 +11,24 @@
/*********************************************************************/
int ReadDelimitedText( char* dest, char* source, int NbMaxChar )
/*********************************************************************/

/* lit et place dans dest la chaine de caractere trouvee dans source,
	delimitee par " .
	transfere NbMaxChar max
	retourne le nombre de codes lus dans source
	dest est termine par NULL
 *  delimitee par " .
 *  transfere NbMaxChar max
 *  retourne le nombre de codes lus dans source
 *  dest est termine par NULL
 */
{
    int ii, jj, flag = 0;

    for( ii = 0, jj = 0; ii < NbMaxChar - 1; jj++, source++ )
    {
		if ( * source == 0 ) break; /* fin de ligne */
        if( *source == 0 )
            break;                      /* fin de ligne */
        if( *source == '"' )            /* delimiteur trouve */
        {
			if ( flag ) break;			/* Fin de texte delimite */
            if( flag )
                break;                  /* Fin de texte delimite */
            flag = 1;                   /* Marque 1er delimiteur trouve */
        }
        else if( flag )
@@ -33,45 +36,55 @@ int ii, jj, flag = 0;
            *dest = *source; dest++; ii++;
        }
    }

    *dest = 0;  /* Null terminaison */
	return (jj);
    return jj;
}


/********************************/
char* StrPurge( char* text )
/********************************/

/* Supprime les caracteres Space en debut de la ligne text
	retourne un pointeur sur le 1er caractere non Space de text
 *  retourne un pointeur sur le 1er caractere non Space de text
 */
{
    char* ptspace;
	if ( text == NULL ) return NULL;

	while( (*text <= ' ') && *text ) text++;
    if( text == NULL )
        return NULL;

    while( (*text <= ' ') && *text )
        text++;

    ptspace = text + strlen( text ) - 1;
    while( (*ptspace <= ' ') && *ptspace && (ptspace >= text) )
    {
        *ptspace = 0; ptspace--;
    }
	return(text);

    return text;
}


/*****************************************************************/
char* GetLine( FILE* File, char* Line, int* LineNum, int SizeLine )
/*****************************************************************/

/* Routine de lecture de 1 ligne utile
	retourne la 1ere ligne utile lue.
	elimine lignes vides et commentaires
	incremente *LineNum a chaque ligne lue
 *  retourne la 1ere ligne utile lue.
 *  elimine lignes vides et commentaires
 *  incremente *LineNum a chaque ligne lue
 */
{
    do  {
		if (fgets(Line, SizeLine, File) == NULL) return NULL;
		if( LineNum ) *LineNum += 1;
		} while (Line[0] == '#' || Line[0] == '\n' ||  Line[0] == '\r' ||
				 Line[0] == 0);
        if( fgets( Line, SizeLine, File ) == NULL )
            return NULL;
        if( LineNum )
            *LineNum += 1;
    } while( Line[0] == '#' || Line[0] == '\n' ||  Line[0] == '\r'
             || Line[0] == 0 );

    strtok( Line, "\n\r" );
    return Line;
@@ -92,9 +105,10 @@ struct tm * Date;
             Date->tm_mday, Date->tm_mon + 1, Date->tm_year + 1900,
             Date->tm_hour, Date->tm_min, Date->tm_sec );

	return(Line);
    return Line;
}


/*******************************/
wxString DateAndTime()
/*******************************/
@@ -105,28 +119,32 @@ struct tm * Date;
    wxString   Line;

    time( &Time_Buf );
    
    Date = gmtime( &Time_Buf );
    
    Line.Printf( wxT( "%d/%d/%d-%2.2d:%2.2d:%2.2d" ),
                 Date->tm_mday, Date->tm_mon + 1, Date->tm_year + 1900,
                 Date->tm_hour, Date->tm_min, Date->tm_sec );

	return(Line);
    return Line;
}


/************************************************************/
int StrLenNumCmp( const wxChar* str1, const wxChar* str2, int NbMax )
/************************************************************/

/*
routine (compatible qsort() ) de comparaison pour classement alphabtique
Analogue a strncmp() mais les nombres sont compars selon leur valeur numrique
et non pas par leur code ascii
 *  routine (compatible qsort() ) de comparaison pour classement alphabtique
 *  Analogue a strncmp() mais les nombres sont compars selon leur valeur numrique
 *  et non pas par leur code ascii
 */
{
    int i;
    int nb1 = 0, nb2 = 0;

	if( (str1 == NULL) || (str2 == NULL) ) return(0);
    if( (str1 == NULL) || (str2 == NULL) )
        return 0;

    for( i = 0; i < NbMax; i++ )
    {
@@ -137,32 +155,40 @@ int nb1 = 0 , nb2 = 0;
            {
                nb1 = nb1 * 10 + *str1 - '0'; str1++;
            }

            while( isdigit( *str2 ) )
            {
                nb2 = nb2 * 10 + *str2 - '0'; str2++;
            }
			if ( nb1 < nb2 ) return(-1) ;
			if ( nb1 > nb2 ) return(1) ;

            if( nb1 < nb2 )
                return -1;
            if( nb1 > nb2 )
                return 1;
        }

		if( *str1 < *str2 ) return(-1) ;
		if( *str1 > *str2 ) return(1) ;
		if( (*str1 == 0 ) && ( *str2 == 0 ) ) return(0) ;
        if( *str1 < *str2 )
            return -1;
        if( *str1 > *str2 )
            return 1;
        if( (*str1 == 0 ) && ( *str2 == 0 ) )
            return 0;
        str1++; str2++;
    }

	return(0);
    return 0;
}


/***********************************************/
int StrNumICmp( const wxChar* str1, const wxChar* str2 )
/***********************************************/

/*
routine (compatible qsort() ) de comparaison pour classement alphabtique,
avec lower case == upper case.
Analogue a stricmp() mais les nombres sont compars selon leur valeur numrique
et non pas par leur code ascii
 *  routine (compatible qsort() ) de comparaison pour classement alphabtique,
 *  avec lower case == upper case.
 *  Analogue a stricmp() mais les nombres sont compars selon leur valeur numrique
 *  et non pas par leur code ascii
 */
{
    return StrLenNumICmp( str1, str2, 32735 );
@@ -172,17 +198,19 @@ et non pas par leur code ascii
/**************************************************************/
int StrLenNumICmp( const wxChar* str1, const wxChar* str2, int NbMax )
/**************************************************************/

/*
routine (compatible qsort() ) de comparaison pour classement alphabetique,
avec lower case == upper case.
Analogue a stricmp() mais les nombres sont compares selon leur valeur numerique
et non pas par leur code ascii
 *  routine (compatible qsort() ) de comparaison pour classement alphabetique,
 *  avec lower case == upper case.
 *  Analogue a stricmp() mais les nombres sont compares selon leur valeur numerique
 *  et non pas par leur code ascii
 */
{
    int i;
    int nb1 = 0, nb2 = 0;

	if( (str1 == NULL) || (str2 == NULL) ) return(0);
    if( (str1 == NULL) || (str2 == NULL) )
        return 0;

    for( i = 0; i < NbMax; i++ )
    {
@@ -193,21 +221,28 @@ int nb1 = 0 , nb2 = 0;
            {
                nb1 = nb1 * 10 + *str1 - '0'; str1++;
            }

            while( isdigit( *str2 ) )
            {
                nb2 = nb2 * 10 + *str2 - '0'; str2++;
            }
			if ( nb1 < nb2 ) return(-1) ;
			if ( nb1 > nb2 ) return(1) ;

            if( nb1 < nb2 )
                return -1;
            if( nb1 > nb2 )
                return 1;
        }

		if( toupper(*str1) < toupper(*str2) ) return(-1) ;
		if( toupper(*str1) > toupper(*str2) ) return(1) ;
		if( (*str1 == 0 ) && ( *str2 == 0 ) ) return(0) ;
        if( toupper( *str1 ) < toupper( *str2 ) )
            return -1;
        if( toupper( *str1 ) > toupper( *str2 ) )
            return 1;
        if( (*str1 == 0 ) && ( *str2 == 0 ) )
            return 0;
        str1++; str2++;
    }

	return(0);
    return 0;
}


@@ -215,12 +250,13 @@ int nb1 = 0 , nb2 = 0;
bool WildCompareString( const wxString& pattern, const wxString& string_to_tst,
                        bool case_sensitive )
/***********************************************************************/

/* compare 2 noms de composants, selon regles usuelles
	( Jokers * , ? , autoriss).
	la chaine de reference est "pattern"
	si case_sensitive == TRUE, comparaison exacte
	retourne TRUE si match
	retourne FALSE si differences
 *  ( Jokers * , ? , autoriss).
 *  la chaine de reference est "pattern"
 *  si case_sensitive == TRUE, comparaison exacte
 *  retourne TRUE si match
 *  retourne FALSE si differences
 */
{
    const wxChar* cp = NULL, * mp = NULL;
@@ -240,7 +276,8 @@ wxString _pattern, _string_to_tst;

    while( (*string) && (*wild != '*') )
    {
		if ( (*wild != *string) && (*wild != '?') ) return FALSE;
        if( (*wild != *string) && (*wild != '?') )
            return FALSE;
        wild++; string++;
    }

@@ -248,7 +285,8 @@ wxString _pattern, _string_to_tst;
    {
        if( *wild == '*' )
        {
			if (!*++wild) return 1;
            if( ! * ++wild )
                return 1;
            mp = wild;
            cp = string + 1;
        }
@@ -264,41 +302,48 @@ wxString _pattern, _string_to_tst;
        }
    }

	while (*wild == '*') {
    while( *wild == '*' )
    {
        wild++;
    }

    return ! * wild;
}


/***********************************************/
void ChangeSpaces( char* Text, int NewChar )
/***********************************************/
/* Change dans un texte les espaces en NewChar */
{
	if ( Text == NULL ) return;
    if( Text == NULL )
        return;
    while( *Text )
    {
		if( *Text == ' ') *Text = (char) NewChar;
        if( *Text == ' ' )
            *Text = (char) NewChar;
        Text++;
    }
}



/***************************/
char* to_point( char* Text )
/**************************/

/* convertit les , en . dans une chaine. utilis pour compenser
l'internalisationde la fct printf
qui genere les flottants avec une virgule au lieu du point
 *  l'internalisationde la fct printf
 *  qui genere les flottants avec une virgule au lieu du point
 */
{
    char* line = Text;

	if ( Text == NULL ) return NULL;
    if( Text == NULL )
        return NULL;
    for( ; *Text != 0; Text++ )
    {
		if (*Text == ',') *Text = '.';
        if( *Text == ',' )
            *Text = '.';
    }

    return line;
@@ -308,8 +353,9 @@ char * line = Text;
/********************************/
char* strupper( char* Text )
/********************************/

/* Change les caracteres 'a' ... 'z' en 'A' ... 'Z'. dans la chaine Text.
Retourne Text
 *  Retourne Text
 */
{
    char* code = Text;
@@ -318,11 +364,11 @@ char * code = Text;
    {
        while( *code )
        {
			if( (*code >= 'a') && (*code <= 'z') ) *code += 'A' - 'a';
            if( (*code >= 'a') && (*code <= 'z') )
                *code += 'A' - 'a';
            code++;
        }
    }

	return(Text);
    return Text;
}
+8 −1
Original line number Diff line number Diff line
@@ -61,15 +61,20 @@ void WinEDA_PcbFrame::Install_Test_DRC_Frame( wxDC* DC )
void DRC::ShowDialog()
{
    updatePointers();
    bool    isNew = false;

    if( !m_ui )
    {
        m_ui = new DrcDialog( this, m_mainWindow );
        isNew = true;
    }

    // @todo enter retentitive member data into the DrcDialog here

    if( isNew )
        m_ui->Show(true);
    else
        m_ui->Raise();

   // @todo capture the UI entered data into this DRC object. BUT in the OK handler
}
@@ -226,6 +231,8 @@ void DRC::WriteReport( FILE* fp )
    for( int i=0; i<m_pcb->GetOPENNETCount();  ++i )
        fprintf( fp, m_pcb->GetOPENNET(i)->GetReporter().ShowReport().mb_str() );
    */
    
    fprintf( fp, "** End of Report **\n" );
}


+8 −0
Original line number Diff line number Diff line
@@ -47,6 +47,14 @@ understanding by new developers.
Need to do this using DialogBlocks.


2007-Nov-30 Assigned To: nobody
asked by: Dick Hollenbeck
================================================================================
wxString DateAndTime()
It seems the above function should be using a more user friendly "local time",
not gmtime.


2007-Nov-4 Assigned To: dick, but probably not til January.
================================================================================
Enhance DRC dialog box to: