Rearrange about dialog; add easy bug report button

Fixes #3871
This commit is contained in:
Jon Evans 2020-02-20 21:17:32 -05:00
parent da1ba54188
commit ea733639ff
5 changed files with 281 additions and 181 deletions

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2010 Rafael Sokolowski <Rafael.Sokolowski@web.de>
* Copyright (C) 2017-2019 KiCad Developers, see CHANGELOG.TXT for contributors.
* Copyright (C) 2017-2020 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
@ -24,6 +24,7 @@
#include <config.h>
#include <kicad_curl/kicad_curl_easy.h>
#include <string>
// kicad_curl.h must be included before wx headers, to avoid
@ -57,13 +58,39 @@ extern std::string GetCurlLibVersion();
#include <bitmaps.h>
#include <build_version.h>
#include <html_messagebox.h>
#include <wx/uri.h>
#include "dialog_about.h"
/*
* DIALOG_ABOUT methods
*/
/// URL to launch a new issue with pre-populated description
wxString DIALOG_ABOUT::m_bugReportUrl =
"https://gitlab.com/kicad/code/kicad/issues/new?issue[description]=%s";
/// Issue template to use for reporting bugs (this should not be translated)
wxString DIALOG_ABOUT::m_bugReportTemplate =
"<!-- --------Before Creating a New Issue-----------\n"
"* Search the issue tracker to verify the issue has not already been reported.\n"
"* Keep report contents limited to the necessary information required to fix the issue.\n"
"\n"
"---------Add your issue details below----------- -->\n"
"\n"
"# Description\n"
"<!-- What is the current behavior and what is the expected behavior? -->\n"
"<!-- If the issue is visual/graphical, please attach screenshots of the problem. -->\n"
"\n"
"# Steps to reproduce\n"
"<!-- If there are multiple steps to reproduce it or it is a visual issue, then providing a"
"screen recording as an attachment to this report is recommended. -->\n"
"<!-- If this issue is specific to a project, please attach it to this issue. -->\n"
"1.\n"
"1.\n"
"# KiCad Version\n"
"\n"
"```\n"
"%s\n"
"```";
DIALOG_ABOUT::DIALOG_ABOUT( EDA_BASE_FRAME *aParent, ABOUT_APP_INFO& aAppInfo )
: DIALOG_ABOUT_BASE( aParent ), m_info( aAppInfo )
@ -71,6 +98,7 @@ DIALOG_ABOUT::DIALOG_ABOUT( EDA_BASE_FRAME *aParent, ABOUT_APP_INFO& aAppInfo )
wxASSERT( aParent != nullptr );
m_picInformation = KiBitmap( info_xpm );
m_picVersion = KiBitmap( recent_xpm );
m_picDevelopers = KiBitmap( preference_xpm );
m_picDocWriters = KiBitmap( editor_xpm );
m_picArtists = KiBitmap( palette_xpm );
@ -125,9 +153,14 @@ wxFlexGridSizer* DIALOG_ABOUT::createFlexGridSizer()
void DIALOG_ABOUT::createNotebooks()
{
createNotebookHtmlPage( m_auiNotebook, _( "Information" ), m_picInformation,
createNotebookHtmlPage( m_auiNotebook, _( "About" ), m_picInformation,
m_info.GetDescription() );
wxString version;
buildVersionInfoData( version, true );
createNotebookHtmlPage( m_auiNotebook, _( "Version" ), m_picVersion, version );
createNotebookPage( m_auiNotebook, _( "Developers" ) , m_picDevelopers,
m_info.GetDevelopers() );
createNotebookPage( m_auiNotebook, _( "Doc Writers" ), m_picDocWriters,
@ -614,7 +647,7 @@ void DIALOG_ABOUT::buildVersionInfoData( wxString& aMsg, bool aFormatHtml )
#endif
}
#if 0
void DIALOG_ABOUT::onShowVersionInfo( wxCommandEvent& event )
{
wxString msg_version;
@ -626,6 +659,7 @@ void DIALOG_ABOUT::onShowVersionInfo( wxCommandEvent& event )
dlg.AddHTML_Text( msg_version );
dlg.ShowModal();
}
#endif
void DIALOG_ABOUT::onCopyVersionInfo( wxCommandEvent& event )
@ -644,3 +678,19 @@ void DIALOG_ABOUT::onCopyVersionInfo( wxCommandEvent& event )
wxTheClipboard->Close();
m_btCopyVersionInfo->SetLabel( _( "Copied..." ) );
}
void DIALOG_ABOUT::onReportBug( wxCommandEvent& event )
{
wxString version;
buildVersionInfoData( version, false );
wxString message;
message.Printf( m_bugReportTemplate, version );
KICAD_CURL_EASY kcurl;
wxString url_string;
url_string.Printf( m_bugReportUrl, kcurl.Escape( message.ToStdString() ) );
wxLaunchDefaultApplication( url_string );
}

View File

@ -43,6 +43,7 @@ private:
// Icons for the various tabs of wxAuiNotebook
wxBitmap m_picInformation;
wxBitmap m_picVersion;
wxBitmap m_picDevelopers;
wxBitmap m_picDocWriters;
wxBitmap m_picArtists;
@ -53,6 +54,9 @@ private:
ABOUT_APP_INFO& m_info;
static wxString m_bugReportUrl;
static wxString m_bugReportTemplate;
public:
DIALOG_ABOUT( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aAppInfo );
~DIALOG_ABOUT();
@ -69,8 +73,9 @@ private:
void onHtmlLinkClicked( wxHtmlLinkEvent& event );
virtual void onCopyVersionInfo( wxCommandEvent& event ) override;
virtual void onShowVersionInfo( wxCommandEvent& event ) override;
void onCopyVersionInfo( wxCommandEvent& event ) override;
void onReportBug( wxCommandEvent& event ) override;
// Notebook pages
wxFlexGridSizer* createFlexGridSizer();

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version v3.8.0)
// C++ code generated with wxFormBuilder (version Oct 26 2018)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -49,13 +49,35 @@ DIALOG_ABOUT_BASE::DIALOG_ABOUT_BASE( wxWindow* parent, wxWindowID id, const wxS
bSizerTitle->Add( b_apptitleSizer, 10, wxALL|wxEXPAND, 5 );
wxBoxSizer* bSizer5;
bSizer5 = new wxBoxSizer( wxVERTICAL );
bSizerTitle->Add( 0, 0, 2, wxEXPAND, 5 );
bSizer5->Add( 0, 0, 1, wxEXPAND, 5 );
m_btCopyVersionInfo = new wxButton( this, wxID_COPY, _("&Copy Version Info"), wxDefaultPosition, wxDefaultSize, 0 );
m_btCopyVersionInfo->SetToolTip( _("Copy KiCad version info to the clipboard") );
bSizer5->Add( m_btCopyVersionInfo, 0, wxALL, 5 );
m_btReportBug = new wxButton( this, wxID_COPY, _("&Report Bug"), wxDefaultPosition, wxDefaultSize, 0 );
m_btReportBug->SetToolTip( _("Report a problem with KiCad") );
bSizer5->Add( m_btReportBug, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
bSizer5->Add( 0, 0, 1, wxEXPAND, 5 );
bSizerTitle->Add( bSizer5, 0, wxEXPAND, 10 );
bSizerTitle->Add( 0, 0, 1, wxEXPAND, 5 );
bSizerMain->Add( bSizerTitle, 0, wxEXPAND, 5 );
m_auiNotebook = new wxAuiNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_SCROLL_BUTTONS|wxAUI_NB_TAB_FIXED_WIDTH );
m_auiNotebook = new wxAuiNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_SCROLL_BUTTONS );
m_auiNotebook->SetMinSize( wxSize( 750,350 ) );
@ -64,14 +86,6 @@ DIALOG_ABOUT_BASE::DIALOG_ABOUT_BASE( wxWindow* parent, wxWindowID id, const wxS
wxBoxSizer* bSizerButtons;
bSizerButtons = new wxBoxSizer( wxHORIZONTAL );
m_btShowVersionInfo = new wxButton( this, wxID_COPY, _("&Show Version Info"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtons->Add( m_btShowVersionInfo, 0, wxALL, 5 );
m_btCopyVersionInfo = new wxButton( this, wxID_COPY, _("&Copy Version Info"), wxDefaultPosition, wxDefaultSize, 0 );
m_btCopyVersionInfo->SetToolTip( _("Copy KiCad version info to the clipboard") );
bSizerButtons->Add( m_btCopyVersionInfo, 0, wxALL, 5 );
m_btOk = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
m_btOk->SetDefault();
@ -85,14 +99,14 @@ DIALOG_ABOUT_BASE::DIALOG_ABOUT_BASE( wxWindow* parent, wxWindowID id, const wxS
this->Layout();
// Connect Events
m_btShowVersionInfo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ABOUT_BASE::onShowVersionInfo ), NULL, this );
m_btCopyVersionInfo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ABOUT_BASE::onCopyVersionInfo ), NULL, this );
m_btReportBug->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ABOUT_BASE::onReportBug ), NULL, this );
}
DIALOG_ABOUT_BASE::~DIALOG_ABOUT_BASE()
{
// Disconnect Events
m_btShowVersionInfo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ABOUT_BASE::onShowVersionInfo ), NULL, this );
m_btCopyVersionInfo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ABOUT_BASE::onCopyVersionInfo ), NULL, this );
m_btReportBug->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ABOUT_BASE::onReportBug ), NULL, this );
}

