r5011 - trunk/gta02-core/kicad-patches

werner at docs.openmoko.org werner at docs.openmoko.org
Thu May 21 04:16:20 CEST 2009


Author: werner
Date: 2009-05-21 04:16:19 +0200 (Thu, 21 May 2009)
New Revision: 5011

Added:
   trunk/gta02-core/kicad-patches/auto-overline-config.patch
   trunk/gta02-core/kicad-patches/auto-overline-screen.patch
   trunk/gta02-core/kicad-patches/drag-override.patch
   trunk/gta02-core/kicad-patches/fix-pinbypin-button-type.patch
   trunk/gta02-core/kicad-patches/gerbview-export-arcs.patch
   trunk/gta02-core/kicad-patches/old-boost-build-fix.patch
   trunk/gta02-core/kicad-patches/series
Modified:
   trunk/gta02-core/kicad-patches/eeschema-plot-only-mode.patch
   trunk/gta02-core/kicad-patches/fix-pinedit-collision.patch
Log:
The current quilt patch set for KiCad. Not that most of the patches are
work in progress and are commented out in "series".



Added: trunk/gta02-core/kicad-patches/auto-overline-config.patch
===================================================================
--- trunk/gta02-core/kicad-patches/auto-overline-config.patch	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/auto-overline-config.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,194 @@
+Work in progress.
+
+Add auto-overline configuration options.
+
+Index: kicad/eeschema/dialog_options.cpp
+===================================================================
+--- kicad.orig/eeschema/dialog_options.cpp	2009-05-16 19:19:14.000000000 -0300
++++ kicad/eeschema/dialog_options.cpp	2009-05-19 17:52:42.000000000 -0300
+@@ -146,6 +146,13 @@
+     m_DeltaStepYTitle->SetLabel( title );
+ 
+     m_DeltaLabelCtrl->SetValue( g_RepeatDeltaLabel );
++
++    m_AutoOverlinePins->SetValue(g_AutoOverlinePins);
++    m_AutoOverlineNetsLabels->SetValue(g_AutoOverlineNetsLabels);
++    m_AutoOverlineText->SetValue(g_AutoOverlineText);
++    m_AutoOverlinePrefixes->SetValue(g_AutoOverlinePrefixes);
++    m_AutoOverlineSeparators->SetValue(g_AutoOverlineSeparators);
++    m_AutoOverlineKeepPrefix->SetValue(g_AutoOverlineKeepPrefix);
+ }
+ 
+ 
+@@ -177,6 +184,12 @@
+     m_DeltaStepCtrl_Y = NULL;
+     m_DeltaIncTitle = NULL;
+     m_DeltaLabelCtrl = NULL;
++    m_AutoOverlinePins = NULL;
++    m_AutoOverlineNetsLabels = NULL;
++    m_AutoOverlineText = NULL;
++    m_AutoOverlinePrefixes = NULL;
++    m_AutoOverlineSeparators = NULL;
++    m_AutoOverlineKeepPrefix = NULL;
+ ////@end WinEDA_SetOptionsFrame member initialisation
+ 
+ ////@begin WinEDA_SetOptionsFrame creation
+@@ -268,6 +281,58 @@
+     m_Show_Page_Limits->SetSelection(0);
+     itemBoxSizer8->Add(m_Show_Page_Limits, 0, wxGROW|wxALL, 5);
+ 
++
++    wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxVERTICAL);
++    itemBoxSizer2->Add(itemBoxSizer19, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
++
++    wxStaticBox* itemStaticBoxSizer20Static = new wxStaticBox(itemDialog1,
++      wxID_ANY, _("Auto-overline"));
++    wxStaticBoxSizer* itemStaticBoxSizer20 = new
++      wxStaticBoxSizer(itemStaticBoxSizer20Static, wxVERTICAL);
++    itemBoxSizer19->Add(itemStaticBoxSizer20, 0,
++      wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
++
++    m_AutoOverlinePins = new wxCheckBox( itemDialog1, ID_CHECKBOX1,
++      _("Pins"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
++    m_AutoOverlinePins->SetValue(FALSE);
++    itemStaticBoxSizer20->Add(m_AutoOverlinePins, 0,
++      wxALIGN_LEFT | wxALL, 5);
++
++    m_AutoOverlineNetsLabels = new wxCheckBox( itemDialog1, ID_CHECKBOX1,
++      _("Nets and labels"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
++    m_AutoOverlineNetsLabels->SetValue(FALSE);
++    itemStaticBoxSizer20->Add(m_AutoOverlineNetsLabels, 0,
++      wxALIGN_LEFT | wxALL, 5);
++
++    m_AutoOverlineText = new wxCheckBox( itemDialog1, ID_CHECKBOX1,
++      _("Text"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
++    m_AutoOverlineText->SetValue(FALSE);
++    itemStaticBoxSizer20->Add(m_AutoOverlineText, 0,
++      wxALIGN_LEFT | wxALL, 5);
++
++    itemStaticBoxSizer20->Add(new wxStaticText( itemDialog1, wxID_STATIC,
++      _("Prefixes"), wxDefaultPosition, wxDefaultSize, 0 ),
++      0, wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, 5);
++
++    m_AutoOverlinePrefixes = new wxTextCtrl( itemDialog1, ID_TEXTCTRL,
++      _T("n#"), wxDefaultPosition, wxDefaultSize, 0 );
++    itemStaticBoxSizer20->Add(m_AutoOverlinePrefixes, 0, wxGROW | wxALL, 5);
++
++    itemStaticBoxSizer20->Add(new wxStaticText( itemDialog1, wxID_STATIC,
++      _("Separators"), wxDefaultPosition, wxDefaultSize, 0 ),
++      0, wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE, 5);
++
++    m_AutoOverlineSeparators = new wxTextCtrl( itemDialog1, ID_TEXTCTRL,
++      _T("/,"), wxDefaultPosition, wxDefaultSize, 0 );
++    itemStaticBoxSizer20->Add(m_AutoOverlineSeparators, 0, wxGROW | wxALL, 5);
++
++    m_AutoOverlineKeepPrefix = new wxCheckBox( itemDialog1, ID_CHECKBOX1,
++      _("Keep prefix"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
++    m_AutoOverlineKeepPrefix->SetValue(TRUE);
++    itemStaticBoxSizer20->Add(m_AutoOverlineKeepPrefix, 0,
++      wxALIGN_LEFT | wxALL, 5);
++
++
+     wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL);
+     itemBoxSizer2->Add(itemBoxSizer14, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ 
+@@ -302,6 +367,11 @@
+     m_DeltaLabelCtrl = new wxSpinCtrl( itemDialog1, ID_SPINCTRL, _T("0"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -16, 16, 0 );
+     itemStaticBoxSizer18->Add(m_DeltaLabelCtrl, 0, wxGROW|wxALL, 5);
+ 
++
++    m_DeltaStepXTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Delta Step X"), wxDefaultPosition, wxDefaultSize, 0 );
++    itemStaticBoxSizer18->Add(m_DeltaStepXTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
++
++
+ ////@end WinEDA_SetOptionsFrame content construction
+ 
+     m_btClose->SetFocus();
+@@ -474,4 +544,11 @@
+         m_Parent->GetBaseScreen()->SetGrid( grid );
+         m_Parent->GetBaseScreen()->SetRefreshReq();
+     }
++
++    g_AutoOverlinePins = m_AutoOverlinePins->GetValue();
++    g_AutoOverlineNetsLabels = m_AutoOverlineNetsLabels->GetValue();
++    g_AutoOverlineText = m_AutoOverlineText->GetValue();
++    g_AutoOverlinePrefixes = m_AutoOverlinePrefixes->GetValue();
++    g_AutoOverlineSeparators = m_AutoOverlineSeparators->GetValue();
++    g_AutoOverlineKeepPrefix= m_AutoOverlineKeepPrefix->GetValue();
+ }
+Index: kicad/eeschema/dialog_options.h
+===================================================================
+--- kicad.orig/eeschema/dialog_options.h	2009-05-16 19:19:14.000000000 -0300
++++ kicad/eeschema/dialog_options.h	2009-05-19 17:52:42.000000000 -0300
+@@ -129,6 +129,12 @@
+     wxTextCtrl* m_DeltaStepCtrl_Y;
+     wxStaticText* m_DeltaIncTitle;
+     wxSpinCtrl* m_DeltaLabelCtrl;
++    wxCheckBox* m_AutoOverlinePins;
++    wxCheckBox* m_AutoOverlineNetsLabels;
++    wxCheckBox* m_AutoOverlineText;
++    wxTextCtrl* m_AutoOverlinePrefixes;
++    wxTextCtrl* m_AutoOverlineSeparators;
++    wxCheckBox* m_AutoOverlineKeepPrefix;
+ ////@end WinEDA_SetOptionsFrame member variables
+ 
+ 	WinEDA_ValueCtrl * m_DefaultDrawLineWidthCtrl;
+Index: kicad/eeschema/eeconfig.cpp
+===================================================================
+--- kicad.orig/eeschema/eeconfig.cpp	2009-05-16 19:19:14.000000000 -0300
++++ kicad/eeschema/eeconfig.cpp	2009-05-19 17:52:42.000000000 -0300
+@@ -20,6 +20,14 @@
+ #include "hotkeys.h"
+ 
+ 
++bool g_AutoOverlinePins;
++bool g_AutoOverlineNetsLabels;
++bool g_AutoOverlineText;
++wxString g_AutoOverlinePrefixes;
++wxString g_AutoOverlineSeparators;
++bool g_AutoOverlineKeepPrefix;
++
++
+ /* Variables locales */
+ 
+ 
+@@ -219,6 +227,19 @@
+                                                 &g_DefaultTextLabelSize,
+                                                 DEFAULT_SIZE_TEXT, 0, 1000 ) );
+ 
++    m_projectFileParams.Add( new PARAM_CFG_BOOL(
++      wxT( "AutoOverlinePins" ), &g_AutoOverlinePins ) );
++    m_projectFileParams.Add( new PARAM_CFG_BOOL(
++      wxT( "AutoOverlineNetsLabels" ), &g_AutoOverlineNetsLabels ) );
++    m_projectFileParams.Add( new PARAM_CFG_BOOL(
++      wxT( "AutoOverlineText" ), &g_AutoOverlineText ) );
++    m_projectFileParams.Add( new PARAM_CFG_WXSTRING(
++      wxT( "AutoOverlinePrefixes" ), &g_AutoOverlinePrefixes ) );
++    m_projectFileParams.Add( new PARAM_CFG_WXSTRING(
++      wxT( "AutoOverlineSeparators" ), &g_AutoOverlineSeparators) );
++    m_projectFileParams.Add( new PARAM_CFG_BOOL(
++      wxT( "AutoOverlineKeepPrefix" ), &g_AutoOverlineKeepPrefix ) );
++
+     return m_projectFileParams;
+ }
+ 
+Index: kicad/eeschema/general.h
+===================================================================
+--- kicad.orig/eeschema/general.h	2009-05-16 19:19:14.000000000 -0300
++++ kicad/eeschema/general.h	2009-05-19 17:52:42.000000000 -0300
+@@ -120,6 +120,15 @@
+ extern int g_PlotPSColorOpt;    // True = plot postcript color (see plotps.cpp)
+ 
+ 
++// Auto-overline
++
++extern bool g_AutoOverlinePins;
++extern bool g_AutoOverlineNetsLabels;
++extern bool g_AutoOverlineText;
++extern wxString g_AutoOverlinePrefixes;
++extern wxString g_AutoOverlineSeparators;
++extern bool g_AutoOverlineKeepPrefix;
++
+ // Gestion de diverses variables, options... devant etre memorisees mais
+ // Remises a 0 lors d'un rechargement de projetc
+ struct EESchemaVariables

Added: trunk/gta02-core/kicad-patches/auto-overline-screen.patch
===================================================================
--- trunk/gta02-core/kicad-patches/auto-overline-screen.patch	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/auto-overline-screen.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,130 @@
+Work in progress.
+
+Auto-overline string processing for pins. Note the the logic only works
+if the pin is not multi-purpose. Doesn't draw the overline.
+
+Index: kicad/eeschema/class_pin.cpp
+===================================================================
+--- kicad.orig/eeschema/class_pin.cpp	2009-05-16 19:19:14.000000000 -0300
++++ kicad/eeschema/class_pin.cpp	2009-05-19 17:52:42.000000000 -0300
+@@ -435,6 +435,39 @@
+ }
+ 
+ 
++static bool do_overline(const wchar_t **res, const wchar_t *s)
++{
++    const wchar_t *sep, *next;
++
++    *res = s;
++    if (!g_AutoOverlinePins || !g_AutoOverlinePrefixes)
++	return FALSE;
++
++    while (1) {
++	/* see if we have a prefix match */
++	if (wcsrchr(g_AutoOverlinePrefixes, *s))
++	    break;
++
++	/* skip to the next separator */
++	for (sep = g_AutoOverlineSeparators; sep && *sep; sep++) {
++	    next = wcsrchr(s, *sep);
++	    if (next)
++		break;
++	}
++	if (!next)
++	    return FALSE;
++	s = next+1;
++	if (!*s)
++	    return FALSE; /* name ends with a separator */
++    }
++
++    /* we have a prefix match */
++    if (!g_AutoOverlineKeepPrefix)
++	*res = s[1] ? s+1 : L"?";
++    return TRUE;
++}
++
++
+ /*****************************************************************************
+ *  Put out pin number and pin text info, given the pin line coordinates.
+ *  The line must be vertical or horizontal.
+@@ -500,6 +533,10 @@
+         DrawPinName = FALSE;
+     PinTxtLen = (int) ( fPinTextPitch * PinTxtLen );
+ 
++    const wchar_t *name;
++
++    do_overline(&name, m_PinName);
++
+     if( TextInside )  /* Draw the text inside, but the pin numbers outside. */
+     {
+         if( (orient == PIN_LEFT) || (orient == PIN_RIGHT) )
+@@ -511,7 +548,7 @@
+                 {
+                     x = x1 + TextInside;
+                     DrawGraphicText( panel, DC, wxPoint( x, y1 ), NameColor,
+-                                     m_PinName,
++                                     name,
+                                      TEXT_ORIENT_HORIZ,
+                                      PinNameSize,
+                                      GR_TEXT_HJUSTIFY_LEFT,
+@@ -522,7 +559,7 @@
+                 {
+                     x = x1 - TextInside;
+                     DrawGraphicText( panel, DC, wxPoint( x, y1 ), NameColor,
+-                                     m_PinName,
++                                     name,
+                                      TEXT_ORIENT_HORIZ,
+                                      PinNameSize,
+                                      GR_TEXT_HJUSTIFY_RIGHT,
+@@ -551,7 +588,7 @@
+ 
+                 if( DrawPinName )
+                     DrawGraphicText( panel, DC, wxPoint( x1, y ), NameColor,
+-                                     m_PinName,
++                                     name,
+                                      TEXT_ORIENT_VERT, PinNameSize,
+                                      GR_TEXT_HJUSTIFY_RIGHT,
+                                      GR_TEXT_VJUSTIFY_CENTER, LineWidth,
+@@ -571,7 +608,7 @@
+ 
+                 if( DrawPinName )
+                     DrawGraphicText( panel, DC, wxPoint( x1, y ), NameColor,
+-                                     m_PinName,
++                                     name,
+                                      TEXT_ORIENT_VERT, PinNameSize,
+                                      GR_TEXT_HJUSTIFY_LEFT,
+                                      GR_TEXT_VJUSTIFY_CENTER, LineWidth,
+@@ -597,7 +634,7 @@
+                 x = (x1 + pin_pos.x) / 2;
+                 DrawGraphicText( panel, DC, wxPoint( x,
+                                                      y1 - TXTMARGE ),
+-                                 NameColor, m_PinName,
++                                 NameColor, name,
+                                  TEXT_ORIENT_HORIZ, PinNameSize,
+                                  GR_TEXT_HJUSTIFY_CENTER,
+                                  GR_TEXT_VJUSTIFY_BOTTOM, LineWidth,
+@@ -622,7 +659,7 @@
+                 y = (y1 + pin_pos.y) / 2;
+                 DrawGraphicText( panel, DC, wxPoint( x1 - TXTMARGE,
+                                                      y ),
+-                                 NameColor, m_PinName,
++                                 NameColor, name,
+                                  TEXT_ORIENT_VERT, PinNameSize,
+                                  GR_TEXT_HJUSTIFY_CENTER,
+                                  GR_TEXT_VJUSTIFY_BOTTOM, LineWidth, false, true );
+Index: kicad/eeschema/classes_body_items.cpp
+===================================================================
+--- kicad.orig/eeschema/classes_body_items.cpp	2009-05-16 19:19:14.000000000 -0300
++++ kicad/eeschema/classes_body_items.cpp	2009-05-19 17:52:42.000000000 -0300
+@@ -562,7 +562,10 @@
+      *  transformation matrix causes xy axes to be flipped. */
+     int t1 = ( aTransformMatrix[0][0] != 0 ) ^ ( m_Orient != 0 );
+ 
+-    DrawGraphicText( aPanel, aDC, pos1, (EDA_Colors) color, m_Text,
++//    wxString foo = mText;
++    wxString foo = wxT( "BAEH" );
++
++    DrawGraphicText( aPanel, aDC, pos1, (EDA_Colors) color, foo,
+                      t1 ? TEXT_ORIENT_HORIZ : TEXT_ORIENT_VERT,
+                      m_Size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
+                      linewidth, m_Italic );

Added: trunk/gta02-core/kicad-patches/drag-override.patch
===================================================================
--- trunk/gta02-core/kicad-patches/drag-override.patch	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/drag-override.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,136 @@
+Work in progress.
+
+Try to use dragging of tracks and joints ("nodes") to directly drag
+them, without involving intermediate menus.
+
+Index: kicad/common/drawpanel.cpp
+===================================================================
+--- kicad.orig/common/drawpanel.cpp	2009-04-28 17:43:26.000000000 -0300
++++ kicad/common/drawpanel.cpp	2009-04-29 13:37:21.000000000 -0300
+@@ -1151,17 +1151,21 @@
+                     MinDragEventCount++;
+                 else
+                 {
+-                    if( !m_Parent->HandleBlockBegin( &DC, cmd_type, m_CursorStartPos ) )
+-                    {
+-                        // should not occurs: error
+-                        m_Parent->DisplayToolMsg(
+-                            wxT( "WinEDA_DrawPanel::OnMouseEvent() Block Error" ) );
+-                    }
+-                    else
+-                    {
+-                        m_AutoPAN_Request = TRUE;
+-                        SetCursor( m_PanelCursor = wxCURSOR_SIZING );
+-                    }
++fprintf(stderr, "HBB %p\n", m_Parent);
++		    if( !m_Parent->DragOverride( &DC, m_CursorStartPos)) {
++			if( !m_Parent->HandleBlockBegin( &DC, cmd_type,
++			  m_CursorStartPos ) )
++			{
++			    // should not occurs: error
++			    m_Parent->DisplayToolMsg(
++				wxT( "WinEDA_DrawPanel::OnMouseEvent() Block Error" ) );
++			}
++			else
++			{
++			    m_AutoPAN_Request = TRUE;
++			    SetCursor( m_PanelCursor = wxCURSOR_SIZING );
++			}
++		    }
+                 }
+             }
+         }
+@@ -1191,6 +1195,7 @@
+             else if( screen->BlockLocate.m_State == STATE_BLOCK_END )
+             {
+                 m_AutoPAN_Request = FALSE;
++fprintf(stderr, "END %p\n", m_Parent);
+                 m_Parent->HandleBlockEnd( &DC );
+                 SetCursor( m_PanelCursor = m_PanelDefaultCursor );
+                 if( screen->BlockLocate.m_State == STATE_BLOCK_MOVE )
+Index: kicad/include/wxPcbStruct.h
+===================================================================
+--- kicad.orig/include/wxPcbStruct.h	2009-04-28 17:35:37.000000000 -0300
++++ kicad/include/wxPcbStruct.h	2009-04-28 18:27:46.000000000 -0300
+@@ -429,6 +429,8 @@
+     void             HandleBlockPlace( wxDC* DC );
+     int              HandleBlockEnd( wxDC* DC );
+ 
++    bool	     DragOverride( wxDC* DC, const wxPoint& MousePos );
++
+     void             SetToolbars();
+     void             Process_Settings( wxCommandEvent& event );
+     void             InstallPcbOptionsFrame( const wxPoint& pos, wxDC* DC, int id );
+Index: kicad/include/wxstruct.h
+===================================================================
+--- kicad.orig/include/wxstruct.h	2009-04-28 17:35:37.000000000 -0300
++++ kicad/include/wxstruct.h	2009-04-29 14:16:05.000000000 -0300
+@@ -293,6 +293,8 @@
+     virtual void     HandleBlockPlace( wxDC* DC );
+     virtual int      HandleBlockEnd( wxDC* DC );
+ 
++    virtual bool     DragOverride( wxDC* DC, const wxPoint& MousePos );
++
+     void             CopyToClipboard( wxCommandEvent& event );
+ 
+     /* interprocess communication */
+@@ -398,7 +400,7 @@
+     // Constructor and destructor
+     WinEDA_EnterText( wxWindow* parent, const wxString& Title,
+                       const wxString& TextToEdit, wxBoxSizer* BoxSizer,
+-                      const wxSize& Size );
++                      const wxSize& Size, bool Multiline = false );
+ 
+     ~WinEDA_EnterText()
+     {
+Index: kicad/pcbnew/block.cpp
+===================================================================
+--- kicad.orig/pcbnew/block.cpp	2009-04-28 17:35:37.000000000 -0300
++++ kicad/pcbnew/block.cpp	2009-04-29 14:25:14.000000000 -0300
+@@ -396,6 +396,29 @@
+ }
+ 
+ 
++/*********************************************************************/
++bool WinEDA_PcbFrame::DragOverride( wxDC* DC, const wxPoint& MousePos )
++/*********************************************************************/
++{
++    wxPoint cursorPosition = GetScreen()->m_Curseur;
++    BOARD_ITEM* item = GetCurItem();
++
++fprintf(stderr, "DragOverride %p\n", item);
++    if (!item)
++	return FALSE;
++fprintf(stderr, "%u\n", item->Type());
++    if (item->Type() != TYPE_TRACK)
++	return FALSE;
++
++    TRACK* Track = (TRACK*) item;
++
++    if (!Track->IsPointOnEnds( cursorPosition, -1 ))
++	return FALSE;
++    fprintf(stderr, "TOUCHE!\n");
++    return TRUE;
++}
++
++
+ /**************************************************************************/
+ static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
+ /**************************************************************************/
+Index: kicad/common/drawframe.cpp
+===================================================================
+--- kicad.orig/common/drawframe.cpp	2009-04-28 18:30:44.000000000 -0300
++++ kicad/common/drawframe.cpp	2009-04-29 14:24:49.000000000 -0300
+@@ -546,6 +546,12 @@
+ }
+ 
+ 
++bool WinEDA_DrawFrame::DragOverride( wxDC* DC, const wxPoint& MousePos )
++{
++    return FALSE;
++}
++
++
+ /*********************************************/
+ void WinEDA_DrawFrame::AdjustScrollBars()
+ /*********************************************/

Modified: trunk/gta02-core/kicad-patches/eeschema-plot-only-mode.patch
===================================================================
--- trunk/gta02-core/kicad-patches/eeschema-plot-only-mode.patch	2009-05-20 10:07:01 UTC (rev 5010)
+++ trunk/gta02-core/kicad-patches/eeschema-plot-only-mode.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -6,20 +6,19 @@
 This lets shell scripts generate plots, i.e., of schematics that have
 been processed by these scripts.
 
-Known issue: if there is an error that causes a dialog to be brought
-up, eeschema will just hang, waiting for the user to click the dialog
-away on the invisible window.
+Known issue: if there is an error or a warning, eeschema will bring up
+a dialog instead of just exiting.
 
-This patch is for KiCad SVN revision 1768.
+This patch is for KiCad SVN revision 1771.
 
-Signed-off-by: Werner Almesberger <werner at openmoko.org>
+- Werner
 
 ---
 
 Index: kicad/eeschema/eeschema.cpp
 ===================================================================
---- kicad.orig/eeschema/eeschema.cpp	2009-05-15 15:53:27.000000000 -0300
-+++ kicad/eeschema/eeschema.cpp	2009-05-15 16:08:53.000000000 -0300
+--- kicad.orig/eeschema/eeschema.cpp	2009-05-19 17:52:29.000000000 -0300
++++ kicad/eeschema/eeschema.cpp	2009-05-19 17:52:41.000000000 -0300
 @@ -12,6 +12,7 @@
  #include "general.h"
  #include "bitmaps.h"
@@ -28,65 +27,83 @@
  
  #include "libcmp.h"
  #include "protos.h"
-@@ -137,12 +138,23 @@
- {
-     wxFileName fn;
-     WinEDA_SchematicFrame* frame = NULL;
-+    bool plot_only = FALSE;
+@@ -122,6 +123,69 @@
+ int DefaultTransformMatrix[2][2] = { { 1, 0 }, { 0, -1 } };
  
-     g_DebugLevel = 0;   // Debug level */
  
-     InitEDA_Appl( wxT( "EESchema" ), APP_TYPE_EESCHEMA );
- 
--    if( m_Checker && m_Checker->IsAnotherRunning() )
-+    if (argc > 1 && !wxStrcmp(argv[1], wxT("--plot"))) {
-+	if (argc < 3) {
-+	    fprintf(stderr, "usage: %ls [[--plot] filename]\n", *argv);
-+	    exit(1);
-+	}
-+	plot_only = TRUE;
-+	argc--;
-+	argv++;
++/*
++ * "PlotOnly" is a quick and dirty implementation of a non-interactive plot
++ * mode.
++ *
++ * This is neither a nice nor a complete implementation of this concept. E.g.,
++ * if there are any errors, KiCad may bring up a dialog instead of just
++ * exiting.
++ *
++ * However, this is the best we can do without making considerably intrusive
++ * changes to the internals of KiCad.
++ */
++
++
++static void PlotOnly( WinEDA_App* app )
++{
++    WinEDA_SchematicFrame* frame;
++    wxFileName fn;
++
++    if( app->argc < 3 )
++    {
++	fprintf( stderr, "usage: %ls [[--plot] filename]\n", *app->argv );
++	exit( 1 );
 +    }
 +
-+    if( !plot_only && m_Checker && m_Checker->IsAnotherRunning() )
-     {
-         if( !IsOK( NULL, _( "Eeschema is already running, Continue?" ) ) )
-             return false;
-@@ -164,9 +176,9 @@
-                                        wxPoint( 0, 0 ), wxSize( 600, 400 ) );
++    fn = app->argv[2];
++    if( !fn.IsOk() )
++    {
++	fprintf( stderr, "%ls: bad name\n", app->argv[2] );
++	exit(1);
++    }
++
++    /* init EESCHEMA */
++    SeedLayers();
++    app->GetSettings();
++
++    // Create main frame (schematic frame) :
++    frame = new WinEDA_SchematicFrame( NULL, wxT( "EESchema" ),
++                                       wxPoint( 0, 0 ), wxSize( 600, 400 ) );
++
++    app->SetTopWindow( frame );
++    frame->Show( FALSE );
++
++    ActiveScreen = frame->GetScreen();
++
++    /* Load file specified in the command line. */
++    if( fn.GetExt() != SchematicFileExtension )
++	fn.SetExt( SchematicFileExtension );
++    wxSetWorkingDirectory( fn.GetPath() );
++    if( !frame->LoadOneEEProject( fn.GetFullPath(), false ) )
++    {
++	fprintf( stderr, "%ls: can't load\n", app->argv[2] );
++	exit( 1 );
++    }
++
++    WinEDA_PlotPSFrame* Ps_frame = new WinEDA_PlotPSFrame( frame );
++    wxCommandEvent dummy;
++
++    Ps_frame->OnPlotPsAllExecuteClick( dummy );
++
++    exit( 0 );
++}
++
++
+ /************************************/
+ /* Called to initialize the program */
+ /************************************/
+@@ -142,6 +206,9 @@
  
-     SetTopWindow( frame );
--    frame->Show( TRUE );
-+    frame->Show( !plot_only );
+     InitEDA_Appl( wxT( "EESchema" ), APP_TYPE_EESCHEMA );
  
--    if( CreateServer( frame, KICAD_SCH_PORT_SERVICE_NUMBER ) )
-+    if( !plot_only && CreateServer( frame, KICAD_SCH_PORT_SERVICE_NUMBER ) )
-     {
-         // RemoteCommand is in controle.cpp and is called when PCBNEW
-         // sends EESCHEMA a command
-@@ -185,6 +197,15 @@
-         if( frame->DrawPanel
-             && frame->LoadOneEEProject( fn.GetFullPath(), false ) <= 0 )
-             frame->DrawPanel->Refresh( true );
-+	else {
-+	    if (plot_only) {
-+		WinEDA_PlotPSFrame* Ps_frame = new WinEDA_PlotPSFrame( frame );
-+		wxCommandEvent dummy;
++    if( argc > 1 && !wxStrcmp( argv[1], wxT( "--plot" ) ) )
++	PlotOnly( this );
 +
-+		Ps_frame->OnPlotPsAllExecuteClick(dummy);
-+		exit(0);
-+	    }
-+	}
-     }
-     else
+     if( m_Checker && m_Checker->IsAnotherRunning() )
      {
-@@ -194,5 +215,8 @@
-             frame->DrawPanel->Refresh( TRUE );
-     }
- 
-+    if (plot_only)
-+	exit(1);
-+
-     return TRUE;
- }
+         if( !IsOK( NULL, _( "Eeschema is already running, Continue?" ) ) )

Added: trunk/gta02-core/kicad-patches/fix-pinbypin-button-type.patch
===================================================================
--- trunk/gta02-core/kicad-patches/fix-pinbypin-button-type.patch	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/fix-pinbypin-button-type.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,22 @@
+The pin-by-pin button in the component editor was a push button, not 
+a check button. It therefore worked as a toggle, as intended, but
+lacked visual feedback.
+
+- Werner
+
+---
+
+Index: kicad/eeschema/tool_lib.cpp
+===================================================================
+--- kicad.orig/eeschema/tool_lib.cpp	2009-05-20 22:40:19.000000000 -0300
++++ kicad/eeschema/tool_lib.cpp	2009-05-20 22:40:42.000000000 -0300
+@@ -214,7 +214,8 @@
+         m_HToolBar->AddSeparator();
+         m_HToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, wxEmptyString,
+                             wxBitmap( pin2pin_xpm ),
+-                            _( "Edit pins part per part (Carefully use!)" ) );
++                            _( "Edit pins part per part (Carefully use!)" ),
++			    wxITEM_CHECK );
+         m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
+ 
+         // after adding the buttons to the toolbar, must call Realize() to reflect the changes

Modified: trunk/gta02-core/kicad-patches/fix-pinedit-collision.patch
===================================================================
--- trunk/gta02-core/kicad-patches/fix-pinedit-collision.patch	2009-05-20 10:07:01 UTC (rev 5010)
+++ trunk/gta02-core/kicad-patches/fix-pinedit-collision.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -2,20 +2,24 @@
 KiCad warns about pin locations being occupied even if the conflicting
 pin is in a different unit.
 
-This may to be unnecessary. This patch suppresses the warning if the
-pins are in different units.
+I've attached a patch that suppresses the warning if the pins are in
+different units and if we're in pin-by-pin mode, and thus conflicts
+can neither occur at the GUI nor in the underlying model.
 
 - Werner
 
+---
+
 Index: kicad/eeschema/pinedit.cpp
 ===================================================================
---- kicad.orig/eeschema/pinedit.cpp	2009-05-20 05:21:13.000000000 -0300
-+++ kicad/eeschema/pinedit.cpp	2009-05-20 05:35:53.000000000 -0300
-@@ -193,6 +193,9 @@
+--- kicad.orig/eeschema/pinedit.cpp	2009-05-20 22:30:20.000000000 -0300
++++ kicad/eeschema/pinedit.cpp	2009-05-20 22:30:58.000000000 -0300
+@@ -193,6 +193,10 @@
              continue;
          if( newpos != Pin->m_Pos )
              continue;
-+        if( Pin->m_Unit != CurrentPin->m_Unit &&
++        if( g_EditPinByPinIsOn &&
++	    Pin->m_Unit != CurrentPin->m_Unit &&
 +	    Pin->m_Unit && CurrentPin->m_Unit )
 +            continue;
          if( Pin->m_Flags )

Added: trunk/gta02-core/kicad-patches/gerbview-export-arcs.patch
===================================================================
--- trunk/gta02-core/kicad-patches/gerbview-export-arcs.patch	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/gerbview-export-arcs.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,102 @@
+Work in progress.
+
+Add support for exporting arcs to gerbview.
+
+Index: kicad/gerbview/export_to_pcbnew.cpp
+===================================================================
+--- kicad.orig/gerbview/export_to_pcbnew.cpp	2009-05-19 18:57:52.000000000 -0300
++++ kicad/gerbview/export_to_pcbnew.cpp	2009-05-19 20:49:23.000000000 -0300
+@@ -94,7 +94,7 @@
+ 
+     fprintf( File, "$SETUP\n" );
+     sprintf( text, "InternalUnit %f INCH\n", 1.0 / PCB_INTERNAL_UNIT );
+-    fprintf( File, text );
++    fprintf( File, "%s", text );
+ 
+     Pcb->m_BoardSettings->m_CopperLayerCount = g_DesignSettings.m_CopperLayerCount;
+     fprintf( File, "Layers %d\n", g_DesignSettings.m_CopperLayerCount );
+@@ -165,6 +165,20 @@
+             drawitem->m_End   = track->m_End;
+             drawitem->m_Width = track->m_Width;
+ 
++	    if( track->m_Shape == S_ARC )
++	    {
++		double cx = -track->m_Param;
++		double cy = track->GetSubNet();
++		double a = atan2( track->m_Start.y-cy, track->m_Start.x-cx );
++		double b = atan2( track->m_End.y-cy, track->m_End.x-cx );
++
++		drawitem->m_Shape = S_ARC;
++		drawitem->m_Angle = (b-a)/M_PI*1800.0;
++		drawitem->m_End = drawitem->m_Start;
++		drawitem->m_Start.x = cx;
++		drawitem->m_Start.y = cy;
++	    }
++
+             pcb->Add( drawitem );
+         }
+         else
+@@ -198,6 +212,9 @@
+                 newtrack->SetLayer( pcb_layer_number );
+             }
+ 
++fprintf(stderr, "%d %d\n", track->m_Shape, newtrack->m_Shape);
++//if (newtrack->m_Shape == S_ARC_RECT)
++//  newtrack->m_Shape = S_ARC;
+             pcb->Add( newtrack );
+         }
+     }
+Index: kicad/gerbview/rs274d.cpp
+===================================================================
+--- kicad.orig/gerbview/rs274d.cpp	2009-05-19 19:38:42.000000000 -0300
++++ kicad/gerbview/rs274d.cpp	2009-05-19 19:39:24.000000000 -0300
+@@ -11,6 +11,9 @@
+ #include "pcbplot.h"
+ #include "protos.h"
+ 
++#undef D
++#define D(x)
++
+ #define IsNumber( x ) ( ( ( (x) >= '0' ) && ( (x) <='9' ) )   \
+                        || ( (x) == '-' ) || ( (x) == '+' )  || ( (x) == '.' ) )
+ 
+Index: kicad/gerbview/rs274x.cpp
+===================================================================
+--- kicad.orig/gerbview/rs274x.cpp	2009-05-19 19:40:34.000000000 -0300
++++ kicad/gerbview/rs274x.cpp	2009-05-19 19:40:41.000000000 -0300
+@@ -10,6 +10,9 @@
+ #include "pcbplot.h"
+ #include "protos.h"
+ 
++#undef D
++#define D(x)
++
+ #define CODE( x, y ) ( ( (x) << 8 ) + (y) )
+ 
+ enum RS274X_PARAMETERS {
+Index: kicad/gerbview/tracepcb.cpp
+===================================================================
+--- kicad.orig/gerbview/tracepcb.cpp	2009-05-19 19:36:58.000000000 -0300
++++ kicad/gerbview/tracepcb.cpp	2009-05-19 19:37:04.000000000 -0300
+@@ -129,7 +129,7 @@
+         if( !(track->ReturnMaskLayer() & printmasklayer) )
+             continue;
+ 
+-        D(printf("D:%p\n", track );)
++        //D(printf("D:%p\n", track );)
+ 
+         if( track->GetNet() == 0 )  // StartPoint
+         {
+Index: kicad/gerbview/trpiste.cpp
+===================================================================
+--- kicad.orig/gerbview/trpiste.cpp	2009-05-19 19:36:58.000000000 -0300
++++ kicad/gerbview/trpiste.cpp	2009-05-19 19:37:15.000000000 -0300
+@@ -43,7 +43,7 @@
+         if( !(track->ReturnMaskLayer() & printmasklayer) )
+             continue;
+ 
+-        D(printf("D:%p\n", track );)
++        //D(printf("D:%p\n", track );)
+ 
+         if( dcode_hightlight == track->GetNet() && track->GetLayer()==layer )
+             Trace_Segment( panel, DC, track, draw_mode | GR_SURBRILL );

Added: trunk/gta02-core/kicad-patches/old-boost-build-fix.patch
===================================================================
--- trunk/gta02-core/kicad-patches/old-boost-build-fix.patch	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/old-boost-build-fix.patch	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,30 @@
+If an old version of Boost is installed, KiCad will fail to compile
+because BOOST_REVERSE_FOREACH is not defined. This quick and dirty
+patch avoids the build error but may cause other problems.
+
+http://tech.groups.yahoo.com/group/kicad-devel/message/2574
+
+- Werner
+
+---
+
+Index: kicad/cvpcb/cvframe.cpp
+===================================================================
+--- kicad.orig/cvpcb/cvframe.cpp	2009-05-15 15:53:38.000000000 -0300
++++ kicad/cvpcb/cvframe.cpp	2009-05-15 15:57:30.000000000 -0300
+@@ -369,6 +369,7 @@
+     if( selection < 0 )
+         selection = m_ListCmp->GetCount() - 1;
+ 
++#if 0
+     BOOST_REVERSE_FOREACH( COMPONENT& component, m_components )
+     {
+         if( component.m_Module.IsEmpty() && ii < selection )
+@@ -378,6 +379,7 @@
+         }
+         ii--;
+     }
++#endif
+ 
+     wxBell();
+     m_ListCmp->SetSelection( selection );

Added: trunk/gta02-core/kicad-patches/series
===================================================================
--- trunk/gta02-core/kicad-patches/series	                        (rev 0)
+++ trunk/gta02-core/kicad-patches/series	2009-05-21 02:16:19 UTC (rev 5011)
@@ -0,0 +1,19 @@
+# DON'T USE THE FOLLOWING PATCH UNLESS DESPERATE
+old-boost-build-fix.patch
+
+# eeschema --plot extension, pending
+eeschema-plot-only-mode.patch
+
+# pending work, will perhaps be implemented in an entirely different fashion
+##auto-overline-config.patch
+##auto-overline-screen.patch
+
+# pending
+fix-pinbypin-button-type.patch
+
+# under discussion
+fix-pinedit-collision.patch
+
+# Work in progress
+#drag-override.patch
+#gerbview-export-arcs.patch




More information about the commitlog mailing list