Commit 0cdcd78b authored by charras's avatar charras
Browse files

doc update.

parent 8c61ac42
Loading
Loading
Loading
Loading
+12 −3
Original line number Original line Diff line number Diff line
@@ -277,14 +277,23 @@ void* MyMalloc( size_t nb_octets )
}
}




/**************************************************************/
bool ProcessExecute( const wxString& aCommandLine, int aFlags )
bool ProcessExecute( const wxString& aCommandLine, int aFlags )
/**************************************************************/
/**
 * Function ProcessExecute
 * runs a child process.
 * @param aCommandLine The process and any arguments to it all in a single string.
 * @param aFlags The same args as allowed for wxExecute()
 * @return bool - true if success, else false
 */
{
{
#ifdef __WINDOWS__
#ifdef __WINDOWS__
    wxExecute(aCommandLine);
    int pid = wxExecute(aCommandLine);
    return true;
    return pid ? true : false;
#else
#else
    wxProcess*  process = wxProcess::Open( aCommandLine, aFlags );
    wxProcess*  process = wxProcess::Open( aCommandLine, aFlags );
    return process != NULL;
    return (process != NULL) ? true : false;
#endif
#endif
}
}


+49 −92
Original line number Original line Diff line number Diff line
@@ -54,16 +54,10 @@ void WinEDA_App::WritePdfBrowserInfos()
}
}




