/* * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck * Copyright (C) 2012 KiCad Developers, see CHANGELOG.TXT for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, you may find one here: * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * or you may search the http://www.gnu.org website for the version 2 license, * or you may write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ #include DIALOG_SHIM::DIALOG_SHIM( wxWindow* aParent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxDialog( aParent, id, title, pos, size, style, name ) { // linux wxGTK needed this at one time to allow the ESCAPE key to close a wxDialog window. SetFocus(); } // our hashtable is an implementation secret, don't need or want it in a header file #include #include // EDA_RECT #include static RECT_MAP class_map; bool DIALOG_SHIM::Show( bool show ) { bool ret; const char* classname = typeid(*this).name(); // Show or hide the window. If hiding, save current position and size. // If showing, use previous position and size. if( show ) { ret = wxDialog::Show( show ); // classname is key, returns a zeroed out default EDA_RECT if none existed before. EDA_RECT r = class_map[ classname ]; if( r.GetSize().x != 0 && r.GetSize().y != 0 ) SetSize( r.GetPosition().x, r.GetPosition().y, r.GetSize().x, r.GetSize().y, 0 ); } else { // Save the dialog's position & size before hiding, using classname as key EDA_RECT r( wxDialog::GetPosition(), wxDialog::GetSize() ); class_map[ classname ] = r; ret = wxDialog::Show( show ); } return ret; } /* const wxSize& DIALOG_SHIM::GetLastSize() { const char* classname = typeid(*this).name(); return class_map[ classname ].GetSize(); } const wxPoint& DIALOG_SHIM::GetLastPosition() { const char* classname = typeid(*this).name(); return class_map[ classname ].GetPosition(); } */