kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #00246
[patch 1/1] kicad-tree-newfile.patch
-
To:
kicad-devel@xxxxxxxxxxxxxxx
-
From:
DELIZY Florian <florian.delizy@...>
-
Date:
Tue, 24 Apr 2007 23:39:53 +0200
-
User-agent:
Icedove 1.5.0.10 (X11/20070328)
(resend, again due to dos2unix problems)
This patch adds the ability to create, rename, delete files from the
project editor
new events are also bound to Python:
kicad::RenameFile => the callback is invoked with a tuple as parameter
containing
the old file name and the new one
kicad::NewFile => callback is invoked with the new file name as parameter
kicad::DeleteFile => callback is invoked with the file name as parameter
---
bitmaps/new_cvpcb.xpm | 106 +++++++++++++++++++++
bitmaps/new_gerb.xpm | 97 +++++++++++++++++++
bitmaps/new_pcb.xpm | 54 ++++++++++
bitmaps/new_python.xpm | 131 ++++++++++++++++++++++++++
bitmaps/new_sch.xpm | 85 +++++++++++++++++
bitmaps/new_txt.xpm | 97 +++++++++++++++++++
include/id.h | 9 +
kicad/kicad.h | 39 +++++++
kicad/treeprj.cpp | 244 +++++++++++++++++++++++++++++++++++++++----------
9 files changed, 814 insertions(+), 48 deletions(-)
--------------060203020608010303070001 Content-Type: text/x-patch;
name="kicad-tree-newfile.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="kicad-tree-newfile.patch"
Subject: [patch @num@/@total@] @name@
This patch adds the ability to create, rename, delete files from the project editor
new events are also bound to Python:
kicad::RenameFile => the callback is invoked with a tuple as parameter containing
the old file name and the new one
kicad::NewFile => callback is invoked with the new file name as parameter
kicad::DeleteFile => callback is invoked with the file name as parameter
---
bitmaps/new_cvpcb.xpm | 106 +++++++++++++++++++++
bitmaps/new_gerb.xpm | 97 +++++++++++++++++++
bitmaps/new_pcb.xpm | 54 ++++++++++
bitmaps/new_python.xpm | 131 ++++++++++++++++++++++++++
bitmaps/new_sch.xpm | 85 +++++++++++++++++
bitmaps/new_txt.xpm | 97 +++++++++++++++++++
include/id.h | 9 +
kicad/kicad.h | 39 +++++++
kicad/treeprj.cpp | 244 +++++++++++++++++++++++++++++++++++++++----------
9 files changed, 814 insertions(+), 48 deletions(-)
Index: kicad-dev/include/id.h
===================================================================
--- kicad-dev.orig/include/id.h 2007-04-24 22:41:01.000000000 +0200
+++ kicad-dev/include/id.h 2007-04-24 22:41:14.000000000 +0200
@@ -11,6 +11,15 @@
ID_PROJECT_TXTEDIT,
ID_PROJECT_TREE_REFRESH,
ID_PROJECT_RUNPY,
+ ID_PROJECT_NEWFILE,
+ ID_PROJECT_NEWSCH,
+ ID_PROJECT_NEWBRD,
+ ID_PROJECT_NEWPY,
+ ID_PROJECT_NEWGERBER,
+ ID_PROJECT_NEWTXT,
+ ID_PROJECT_NEWNET,
+ ID_PROJECT_DELETE,
+
ID_MAIN_COMMAND,
ID_TO_EDITOR,
ID_TO_EESCHEMA,
Index: kicad-dev/kicad/kicad.h
===================================================================
--- kicad-dev.orig/kicad/kicad.h 2007-04-24 22:41:01.000000000 +0200
+++ kicad-dev/kicad/kicad.h 2007-04-24 22:41:14.000000000 +0200
@@ -6,6 +6,7 @@
#define KICAD_H
#include <wx/treectrl.h>
+#include <vector>
/* Message de presentation */
eda_global wxString g_Main_Title
@@ -71,27 +72,63 @@
DECLARE_EVENT_TABLE()
};
+// Order of this enum changes AddFile() internal working
+// please update both
+enum TreeFileType {
+ TREE_PROJECT = 1,
+ TREE_SCHEMA,
+ TREE_PCB,
+ TREE_PY,
+ TREE_GERBER,
+ TREE_PDF,
+ TREE_TXT,
+ TREE_NET,
+ TREE_UNKNOWN,
+ TREE_MAX,
+};
+
/* Fenetre d'affichage des fichiers du projet */
class WinEDA_PrjFrame : public wxSashLayoutWindow
{
+private:
+
+ std::vector< wxMenu* > m_ContextMenus;
+
+protected:
+ wxMenu * GetContextMenu( int type );
+ void NewFile( wxCommandEvent & event, enum TreeFileType type );
+
+ wxString GetFileExt( enum TreeFileType type ) const;
+
public:
WinEDA_MainFrame * m_Parent;
WinEDA_TreePrj * m_TreeProject;
wxTreeItemId m_root;
- wxMenu m_PyPopupMenu;
public:
WinEDA_PrjFrame(WinEDA_MainFrame * parent,
const wxPoint & pos, const wxSize & size );
~WinEDA_PrjFrame(void) {}
void OnSelect(wxTreeEvent & Event);
+ void OnRenameAsk(wxTreeEvent & Event);
+ void OnRename(wxTreeEvent & Event);
void OnRight(wxTreeEvent & Event);
void ReCreateTreePrj(void);
void OnTxtEdit(wxCommandEvent & event);
+ void OnDeleteFile(wxCommandEvent &event );
+
+ void OnNewFile(wxCommandEvent & event);
+ void OnNewSchFile(wxCommandEvent & event);
+ void OnNewBrdFile(wxCommandEvent & event);
+ void OnNewPyFile(wxCommandEvent & event);
+ void OnNewGerberFile(wxCommandEvent & event);
+ void OnNewTxtFile(wxCommandEvent & event);
+ void OnNewNetFile(wxCommandEvent & event);
+
#ifdef KICAD_PYTHON
void OnRunPy(wxCommandEvent & event);
#endif
Index: kicad-dev/kicad/treeprj.cpp
===================================================================
--- kicad-dev.orig/kicad/treeprj.cpp 2007-04-24 22:41:01.000000000 +0200
+++ kicad-dev/kicad/treeprj.cpp 2007-04-24 22:48:11.000000000 +0200
@@ -25,25 +25,16 @@
#include "../bitmaps/icon_txt.xpm"
#include "../bitmaps/icon_cvpcb_small.xpm"
#include "../bitmaps/unknown.xpm"
+#include "../bitmaps/new_python.xpm"
+#include "../bitmaps/new_txt.xpm"
+#include "../bitmaps/new_gerb.xpm"
+#include "../bitmaps/new_pcb.xpm"
+#include "../bitmaps/new_sch.xpm"
+#include "../bitmaps/new_cvpcb.xpm"
#include "id.h"
-// Order of this enum changes AddFile() internal working
-// please update both
-enum {
- TREE_PROJECT = 1,
- TREE_SCHEMA,
- TREE_PCB,
- TREE_PY,
- TREE_GERBER,
- TREE_PDF,
- TREE_TXT,
- TREE_NET,
- TREE_UNKNOWN,
- TREE_MAX,
-};
-
/***********************************************************/
/* Classes pour l'arbre de hierarchie de gestion du projet */
/***********************************************************/
@@ -71,8 +62,7 @@
const wxPoint & pos,
const wxSize & size ) :
wxSashLayoutWindow(parent, ID_LEFT_FRAME, pos, size,
- wxNO_BORDER|wxSW_3D),
- m_PyPopupMenu( _( "Python Script" ) )
+ wxNO_BORDER|wxSW_3D)
{
m_Parent = parent;
@@ -80,43 +70,140 @@
wxMenuItem *item;
#ifdef KICAD_PYTHON
- PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::RunScript" ) );
- PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::EditScript" ) );
- PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::TreeContextMenu" ) );
- PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::TreeAddFile" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::RunScript" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::EditScript" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::TreeContextMenu" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::TreeAddFile" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::NewFile" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::DeleteFile" ) );
+ PyHandler::GetInstance()->DeclareEvent( wxT( "kicad::RenameFile" ) );
+#endif
+
+ for ( int i = 0; i < TREE_MAX; i++ ) m_ContextMenus.push_back( new wxMenu() );
+
+ // Python script context menu:
- item = new wxMenuItem(&m_PyPopupMenu, ID_PROJECT_RUNPY,
+ wxMenu * menu = m_ContextMenus[TREE_PY];
+
+#ifdef KICAD_PYTHON
+ item = new wxMenuItem(menu, ID_PROJECT_RUNPY,
_("&Run"),
_("Run the Python Script") );
item->SetBitmap( icon_python_small_xpm );
- m_PyPopupMenu.Append( item );
+ menu->Append( item );
#endif
- item = new wxMenuItem(&m_PyPopupMenu, ID_PROJECT_TXTEDIT,
+ item = new wxMenuItem(menu, ID_PROJECT_TXTEDIT,
_("&Edit in a text editor"),
_("Edit the Python Script in a Text Editor") );
item->SetBitmap( icon_txt_xpm );
- m_PyPopupMenu.Append( item );
+ menu->Append( item );
+
+ // New files context menu:
+ menu = m_ContextMenus[TREE_PROJECT];
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWSCH, _("&New Schematic"), _("Create a New Schematic File") );
+ item->SetBitmap( new_sch_xpm );
+ menu->Append( item );
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWBRD, _("&New PCB"), _("Create a New PCB File") );
+ item->SetBitmap( new_pcb_xpm );
+ menu->Append( item );
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWGERBER, _("&New File Gerber"), _("Create a New Gerber File") );
+ item->SetBitmap( new_gerb_xpm );
+ menu->Append( item );
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWNET, _("&New Netlist"), _("Create a New Netlist") );
+ item->SetBitmap( new_cvpcb_xpm );
+ menu->Append( item );
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWPY, _("&New Python Script"), _("Create a New Python Script") );
+ item->SetBitmap( new_python_xpm );
+ menu->Append( item );
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWTXT, _("&New Text File"), _("Create a New Txt File") );
+ item->SetBitmap( new_txt_xpm );
+ menu->Append( item );
+
+ item = new wxMenuItem(menu, ID_PROJECT_NEWFILE, _("&New File"), _("Create a New File") );
+ item->SetBitmap( new_xpm );
+ menu->Append( item );
+
+
+ // Delete file menu command:
+ for ( int i = TREE_PROJECT + 1; i < TREE_MAX ; i++ )
+ {
+ menu = m_ContextMenus[i];
+ item = new wxMenuItem(menu, ID_PROJECT_DELETE, _("&Delete File"), _("Delete the File") );
+ item->SetBitmap( delete_xpm );
+ menu->Append( item );
+ }
+
ReCreateTreePrj();
}
+wxMenu * WinEDA_PrjFrame::GetContextMenu( int type ) { return m_ContextMenus[type]; }
+
BEGIN_EVENT_TABLE(WinEDA_PrjFrame, wxSashLayoutWindow)
+
+ EVT_TREE_BEGIN_LABEL_EDIT(ID_PROJECT_TREE, WinEDA_PrjFrame::OnRenameAsk )
+ EVT_TREE_END_LABEL_EDIT(ID_PROJECT_TREE, WinEDA_PrjFrame::OnRename )
EVT_TREE_ITEM_ACTIVATED(ID_PROJECT_TREE, WinEDA_PrjFrame::OnSelect)
EVT_TREE_ITEM_RIGHT_CLICK(ID_PROJECT_TREE, WinEDA_PrjFrame::OnRight)
EVT_MENU(ID_PROJECT_TXTEDIT, WinEDA_PrjFrame::OnTxtEdit)
+ EVT_MENU(ID_PROJECT_NEWFILE, WinEDA_PrjFrame::OnNewFile)
+ EVT_MENU(ID_PROJECT_NEWSCH, WinEDA_PrjFrame::OnNewSchFile)
+ EVT_MENU(ID_PROJECT_NEWBRD, WinEDA_PrjFrame::OnNewBrdFile)
+ EVT_MENU(ID_PROJECT_NEWPY, WinEDA_PrjFrame::OnNewPyFile)
+ EVT_MENU(ID_PROJECT_NEWGERBER, WinEDA_PrjFrame::OnNewGerberFile)
+ EVT_MENU(ID_PROJECT_NEWTXT, WinEDA_PrjFrame::OnNewTxtFile)
+ EVT_MENU(ID_PROJECT_NEWNET, WinEDA_PrjFrame::OnNewNetFile)
+ EVT_MENU(ID_PROJECT_DELETE, WinEDA_PrjFrame::OnDeleteFile)
+
+#ifdef KICAD_PYTHON
EVT_MENU(ID_PROJECT_RUNPY, WinEDA_PrjFrame::OnRunPy)
+#endif
END_EVENT_TABLE()
-void WinEDA_PrjFrame::AddFile( const wxString & name, int id )
+void WinEDA_PrjFrame::OnNewFile(wxCommandEvent & event) { NewFile( event, TREE_UNKNOWN ); }
+void WinEDA_PrjFrame::OnNewSchFile(wxCommandEvent & event) { NewFile( event, TREE_SCHEMA ); }
+void WinEDA_PrjFrame::OnNewBrdFile(wxCommandEvent & event) { NewFile( event, TREE_PCB ); }
+void WinEDA_PrjFrame::OnNewPyFile(wxCommandEvent & event) { NewFile( event, TREE_PY ); }
+void WinEDA_PrjFrame::OnNewGerberFile(wxCommandEvent & event) { NewFile( event, TREE_GERBER ); }
+void WinEDA_PrjFrame::OnNewTxtFile(wxCommandEvent & event) { NewFile( event, TREE_TXT ); }
+void WinEDA_PrjFrame::OnNewNetFile(wxCommandEvent & event) { NewFile( event, TREE_NET ); }
+
+void WinEDA_PrjFrame::NewFile( wxCommandEvent & event, enum TreeFileType type )
+{
+ wxString filename;
+ wxString mask = GetFileExt( type );
+
+ filename = EDA_FileSelector(_("Create New File:"),
+ wxGetCwd(), /* Chemin par defaut */
+ _("noname") + mask, /* nom fichier par defaut */
+ mask, /* extension par defaut */
+ mask, /* Masque d'affichage */
+ this,
+ wxFD_SAVE,
+ FALSE
+ );
+ if ( filename.IsEmpty() ) return;
+
+ #ifdef KICAD_PYTHON
+ PyHandler::GetInstance()->TriggerEvent( wxT("kicad::NewFile"), PyHandler::Convert(filename) );
+ #endif
+
+ wxFile( filename, wxFile::write );
+ m_Parent->OnRefresh( event );
+}
+
+wxString WinEDA_PrjFrame::GetFileExt( enum TreeFileType type ) const
{
-wxTreeItemId cellule;
-// Check the file type :
-int type = TREE_UNKNOWN;
-wxRegEx reg;
wxString extensions[] =
{
- wxT( "" ), // 0
+ wxT( "" ), // 0 is not used
wxT( ".pro" ), // TREE_PROJECT
g_SchExtBuffer, // TREE_SCHEMA
g_BoardExtBuffer, // TREE_PCB
@@ -124,16 +211,28 @@
g_GerberExtBuffer, // TREE_GERBER
wxT( ".pdf" ), // TREE_PDF
wxT( ".txt" ), // TREE_TXT
- wxT( ".net" ),
- wxT( "<END>" ), // Last
+ wxT( ".net" ), // TREE_NET
+ wxT( "" ), // TREE_UNKNOWN
};
- for ( int i = 0;; i++ )
+ if ( type < TREE_MAX ) return extensions[type];
+ return wxEmptyString;
+}
+
+void WinEDA_PrjFrame::AddFile( const wxString & name, int id )
+{
+wxTreeItemId cellule;
+// Check the file type :
+int type = TREE_UNKNOWN;
+wxRegEx reg;
+
+ for ( int i = TREE_PROJECT; i < TREE_MAX; i++ )
{
- if ( extensions[i] == wxT( "<END>" ) ) break;
- if ( extensions[i] == wxT( "" ) ) continue;
+ wxString ext = GetFileExt( (enum TreeFileType) i );
+
+ if ( ext == wxT( "" ) ) continue;
- reg.Compile( wxString::FromAscii( "^.*\\" ) + extensions[i] + wxString::FromAscii( "$" ), wxRE_ICASE );
+ reg.Compile( wxString::FromAscii( "^.*\\" ) + ext + wxString::FromAscii( "$" ), wxRE_ICASE );
if ( reg.Matches( name ) )
{
type = i;
@@ -220,15 +319,8 @@
PyHandler::GetInstance()->TriggerEvent( wxT("kicad::TreeContextMenu"), PyHandler::Convert( FullFileName ) );
#endif
- switch ( tree_id )
- {
- case TREE_PY:
- PopupMenu( &m_PyPopupMenu );
- break;
-
- default:
- break;
- }
+ wxMenu * menu = GetContextMenu( tree_id );
+ if ( menu ) PopupMenu( menu );
}
void WinEDA_MainFrame::OnRefresh(wxCommandEvent & event )
@@ -250,6 +342,24 @@
}
}
+void WinEDA_PrjFrame::OnDeleteFile(wxCommandEvent &event )
+{
+ TreePrjItemData * tree_data = (TreePrjItemData*) m_TreeProject->GetItemData(m_TreeProject->GetSelection());
+ wxString filename = tree_data->m_FileName;
+
+ wxMessageDialog dialog( this, _("Do you really want to delete ") + filename, _("Delete File")
+ , wxYES_NO | wxICON_QUESTION );
+
+ if ( wxID_YES == dialog.ShowModal() )
+ {
+ wxRemoveFile( filename );
+ m_Parent->OnRefresh( event );
+ #ifdef KICAD_PYTHON
+ PyHandler::GetInstance()->TriggerEvent( wxT("kicad::DeleteFile"), PyHandler::Convert( filename) );
+ #endif
+ }
+}
+
#ifdef KICAD_PYTHON
void WinEDA_PrjFrame::OnRunPy(wxCommandEvent & event )
{
@@ -260,6 +370,46 @@
}
#endif
+void WinEDA_PrjFrame::OnRenameAsk(wxTreeEvent & Event)
+{
+ TreePrjItemData * tree_data;
+ tree_data = (TreePrjItemData*)
+ m_TreeProject->GetItemData(m_TreeProject->GetSelection());
+
+ int tree_id = tree_data->m_Id;
+ if ( TREE_PROJECT == tree_id ) Event.Veto();
+}
+void WinEDA_PrjFrame::OnRename(wxTreeEvent & event)
+{
+ TreePrjItemData * tree_data;
+ tree_data = (TreePrjItemData*)
+ m_TreeProject->GetItemData(m_TreeProject->GetSelection());
+ int tree_id = tree_data->m_Id;
+ wxString filename = tree_data->m_FileName;
+ wxString newFile = event.GetLabel();
+
+ wxRegEx reg( wxString::FromAscii( "^.*\\" ) + GetFileExt( (enum TreeFileType) tree_id ) + wxString::FromAscii( "$" ), wxRE_ICASE );
+ if ( tree_id != TREE_UNKNOWN && !reg.Matches( newFile ) )
+ {
+ wxMessageDialog dialog( this, _("Changing file extension will change file type.\n Do you want to continue ?"), _("Rename File")
+ , wxYES_NO | wxICON_QUESTION );
+ if ( wxID_YES != dialog.ShowModal() )
+ {
+ event.Veto();
+ return;
+ }
+ }
+
+ wxRenameFile( filename, newFile );
+
+ #ifdef KICAD_PYTHON
+ boost::python::object param = boost::python::make_tuple( PyHandler::Convert( filename )
+ , PyHandler::Convert( newFile ) );
+ PyHandler::GetInstance()->TriggerEvent( wxT("kicad::RenameFile"), param );
+ #endif
+}
+
+
/**************************************************/
void WinEDA_PrjFrame::OnSelect(wxTreeEvent & Event)
/**************************************************/
@@ -333,7 +483,7 @@
WinEDA_TreePrj::WinEDA_TreePrj(WinEDA_PrjFrame * parent) :
wxTreeCtrl(parent, ID_PROJECT_TREE,
wxDefaultPosition, wxDefaultSize,
- wxTR_HAS_BUTTONS, wxDefaultValidator, wxT("EDATreeCtrl"))
+ wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS, wxDefaultValidator, wxT("EDATreeCtrl"))
{
m_Parent = parent;
// Make an image list containing small icons
Index: kicad-dev/bitmaps/new_cvpcb.xpm
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ kicad-dev/bitmaps/new_cvpcb.xpm 2007-04-24 22:41:14.000000000 +0200
@@ -0,0 +1,106 @@
+/* XPM */
+static char * new_cvpcb_xpm[] = {
+"16 16 87 1",
+" c None",
+". c #000000",
+"+ c #FEFEFE",
+"@ c #090909",
+"# c #EEEEEE",
+"$ c #F1F1F1",
+"% c #FBFBFB",
+"& c #FF7800",
+"* c #767676",
+"= c #161616",
+"- c #EFEFEF",
+"; c #AF5200",
+"> c #6A3200",
+", c #6B3200",
+"' c #984700",
+") c #C4C4C4",
+"! c #807F7F",
+"~ c #A88363",
+"{ c #D5D4D3",
+"] c #FFFCFA",
+"^ c #FFDFC2",
+"/ c #FFCFA5",
+"( c #FFB06A",
+"_ c #FFA04D",
+": c #FF9130",
+"< c #803C00",
+"[ c #ECECEC",
+"} c #232323",
+"| c #FFA352",
+"1 c #E4B58C",
+"2 c #D2CAC2",
+"3 c #FFDFC3",
+"4 c #FECFA5",
+"5 c #FEB06B",
+"6 c #FFA14E",
+"7 c #FF9230",
+"8 c #EBEBEB",
+"9 c #7D7D7D",
+"0 c #D48845",
+"a c #A98C73",
+"b c #817C78",
+"c c #585451",
+"d c #987B62",
+"e c #847364",
+"f c #C08959",
+"g c #EC8C39",
+"h c #100800",
+"i c #EAEAEA",
+"j c #B87941",
+"k c #957D69",
+"l c #666260",
+"m c #666666",
+"n c #282524",
+"o c #766454",
+"p c #AD784A",
+"q c #C2742F",
+"r c #E8E8E8",
+"s c #DA8A44",
+"t c #9E7A5A",
+"u c #746960",
+"v c #7B6F66",
+"w c #B6967C",
+"x c #92663E",
+"y c #C98040",
+"z c #EC8830",
+"A c #E7E7E7",
+"B c #E4944E",
+"C c #B8A595",
+"D c #E8E7E6",
+"E c #FFE2C9",
+"F c #FFD3AC",
+"G c #FFB471",
+"H c #FFA454",
+"I c #FF9436",
+"J c #803C02",
+"K c #E5E5E5",
+"L c #BBB8B6",
+"M c #FEFDFD",
+"N c #FFFEFE",
+"O c #FFE3CA",
+"P c #FFD3AD",
+"Q c #FFB472",
+"R c #FFA555",
+"S c #FF9537",
+"T c #803D02",
+"U c #E4E4E4",
+"V c #E3E3E3",
+" ............ ",
+".++++++++++@+. ",
+".+###$$$$$$@%+. ",
+".+###$$$&&&&*++.",
+".+###$$$&&&&@@=.",
+".+###$--;>,'.#).",
+".+#!~{]^/(_:<[).",
+"...}|1234567<8).",
+".+#90abcdefghi).",
+".+#!jklmnopqrr).",
+".+#!stuvwxyzhA).",
+"...}BCDEFGHIJK).",
+".+#9LMNOPQRSTU).",
+".+######;>,'.V).",
+".)))))))&&&&))).",
+" .............. "};
Index: kicad-dev/bitmaps/new_gerb.xpm
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ kicad-dev/bitmaps/new_gerb.xpm 2007-04-24 22:41:14.000000000 +0200
@@ -0,0 +1,97 @@
+/* XPM */
+static char * new_gerb_xpm[] = {
+"16 16 78 1",
+" c None",
+". c #000000",
+"+ c #FEFEFE",
+"@ c #090909",
+"# c #EEEEEE",
+"$ c #F1F1F1",
+"% c #FBFBFB",
+"& c #767676",
+"* c #424040",
+"= c #807F7F",
+"- c #454343",
+"; c #272625",
+"> c #7E7D7D",
+", c #818080",
+"' c #212020",
+") c #161616",
+"! c #A4A3A3",
+"~ c #C4C4C4",
+"{ c #766453",
+"] c #D4C9C0",
+"^ c #D9BFA8",
+"/ c #D37017",
+"( c #D5A07F",
+"_ c #E9B9A3",
+": c #A4A3A8",
+"< c #ECECEC",
+"[ c #737372",
+"} c #E4AB79",
+"| c #E8A367",
+"1 c #F68724",
+"2 c #A16A41",
+"3 c #E1C3C7",
+"4 c #A3A3A8",
+"5 c #EBEBEB",
+"6 c #6D6C6C",
+"7 c #DBBB9E",
+"8 c #F7841E",
+"9 c #DABEA5",
+"0 c #D6C6B7",
+"a c #846852",
+"b c #E6A787",
+"c c #A0A0A6",
+"d c #EAEAEA",
+"e c #B0631E",
+"f c #E6A66D",
+"g c #F28F36",
+"h c #C87226",
+"i c #A2A1B0",
+"j c #9B9AA8",
+"k c #9C9CA0",
+"l c #E8E8E8",
+"m c #E8B89F",
+"n c #957460",
+"o c #876D5E",
+"p c #A2898A",
+"q c #A58078",
+"r c #ABA5C2",
+"s c #C2C2D0",
+"t c #E7E7E7",
+"u c #E6C3BD",
+"v c #E2BFBD",
+"w c #DEBBBD",
+"x c #DAB8BD",
+"y c #DEA897",
+"z c #CD9D95",
+"A c #505068",
+"B c #E6E6E6",
+"C c #E5E5E5",
+"D c #A3A2A2",
+"E c #A09FA5",
+"F c #9F9FA5",
+"G c #9E9DA4",
+"H c #9D9DA4",
+"I c #9D9CA4",
+"J c #9C9BA3",
+"K c #C0C0C1",
+"L c #E4E4E4",
+"M c #E3E3E3",
+" ............ ",
+".++++++++++@+. ",
+".+###$$$$$$@%+. ",
+".+###$$$$$$@&++.",
+".+#**=-;>,,'@@).",
+".+#**=-;>,,!##~.",
+".+#,,{]^/(_:#<~.",
+".+#[[}}|1234#5~.",
+".+#667890abcdd~.",
+".+#,,efghijkll~.",
+".+#,,mnopqrstt~.",
+".+#,,uvwxyzABC~.",
+".+#DDEFGHIJKLL~.",
+".+########LMMM~.",
+".~~~~~~~~~~~~~~.",
+" .............. "};
Index: kicad-dev/bitmaps/new_pcb.xpm
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ kicad-dev/bitmaps/new_pcb.xpm 2007-04-24 22:41:14.000000000 +0200
@@ -0,0 +1,54 @@
+/* XPM */
+static char * new_pcb_xpm[] = {
+"16 16 35 1",
+" c None",
+". c #000000",
+"+ c #FEFEFE",
+"@ c #090909",
+"# c #EEEEEE",
+"$ c #F1F1F1",
+"% c #FBFBFB",
+"& c #FEFEFF",
+"* c #F9AB7F",
+"= c #9B9B9B",
+"- c #161616",
+"; c #F55A00",
+"> c #C4C4C4",
+", c #F4A67F",
+"' c #FFFFFF",
+") c #FAFAFF",
+"! c #F6F6FF",
+"~ c #F2F2FF",
+"{ c #EBEBFF",
+"] c #E7E7FF",
+"^ c #F9F9FF",
+"/ c #F1F1FF",
+"( c #EEEEFF",
+"_ c #EAEAFF",
+": c #E3E3FF",
+"< c #DFDFFF",
+"[ c #FBFBFF",
+"} c #F7F7FF",
+"| c #F0F0FF",
+"1 c #ECECFF",
+"2 c #E5E5FF",
+"3 c #E1E1FF",
+"4 c #DDDDFF",
+"5 c #E3957F",
+"6 c #4D4D4D",
+" ............ ",
+".++++++++++@+. ",
+".+###$$$$$$@%+. ",
+".+...........++.",
+".+.&**&&&&&&.=-.",
+".+.&;;;;;;;;.=>.",
+".+.&&&&&&&;,.=>.",
+".+.&;;;;;;';.=>.",
+".+.&**&)!~{].=>.",
+".+.&;;;;;;;;.=>.",
+".+.&**^/(_:<.=>.",
+".+.&;;;;;;';.=>.",
+".+.[}|1234;5.=>.",
+".+..........6=>.",
+".>>===========>.",
+" .............. "};
Index: kicad-dev/bitmaps/new_python.xpm
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ kicad-dev/bitmaps/new_python.xpm 2007-04-24 22:41:14.000000000 +0200
@@ -0,0 +1,131 @@
+/* XPM */
+static char * new_python_xpm[] = {
+"16 16 112 2",
+" c None",
+". c #000000",
+"+ c #FEFEFE",
+"@ c #090909",
+"# c #EEEEEE",
+"$ c #F1F1F1",
+"% c #FBFBFB",
+"& c #DAE2E8",
+"* c #CDDBE7",
+"= c #528DBD",
+"- c #3C7BB0",
+"; c #5689B2",
+"> c #DAE1E7",
+", c #E9EBED",
+"' c #767676",
+") c #5590C1",
+"! c #79A9D1",
+"~ c #709FC6",
+"{ c #3777AC",
+"] c #3672A4",
+"^ c #3C73A2",
+"/ c #B2C4D4",
+"( c #161616",
+"_ c #C1D2E1",
+": c #C2D3E2",
+"< c #BFD0DE",
+"[ c #BBCCDB",
+"} c #366E9D",
+"| c #467695",
+"1 c #C4C787",
+"2 c #F8E78A",
+"3 c #C4C4C4",
+"4 c #B7CDDF",
+"5 c #3881BD",
+"6 c #387EB7",
+"7 c #3779B0",
+"8 c #3775A9",
+"9 c #366F9F",
+"0 c #366B99",
+"a c #597F89",
+"b c #DACF62",
+"c c #FFDF50",
+"d c #EEEDEC",
+"e c #ECECEC",
+"f c #4287C0",
+"g c #387EB8",
+"h c #377AB1",
+"i c #3776AB",
+"j c #366D9B",
+"k c #386A94",
+"l c #728F8F",
+"m c #E6CF5B",
+"n c #FFD545",
+"o c #F8D774",
+"p c #EBEBEB",
+"q c #3A7FB9",
+"r c #377BB4",
+"s c #4E86B5",
+"t c #A8B890",
+"u c #AEBA7A",
+"v c #AEB674",
+"w c #AFB26D",
+"x c #DCC969",
+"y c #FED348",
+"z c #FFCA38",
+"A c #F8CE5E",
+"B c #EAEAEA",
+"C c #4784B7",
+"D c #3778AD",
+"E c #88A38E",
+"F c #FDEC63",
+"G c #FFE95C",
+"H c #FFE254",
+"I c #FFDA4A",
+"J c #FFD140",
+"K c #FFC836",
+"L c #FFC330",
+"M c #F7CA65",
+"N c #E8E8E8",
+"O c #C1D1DE",
+"P c #457EAE",
+"Q c #95AB84",
+"R c #FFE95B",
+"S c #FBDB5F",
+"T c #FBD55E",
+"U c #FACE56",
+"V c #FAC851",
+"W c #FAC249",
+"X c #E7E7E7",
+"Y c #B9C9D7",
+"Z c #D4CD6F",
+"` c #FFE152",
+" . c #FFD949",
+".. c #F4D881",
+"+. c #F1DA9F",
+"@. c #F1D494",
+"#. c #E9DFC6",
+"$. c #E6E6E6",
+"%. c #E5E5E5",
+"&. c #F8DD79",
+"*. c #FFD646",
+"=. c #FFCE3D",
+"-. c #FFC735",
+";. c #FFE5AA",
+">. c #FDCC64",
+",. c #ECD9AF",
+"'. c #E4E4E4",
+"). c #F0E8D3",
+"!. c #FBC94A",
+"~. c #FDBF36",
+"{. c #F9C150",
+"]. c #E3E3E3",
+" . . . . . . . . . . . . ",
+". + + + + + + + + + + @ + . ",
+". + # # # $ $ $ $ $ $ @ % + . ",
+". + # # & * = - ; > , @ ' + + . ",
+". + # # ) ! ~ { ] ^ / @ @ @ ( . ",
+". + # # _ : < [ } | 1 2 # # 3 . ",
+". + 4 5 6 7 8 9 0 a b c d e 3 . ",
+". + f g h i ] j k l m n o p 3 . ",
+". + q r s t u v w x y z A B 3 . ",
+". + C D E F G H I J K L M N 3 . ",
+". + O P Q R H S T U V W X X 3 . ",
+". + # Y Z ` ...+.@.#.$.$.%.3 . ",
+". + # # &.*.=.-.;.>.,.%.'.'.3 . ",
+". + # # # ).!.~.{.# '.].].].3 . ",
+". 3 3 3 3 3 3 3 3 3 3 3 3 3 3 . ",
+" . . . . . . . . . . . . . . "};
Index: kicad-dev/bitmaps/new_sch.xpm
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ kicad-dev/bitmaps/new_sch.xpm 2007-04-24 22:41:14.000000000 +0200
@@ -0,0 +1,85 @@
+/* XPM */
+static char * new_sch_xpm[] = {
+"16 16 66 1",
+" c None",
+". c #000000",
+"+ c #FEFEFE",
+"@ c #090909",
+"# c #EEEEEE",
+"$ c #F1F1F1",
+"% c #FBFBFB",
+"& c #FDFDFD",
+"* c #FCFCFC",
+"= c #DEDEDE",
+"- c #BFBFBF",
+"; c #767676",
+"> c #F0F0F0",
+", c #C1C1C1",
+"' c #F9F9F9",
+") c #161616",
+"! c #E2E2E2",
+"~ c #8F8F8F",
+"{ c #B1B1B1",
+"] c #6F3400",
+"^ c #FF7800",
+"/ c #848383",
+"( c #151515",
+"_ c #C4C4C4",
+": c #823D00",
+"< c #040404",
+"[ c #BDBDBD",
+"} c #ECECEC",
+"| c #E0E0E0",
+"1 c #8E8E8E",
+"2 c #AFAFAF",
+"3 c #753700",
+"4 c #F67400",
+"5 c #BCBCBC",
+"6 c #EBEBEB",
+"7 c #E5E5E5",
+"8 c #1A1A1A",
+"9 c #AEAEAE",
+"0 c #EAEAEA",
+"a c #ACACAC",
+"b c #BD5900",
+"c c #231000",
+"d c #636363",
+"e c #E7E7E7",
+"f c #D9D9D9",
+"g c #B9B9B9",
+"h c #E8E8E8",
+"i c #F4F4F4",
+"j c #AAAAAA",
+"k c #8A8A8A",
+"l c #BEBEBE",
+"m c #F37200",
+"n c #A8A8A8",
+"o c #888888",
+"p c #D6D6D6",
+"q c #E6E6E6",
+"r c #060606",
+"s c #B05300",
+"t c #1C0D00",
+"u c #626262",
+"v c #E3E3E3",
+"w c #BABABA",
+"x c #E4E4E4",
+"y c #8B8B8B",
+"z c #BBBBBB",
+"A c #9F9F9F",
+" ............ ",
+".++++++++++@+. ",
+".+#.......$@%+. ",
+".+.&&&&*=-.@;++.",
+".+.&>>>>,'..@@).",
+".+.&!~{]^/(.##_.",
+".+...:<^^^[.#}_.",
+".+.&|1234^5.#6_.",
+".+.78960a89.00_.",
+".+.(bcdeefg.hh_.",
+".+.i^43jkfl.ee_.",
+".+.i^m]nop5.q7_.",
+".+.rstuv!!w.xx_.",
+".+.w(yzwwwA.vv_.",
+".______________.",
+" .............. "};
Index: kicad-dev/bitmaps/new_txt.xpm
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ kicad-dev/bitmaps/new_txt.xpm 2007-04-24 22:41:14.000000000 +0200
@@ -0,0 +1,97 @@
+/* XPM */
+static char * new_txt_xpm[] = {
+"16 16 78 1",
+" c None",
+". c #000000",
+"+ c #FEFEFE",
+"@ c #090909",
+"# c #EEEEEE",
+"$ c #F1F1F1",
+"% c #FBFBFB",
+"& c #FBE291",
+"* c #F2CC84",
+"= c #E2B497",
+"- c #F3F3F3",
+"; c #767676",
+"> c #F3F2F1",
+", c #FCE135",
+"' c #FFC729",
+") c #F6AB5E",
+"! c #F1EBE9",
+"~ c #F0F0F0",
+"{ c #161616",
+"] c #FCE397",
+"^ c #FFDB35",
+"/ c #FFC340",
+"( c #EAA871",
+"_ c #EFEFEF",
+": c #C4C4C4",
+"< c #F6F6F6",
+"[ c #FDE24E",
+"} c #FFCC36",
+"| c #FCAC4C",
+"1 c #EEE2D9",
+"2 c #ECECEC",
+"3 c #FBE8B5",
+"4 c #FFE458",
+"5 c #FFCD55",
+"6 c #EDAA6D",
+"7 c #EBEBEB",
+"8 c #FEE473",
+"9 c #FFD861",
+"0 c #FDC16A",
+"a c #EADBD1",
+"b c #EDEDED",
+"c c #EAEAEA",
+"d c #F4E9CE",
+"e c #FEEB80",
+"f c #FFD871",
+"g c #EFB579",
+"h c #E9E9E9",
+"i c #E8E8E8",
+"j c #E3E3E6",
+"k c #DDDDE1",
+"l c #FDFDFD",
+"m c #FBDF8D",
+"n c #FFE389",
+"o c #FED58A",
+"p c #E7C8B2",
+"q c #E2E2E5",
+"r c #DEDEE2",
+"s c #DFDFE2",
+"t c #E7E7E7",
+"u c #FCFCFC",
+"v c #F7D090",
+"w c #FFEAB7",
+"x c #ECB989",
+"y c #E0E0E4",
+"z c #DCDCE1",
+"A c #E6E6E6",
+"B c #E5E5E5",
+"C c #E0B98F",
+"D c #E2AD8A",
+"E c #DBD1D1",
+"F c #DDDDE2",
+"G c #E0E0E3",
+"H c #E4E4E4",
+"I c #DBBDA9",
+"J c #E0DBDC",
+"K c #E1E1E6",
+"L c #E5E5E8",
+"M c #E3E3E3",
+" ............ ",
+".++++++++++@+. ",
+".+###$$$$$$@%+. ",
+".+###&*=-$$@;++.",
+".+##>,')!$~@@@{.",
+".+#~]^/(-___##:.",
+".+#<[}|1_####2:.",
+".+#3456~#####7:.",
+".+-890a222bccc:.",
+".+defghihjkhii:.",
+".lmnop7qkrsttt:.",
+".uvwxyzzAAAAAB:.",
+".uCDEFFGAABBHH:.",
+".lIJKL####HMMM:.",
+".::::::::::::::.",
+" .............. "};
--------------060203020608010303070001--