//  Mime type extensions
//  Mime type extensions (PDF files are not considered here)
static wxMimeTypesManager*  mimeDatabase;
static wxMimeTypesManager*  mimeDatabase;
static const wxFileTypeInfo EDAfallbacks[] =
static const wxFileTypeInfo EDAfallbacks[] =
{
{
    wxFileTypeInfo( wxT( "text/pdf" ),
        wxT( "xpdf %s" ),
        wxT( "xpdf -p %s" ),
        wxT( "pdf document (from Kicad)" ),
        wxT( "pdf" ), wxT( "PDF" ),  NULL ),

    wxFileTypeInfo( wxT( "text/html" ),
    wxFileTypeInfo( wxT( "text/html" ),
        wxT( "wxhtml %s" ),
        wxT( "wxhtml %s" ),
        wxT( "wxhtml %s" ),
        wxT( "wxhtml %s" ),
@@ -95,7 +89,7 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
 * if DocName is starting by http: or ftp: or www. the default internet browser is launched
 * if DocName is starting by http: or ftp: or www. the default internet browser is launched
 */
 */
{
{
    wxString docpath, fullfilename;
    wxString docpath, fullfilename, file_ext;
    wxString Line;
    wxString Line;
    wxString command;
    wxString command;
    bool     success = FALSE;
    bool     success = FALSE;
@@ -158,22 +152,27 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
        return FALSE;
        return FALSE;
    }
    }


    /* Try to launch some browser (usefull under linux) */
    wxFileName CurrentFileName( fullfilename );
    g_EDA_Appl->ReadPdfBrowserInfos();
    file_ext = CurrentFileName.GetExt();
    if( g_EDA_Appl->m_PdfBrowserIsDefault )

    if( file_ext == wxT( "pdf" ) )
    {
    {
        success = OpenPDF( fullfilename );
        return success;
    }


    /* Try to launch some browser (usefull under linux) */
    wxFileType* filetype;
    wxFileType* filetype;
        wxFileName CurrentFileName( fullfilename );


        wxString    ext, type;
    wxString    type;
        ext      = CurrentFileName.GetExt();
    filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( file_ext );
        filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( ext );


    if( !filetype )       // 2ieme tentative
    if( !filetype )       // 2ieme tentative
    {
    {
        mimeDatabase = new wxMimeTypesManager;
        mimeDatabase = new wxMimeTypesManager;
        mimeDatabase->AddFallbacks( EDAfallbacks );
        mimeDatabase->AddFallbacks( EDAfallbacks );
            filetype = mimeDatabase->GetFileTypeFromExtension( ext );
        filetype = mimeDatabase->GetFileTypeFromExtension( file_ext );
        delete mimeDatabase;
        delete mimeDatabase;
        mimeDatabase = NULL;
        mimeDatabase = NULL;
    }
    }
@@ -185,57 +184,15 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
        success = filetype->GetOpenCommand( &command, params );
        success = filetype->GetOpenCommand( &command, params );
        delete filetype;
        delete filetype;
        if( success )
        if( success )
                ProcessExecute( command );
            success = ProcessExecute( command );
    }
    }


    if( !success )
    if( !success )
    {
    {
#ifdef __LINUX__
        Line.Printf( _( "Unknown MIME type for Doc File [%s]" ),
            if( ext == wxT( "pdf" ) )
            fullfilename.GetData() );
            {
                success = TRUE; command.Empty();
                if( wxFileExists( wxT( "/usr/bin/kpdf" ) ) )
                    command = wxT( "kpdf " ) + fullfilename;
                else if( wxFileExists( wxT( "/usr/bin/konqueror" ) ) )
                    command = wxT( "konqueror " ) + fullfilename;
                else if( wxFileExists( wxT( "/usr/bin/gpdf" ) ) )
                    command = wxT( "gpdf " ) + fullfilename;
                if( wxFileExists( wxT( "/usr/bin/xpdf" ) ) )
                    command = wxT( "xpdf " ) + fullfilename;
                if( command.IsEmpty() ) // not started
                {
                    DisplayError( frame,
                        _( " Cannot find the PDF viewer (kpdf, gpdf, konqueror or xpdf) in /usr/bin/" ) );
                    success = FALSE;
                }
                else
                    ProcessExecute( command );
            }
            else
#endif
            {
                Line.Printf( _( "Unknown MIME type for Doc File [%s] (%s)" ),
                    fullfilename.GetData(), ext.GetData() );
                DisplayError( frame, Line );
            }
        }
    }
    else
    {
        command = g_EDA_Appl->m_PdfBrowser;
        if( wxFileExists( command ) )
        {
            success = TRUE;
            AddDelimiterString( fullfilename );
            command += wxT( " " ) + fullfilename;
            ProcessExecute( command );
        }
        else
        {
            Line.Printf( _( "Cannot find Pdf viewer %s" ), command.GetData() );
        DisplayError( frame, Line );
        DisplayError( frame, Line );
    }
    }
    }


    return success;
    return success;
}
}
+57 −20
Original line number Original line Diff line number Diff line
@@ -74,8 +74,8 @@ static wxString s_HelpPathList[] = {
#else
#else
    wxT( "/usr/share/doc/kicad/help/" ),
    wxT( "/usr/share/doc/kicad/help/" ),
    wxT( "/usr/local/share/doc/kicad/help/" ),
    wxT( "/usr/local/share/doc/kicad/help/" ),
    wxT( "/usr/local/kicad/doc/" ),             // default install for "universal tarballs" and build for a server (new)
    wxT( "/usr/local/kicad/doc/help/" ),             // default install for "universal tarballs" and build for a server (new)
//    wxT( "/usr/local/kicad/" ),                 // default install for "universal tarballs" and build for a server (old)
    wxT( "/usr/local/kicad/help/" ),                 // default install for "universal tarballs" and build for a server (old)
#endif
#endif
    wxT( "end_list" )                           // End of list symbol, do not change
    wxT( "end_list" )                           // End of list symbol, do not change
};
};
@@ -701,64 +701,101 @@ wxString GetEditorName()
    return g_EditorName;
    return g_EditorName;
}
}