View File

@ -45,7 +45,7 @@
<property name="minimum_size">-1,-1</property>
<property name="name">DIALOG_ABOUT_BASE</property>
<property name="pos"></property>
<property name="size">750,471</property>
<property name="size">1000,500</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass"></property>
<property name="title">About</property>
@ -390,160 +390,25 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">10</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer5</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">2</property>
<property name="proportion">1</property>
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">2</property>
<object class="wxAuiNotebook" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">750,350</property>
<property name="moveable">1</property>
<property name="name">m_auiNotebook</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxAUI_NB_SCROLL_BUTTONS|wxAUI_NB_TAB_FIXED_WIDTH</property>
<property name="subclass"></property>
<property name="tab_ctrl_height">-1</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="uniform_bitmap_size"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_RIGHT|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizerButtons</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="current"></property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="disabled"></property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_COPY</property>
<property name="label">&amp;Show Version Info</property>
<property name="margins"></property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_btShowVersionInfo</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="pressed"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">onShowVersionInfo</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
@ -617,6 +482,172 @@
<event name="OnButtonClick">onCopyVersionInfo</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="current"></property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="disabled"></property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_COPY</property>
<property name="label">&amp;Report Bug</property>
<property name="margins"></property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_btReportBug</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="pressed"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip">Report a problem with KiCad</property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">onReportBug</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="0">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">2</property>
<object class="wxAuiNotebook" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">750,350</property>
<property name="moveable">1</property>
<property name="name">m_auiNotebook</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxAUI_NB_SCROLL_BUTTONS</property>
<property name="subclass"></property>
<property name="tab_ctrl_height">-1</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="uniform_bitmap_size"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_RIGHT|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizerButtons</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version v3.8.0)
// C++ code generated with wxFormBuilder (version Oct 26 2018)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -21,8 +21,8 @@
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/sizer.h>
#include <wx/aui/auibook.h>
#include <wx/button.h>
#include <wx/aui/auibook.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
@ -40,19 +40,19 @@ class DIALOG_ABOUT_BASE : public wxDialog
wxStaticText* m_staticTextCopyright;
wxStaticText* m_staticTextBuildVersion;
wxStaticText* m_staticTextLibVersion;
wxAuiNotebook* m_auiNotebook;
wxButton* m_btShowVersionInfo;
wxButton* m_btCopyVersionInfo;
wxButton* m_btReportBug;
wxAuiNotebook* m_auiNotebook;
wxButton* m_btOk;
// Virtual event handlers, overide them in your derived class
virtual void onShowVersionInfo( wxCommandEvent& event ) { event.Skip(); }
virtual void onCopyVersionInfo( wxCommandEvent& event ) { event.Skip(); }
virtual void onReportBug( wxCommandEvent& event ) { event.Skip(); }
public:
DIALOG_ABOUT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 750,471 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_ABOUT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 1000,500 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_ABOUT_BASE();
};