/***********************************/
void OpenPDF( const wxString& file )
bool OpenPDF( const wxString& file )
/***********************************/
/** Function OpenPDF
 * run the PDF viewer and display a PDF file
 * @param file = PDF file to open
 * @return true is success, false if no PDF viewer found
 */
{
{
    wxString command;
    wxString command;
    wxString filename = file;
    wxString filename = file;
    wxString type;
    wxString type;
    bool     success  = false;


    g_EDA_Appl->ReadPdfBrowserInfos();
    g_EDA_Appl->ReadPdfBrowserInfos();
    if( !g_EDA_Appl->m_PdfBrowserIsDefault )
    if( !g_EDA_Appl->m_PdfBrowserIsDefault )    //  Run the prefered PDF Browser
    {
    {
        AddDelimiterString( filename );
        AddDelimiterString( filename );
        command = g_EDA_Appl->m_PdfBrowser + filename;
        command = g_EDA_Appl->m_PdfBrowser  + wxT( " " ) + filename;
    }
    }
    else
    else
    {
    {
        bool        success  = false;
        wxFileType* filetype = NULL;
        wxFileType* filetype = NULL;

        wxFileType::MessageParameters params( filename, type );
        wxFileType::MessageParameters params( filename, type );

        filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( wxT( "pdf" ) );
        filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( wxT( ".pdf" ) );
        if( filetype )
        if( filetype )
            success = filetype->GetOpenCommand( &command, params );
            success = filetype->GetOpenCommand( &command, params );
        delete filetype;
        delete filetype;
#ifndef __WINDOWS__
        // Bug ? under linux wxWidgets returns acroread as PDF viewer,even it not exists
        if ( command.StartsWith(wxT("acroread")) )  // Workaround
            success = false;
#endif
        if( success && !command.IsEmpty() )
        {
            success = ProcessExecute( command );
        }
        else
            success = false;


        if( !success )
        if( !success )
        {
        {
            AddDelimiterString( filename );
            command.Empty();
            command.Empty();

#ifndef __WINDOWS__
            AddDelimiterString( filename );
            /* here is a list of PDF viewers candidates */
            const static wxString tries[] =
            const static wxString tries[] =
            {
            {
                wxT( "/usr/bin/evince" ),
                wxT( "/usr/bin/evince" ),
                wxT( "/usr/bin/xpdf" ),
                wxT( "/usr/bin/konqueror" ),
                wxT( "/usr/bin/gpdf" ),
                wxT( "/usr/bin/gpdf" ),
                wxT( "/usr/bin/konqueror" ),
                wxT( "/usr/bin/kpdf" ),
                wxT( "/usr/bin/xpdf" ),
                wxT( "" ),
                wxT( "" ),
            };
            };


            for( int i = 0; ; i++ )
            for( int ii = 0; ; ii++ )
            {
            {
                if( tries[i].IsEmpty() )
                if( tries[ii].IsEmpty() )
                    break;
                    break;


                if( wxFileExists( tries[i] ) )
                if( wxFileExists( tries[ii] ) )
                {
                {
                    command = tries[i] + wxT( " " ) + filename;
                    command = tries[ii] + wxT( " " ) + filename;
                    break;
                }
                }
            }
            }
#endif
        }
        }
    }
    }


    if( !command.IsEmpty() )
    if( !command.IsEmpty() )
        ProcessExecute( command );
    {
        success = ProcessExecute( command );
        if ( !success )
        {
            wxString msg = _("Problem while running the PDF viewer");
            msg << wxT("\n command is") << command;
            DisplayError( NULL, msg );
        }
    }
    else
    {
        wxString msg = _("Unable to find a PDF viewer for");
        msg << wxT(" ") << filename;
        DisplayError( NULL, msg );
        success = false;
    }
    }


    return success;
}


/*************************************/
void OpenFile( const wxString& file )
void OpenFile( const wxString& file )
/*************************************/
{
{
    wxString    command;
    wxString    command;
    wxString    filename = file;
    wxString    filename = file;
+17 −11
Original line number Original line Diff line number Diff line
@@ -309,7 +309,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
 *  Function to move items in the current selected block
 *  Function to move items in the current selected block
 */
 */
{
{
    int     deltaX, deltaY;
    wxPoint delta;
    wxPoint oldpos;
    wxPoint oldpos;


    oldpos = GetScreen()->m_Curseur;
    oldpos = GetScreen()->m_Curseur;
@@ -321,8 +321,7 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
    GetScreen()->BlockLocate.Normalize();
    GetScreen()->BlockLocate.Normalize();


    /* calcul du vecteur de deplacement pour les deplacements suivants */
    /* calcul du vecteur de deplacement pour les deplacements suivants */
    deltaX = GetScreen()->BlockLocate.m_MoveVector.x;
    delta = GetScreen()->BlockLocate.m_MoveVector;
    deltaY = GetScreen()->BlockLocate.m_MoveVector.y;


    /* Move the Track segments in block */
    /* Move the Track segments in block */
    TRACK* track = m_Pcb->m_Track;
    TRACK* track = m_Pcb->m_Track;
@@ -332,9 +331,13 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
        {
        {
            m_Pcb->m_Status_Pcb = 0;
            m_Pcb->m_Status_Pcb = 0;
            track->Draw( DrawPanel, DC, GR_XOR );   // erase the display
            track->Draw( DrawPanel, DC, GR_XOR );   // erase the display
            track->m_Start.x += deltaX; track->m_Start.y += deltaY;
            track->m_Start += delta;
            track->m_End.x   += deltaX; track->m_End.y += deltaY;
            track->m_End   += delta;
            track->m_Param   += deltaX; track->SetSubNet( track->GetSubNet() + deltaY );
            // the two parameters are used in gerbview to store centre coordinates for arcs.
            // move this centre
            track->m_Param  += delta.x;
            track->SetSubNet( track->GetSubNet() + delta.y );

            track->Draw( DrawPanel, DC, GR_OR ); // redraw the moved track
            track->Draw( DrawPanel, DC, GR_OR ); // redraw the moved track
        }
        }
        track = track->Next();
        track = track->Next();
@@ -344,12 +347,15 @@ void WinEDA_BasePcbFrame::Block_Move( wxDC* DC )
    SEGZONE * zsegment= m_Pcb->m_Zone;
    SEGZONE * zsegment= m_Pcb->m_Zone;
    while( zsegment )
    while( zsegment )
    {
    {
        if( IsSegmentInBox( GetScreen()->BlockLocate, track ) )
        if( IsSegmentInBox( GetScreen()->BlockLocate, zsegment ) )
        {
        {
            zsegment->Draw( DrawPanel, DC, GR_XOR );   // erase the display
            zsegment->Draw( DrawPanel, DC, GR_XOR );   // erase the display
            zsegment->m_Start.x += deltaX; track->m_Start.y += deltaY;
            zsegment->m_Start += delta;
            zsegment->m_End.x   += deltaX; track->m_End.y += deltaY;
            zsegment->m_End   += delta;
            zsegment->m_Param   += deltaX; track->SetSubNet( track->GetSubNet() + deltaY );
            // the two parameters are used in gerbview to store centre coordinates for arcs.
            // move this centre
            zsegment->m_Param  += delta.x;
            zsegment->SetSubNet( zsegment->GetSubNet() + delta.y );
            zsegment->Draw( DrawPanel, DC, GR_OR ); // redraw the moved zone zegment
            zsegment->Draw( DrawPanel, DC, GR_OR ); // redraw the moved zone zegment
        }
        }
        zsegment = zsegment->Next();
        zsegment = zsegment->Next();
@@ -407,7 +413,7 @@ void WinEDA_BasePcbFrame::Block_Duplicate( wxDC* DC )
    while( zsegment )
    while( zsegment )
    {
    {
        SEGZONE * next_zsegment = zsegment->Next();
        SEGZONE * next_zsegment = zsegment->Next();
        if( IsSegmentInBox( GetScreen()->BlockLocate, track ) )
        if( IsSegmentInBox( GetScreen()->BlockLocate, zsegment ) )
        {
        {
            /* this zone segment must be duplicated */
            /* this zone segment must be duplicated */
            SEGZONE * new_zsegment = (SEGZONE*) zsegment->Copy();
            SEGZONE * new_zsegment = (SEGZONE*) zsegment->Copy();
+1 −1
Original line number Original line Diff line number Diff line
@@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion
#    include "config.h"
#    include "config.h"
     (wxT(KICAD_SVN_VERSION))
     (wxT(KICAD_SVN_VERSION))
#  else
#  else
     (wxT("(20080530-r1107)"))
     (wxT("(20080622-r1138)"))
#  endif
#  endif
#endif
#endif
;
;
Loading