Minor tweaks
This commit is contained in:
parent
2eed1a7207
commit
4709afd878
@ -1,259 +1,261 @@
|
||||
<?php
|
||||
/**
|
||||
* OpenSQLManager
|
||||
*
|
||||
* Free Database manager for Open Source Databases
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2012
|
||||
* @link https://github.com/aviat4ion/OpenSQLManager
|
||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
namespace OpenSQLManager;
|
||||
|
||||
/**
|
||||
* Widget for adding / Editing Connections
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @subpackage Widgets
|
||||
*/
|
||||
class Connection_Manager extends \wxFrame {
|
||||
|
||||
const TXT_CONN_NAME = 1;
|
||||
const COMBO_DB_TYPE = 2;
|
||||
const FILE_DB_FILE = 3;
|
||||
const TXT_DB_NAME = 4;
|
||||
const TXT_DB_HOST = 5;
|
||||
const TXT_DB_PORT = 6;
|
||||
const TXT_DB_USER = 7;
|
||||
const TXT_DB_PASS = 8;
|
||||
const BTN_TEST = 9;
|
||||
|
||||
/**
|
||||
* Array of fields for Connection Information manipulation
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fields = array();
|
||||
|
||||
/**
|
||||
* Create the window
|
||||
*
|
||||
* @param wxWindow
|
||||
* @param mixed
|
||||
*/
|
||||
public function __construct($parent, $params = array())
|
||||
{
|
||||
parent::__construct($parent, 32, "Connection Manager", wxDefaultPosition);
|
||||
|
||||
// Layout the window
|
||||
$this->_layout($params);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Layout fields on the form
|
||||
*
|
||||
* @param array
|
||||
*/
|
||||
protected function _layout($params)
|
||||
{
|
||||
$container_sizer = new \wxBoxSizer(wxVERTICAL);
|
||||
|
||||
// Use a table-like sizer
|
||||
$sizer = new \wxFlexGridSizer(2, 5, 5);
|
||||
$sizer->SetHGap(5);
|
||||
$sizer->SetVGap(5);
|
||||
$sizer->SetFlexibleDirection(wxBOTH);
|
||||
$sizer->AddGrowableCol(0, 1);
|
||||
$sizer->AddGrowableCol(1, 1);
|
||||
|
||||
$db_types = $this->get_available_dbs();
|
||||
|
||||
if ($db_types === FALSE)
|
||||
{
|
||||
error("No valid databases set up in PHP");
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the controls
|
||||
// label => control
|
||||
$this->fields = array(
|
||||
'Connection Name' => new \wxTextCtrl($this, self::TXT_CONN_NAME),
|
||||
'Database Type' => $choice = new \wxChoice(),
|
||||
'Database File' => new \wxFilePickerCtrl($this, self::FILE_DB_FILE, wxEmptyString, "Select the database file", '*.*'),
|
||||
'Database Name' => new \wxTextCtrl($this, self::TXT_DB_NAME),
|
||||
'Host' => new \wxTextCtrl($this, self::TXT_DB_HOST),
|
||||
'Port' => new \wxTextCtrl($this, self::TXT_DB_PORT),
|
||||
'User' => new \wxTextCtrl($this, self::TXT_DB_USER),
|
||||
'Password' => new \wxTextCtrl($this, self::TXT_DB_PASS)
|
||||
);
|
||||
|
||||
$choice->Create($this, self::COMBO_DB_TYPE, wxDefaultPosition, wxDefaultSize, $db_types);
|
||||
|
||||
// Add the controls to the sizer
|
||||
$i = 1;
|
||||
foreach ($this->fields as $lbl => $ctrl)
|
||||
{
|
||||
$label = new \wxStaticText($this, $i, $lbl);
|
||||
|
||||
$sizer->Add($label, 0, wxALIGN_LEFT);
|
||||
$sizer->Add($ctrl, 1, wxALIGN_RIGHT|wxEXPAND);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
// Test Connection Button
|
||||
$test_button = new \wxButton($this, self::BTN_TEST, 'Test Connection');
|
||||
$test_button->Connect(wxEVT_COMMAND_BUTTON_CLICKED, array($this, 'test_conn'));
|
||||
|
||||
// Add Connection Button
|
||||
// TODO: Add connection button
|
||||
|
||||
// Add the buttons to the sizer
|
||||
$sizer->Add($test_button, 1, wxEXPAND);
|
||||
|
||||
// Add the sizer to the window
|
||||
// Add it inside of another sizer for padding.
|
||||
$container_sizer->Add($sizer, 1, wxALL|wxEXPAND, 10);
|
||||
$this->SetSizer($container_sizer);
|
||||
$this->Layout();
|
||||
|
||||
// Autosize the window to fit the controls
|
||||
$this->Fit();
|
||||
$this->CenterOnScreen(wxBOTH);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Get the list of available database types
|
||||
*
|
||||
* return array
|
||||
*/
|
||||
protected function get_available_dbs()
|
||||
{
|
||||
$drivers = array("");
|
||||
|
||||
$pdo_drivers = \pdo_drivers();
|
||||
|
||||
// Add PDO drivers
|
||||
foreach ($pdo_drivers as &$d)
|
||||
{
|
||||
// Skip sqlite2 as opposed to sqlite3
|
||||
if ($d === 'sqlite2' && (in_array('sqlite', $pdo_drivers) || in_array('sqlite3', $pdo_drivers)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Use the ibase_functions over PDO::Firebird, at least for now
|
||||
if ($d === 'firebird')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Replace default capitalization with something that looks better.
|
||||
$d = str_replace("sql", "SQL", $d);
|
||||
$d = str_ireplace("pg", "Postgre", $d);
|
||||
$d = str_ireplace("odbc", "ODBC", $d);
|
||||
$d = ucfirst($d);
|
||||
|
||||
$drivers[] = $d;
|
||||
}
|
||||
|
||||
// Add firebird support, if exists
|
||||
if (function_exists('fbird_connect'))
|
||||
{
|
||||
$drivers[] = "Firebird";
|
||||
}
|
||||
|
||||
sort($drivers);
|
||||
|
||||
return $drivers;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Set defaults for new database type
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function change_db()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test a db connection, and display a popup with the result
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function test_conn()
|
||||
{
|
||||
// Get the connection parameters
|
||||
$params = $this->_get_vals();
|
||||
|
||||
// Smart alek error for smart alek behavior
|
||||
if (empty($params->type))
|
||||
{
|
||||
error("You need to select the correct database type");
|
||||
return;
|
||||
}
|
||||
|
||||
// Catch connection exceptions, and
|
||||
// display the error message to the
|
||||
// user so they can edit the db
|
||||
// parameters
|
||||
try
|
||||
{
|
||||
new \Query_Builder($params);
|
||||
}
|
||||
catch (\PDOException $e)
|
||||
{
|
||||
error("Error connecting to database: \n\n" . $e->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
// Successful Connection?
|
||||
// Tell the user!
|
||||
alert("Successfully Connected.");
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Get the values of the widgets in the window
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
private function _get_vals()
|
||||
{
|
||||
$params = new \stdClass();
|
||||
$fields =& $this->fields;
|
||||
|
||||
$types = $this->get_available_dbs();
|
||||
$type_id = $fields['Database Type']->GetSelection();
|
||||
$type = $types[$type_id];
|
||||
|
||||
$params->name = $fields['Connection Name']->GetValue();
|
||||
$params->type = $type;
|
||||
$params->file = $fields['Database File']->GetPath();
|
||||
$params->conn_db = $fields['Database Name']->GetValue();
|
||||
$params->host = $fields['Host']->GetValue();
|
||||
$params->port = $fields['Port']->GetValue();
|
||||
$params->user = $fields['User']->GetValue();
|
||||
$params->pass = $fields['Password']->GetValue();
|
||||
|
||||
return $params;
|
||||
}
|
||||
}
|
||||
|
||||
<?php
|
||||
/**
|
||||
* OpenSQLManager
|
||||
*
|
||||
* Free Database manager for Open Source Databases
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2012
|
||||
* @link https://github.com/aviat4ion/OpenSQLManager
|
||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
namespace OpenSQLManager;
|
||||
|
||||
/**
|
||||
* Widget for adding / Editing Connections
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @subpackage Widgets
|
||||
*/
|
||||
class Connection_Manager extends \wxFrame {
|
||||
|
||||
const TXT_CONN_NAME = 1;
|
||||
const COMBO_DB_TYPE = 2;
|
||||
const FILE_DB_FILE = 3;
|
||||
const TXT_DB_NAME = 4;
|
||||
const TXT_DB_HOST = 5;
|
||||
const TXT_DB_PORT = 6;
|
||||
const TXT_DB_USER = 7;
|
||||
const TXT_DB_PASS = 8;
|
||||
const BTN_TEST = 9;
|
||||
|
||||
/**
|
||||
* Array of fields for Connection Information manipulation
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fields = array();
|
||||
|
||||
/**
|
||||
* Create the window
|
||||
*
|
||||
* @param wxWindow
|
||||
* @param mixed
|
||||
*/
|
||||
public function __construct($parent, $params = array())
|
||||
{
|
||||
parent::__construct($parent, 32, "Connection Manager", wxDefaultPosition);
|
||||
|
||||
// Layout the window
|
||||
$this->_layout($params);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Layout fields on the form
|
||||
*
|
||||
* @param array
|
||||
*/
|
||||
protected function _layout($params)
|
||||
{
|
||||
$container_sizer = new \wxBoxSizer(wxVERTICAL);
|
||||
|
||||
// Use a table-like sizer
|
||||
$sizer = new \wxFlexGridSizer(2, 5, 5);
|
||||
$sizer->SetHGap(5);
|
||||
$sizer->SetVGap(5);
|
||||
$sizer->SetFlexibleDirection(wxBOTH);
|
||||
$sizer->AddGrowableCol(0, 1);
|
||||
$sizer->AddGrowableCol(1, 1);
|
||||
|
||||
$db_types = $this->get_available_dbs();
|
||||
|
||||
if ($db_types === FALSE)
|
||||
{
|
||||
error("No valid databases set up in PHP");
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the controls
|
||||
// label => control
|
||||
$this->fields = array(
|
||||
'Connection Name' => new \wxTextCtrl($this, self::TXT_CONN_NAME),
|
||||
'Database Type' => $choice = new \wxChoice(),
|
||||
'Database File' => new \wxFilePickerCtrl($this, self::FILE_DB_FILE, wxEmptyString, "Select the database file", '*.*'),
|
||||
'Database Name' => new \wxTextCtrl($this, self::TXT_DB_NAME),
|
||||
'Host' => new \wxTextCtrl($this, self::TXT_DB_HOST),
|
||||
'Port' => new \wxTextCtrl($this, self::TXT_DB_PORT),
|
||||
'User' => new \wxTextCtrl($this, self::TXT_DB_USER),
|
||||
'Password' => new \wxTextCtrl($this, self::TXT_DB_PASS)
|
||||
);
|
||||
|
||||
$choice->Create($this, self::COMBO_DB_TYPE, wxDefaultPosition, wxDefaultSize, $db_types);
|
||||
|
||||
// Add the controls to the sizer
|
||||
$i = 1;
|
||||
foreach ($this->fields as $lbl => $ctrl)
|
||||
{
|
||||
$label = new \wxStaticText($this, $i, $lbl);
|
||||
|
||||
$sizer->Add($label, 0, wxALIGN_LEFT);
|
||||
$sizer->Add($ctrl, 1, wxALIGN_RIGHT|wxEXPAND);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
// Test Connection Button
|
||||
$test_button = new \wxButton($this, self::BTN_TEST, 'Test Connection');
|
||||
$test_button->Connect(wxEVT_COMMAND_BUTTON_CLICKED, array($this, 'test_conn'));
|
||||
|
||||
// Add Connection Button
|
||||
// TODO: Add connection button
|
||||
|
||||
// Add the buttons to the sizer
|
||||
$sizer->Add($test_button, 1, wxEXPAND);
|
||||
|
||||
// Add the sizer to the window
|
||||
// Add it inside of another sizer for padding.
|
||||
$container_sizer->Add($sizer, 1, wxALL|wxEXPAND, 10);
|
||||
$this->SetSizer($container_sizer);
|
||||
$this->Layout();
|
||||
|
||||
// Autosize the window to fit the controls
|
||||
$this->Fit();
|
||||
$this->CenterOnScreen(wxBOTH);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Get the list of available database types
|
||||
*
|
||||
* return array
|
||||
*/
|
||||
protected function get_available_dbs()
|
||||
{
|
||||
$drivers = array("");
|
||||
|
||||
$pdo_drivers = \pdo_drivers();
|
||||
|
||||
// Add PDO drivers
|
||||
foreach ($pdo_drivers as &$d)
|
||||
{
|
||||
// Skip sqlite2 as opposed to sqlite3
|
||||
if ($d === 'sqlite2' && (in_array('sqlite', $pdo_drivers) || in_array('sqlite3', $pdo_drivers)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Use the ibase_functions over PDO::Firebird, at least for now
|
||||
if ($d === 'firebird')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Replace default capitalization with something that looks better.
|
||||
$d = str_replace("sql", "SQL", $d);
|
||||
$d = str_ireplace("pg", "Postgre", $d);
|
||||
$d = str_ireplace("odbc", "ODBC", $d);
|
||||
$d = ucfirst($d);
|
||||
|
||||
$drivers[] = $d;
|
||||
}
|
||||
|
||||
// Add firebird support, if exists
|
||||
if (function_exists('fbird_connect'))
|
||||
{
|
||||
$drivers[] = "Firebird";
|
||||
}
|
||||
|
||||
sort($drivers);
|
||||
|
||||
return $drivers;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Set defaults for new database type
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function change_db()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Test a db connection, and display a popup with the result
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function test_conn()
|
||||
{
|
||||
// Get the connection parameters
|
||||
$params = $this->_get_vals();
|
||||
|
||||
// Smart alek error for smart alek behavior
|
||||
if (empty($params->type))
|
||||
{
|
||||
error("You need to select the correct database type");
|
||||
return;
|
||||
}
|
||||
|
||||
// Catch connection exceptions, and
|
||||
// display the error message to the
|
||||
// user so they can edit the db
|
||||
// parameters
|
||||
try
|
||||
{
|
||||
new \Query_Builder($params);
|
||||
}
|
||||
catch (\PDOException $e)
|
||||
{
|
||||
error("Error connecting to database: \n\n" . $e->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
// Successful Connection?
|
||||
// Tell the user!
|
||||
alert("Successfully Connected.");
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Get the values of the widgets in the window
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
private function _get_vals()
|
||||
{
|
||||
$params = new \stdClass();
|
||||
$fields =& $this->fields;
|
||||
|
||||
$types = $this->get_available_dbs();
|
||||
$type_id = $fields['Database Type']->GetSelection();
|
||||
$type = (isset($types[$type_id]))
|
||||
? $types[$type_id]
|
||||
: "";
|
||||
|
||||
$params->name = $fields['Connection Name']->GetValue();
|
||||
$params->type = $type;
|
||||
$params->file = $fields['Database File']->GetPath();
|
||||
$params->conn_db = $fields['Database Name']->GetValue();
|
||||
$params->host = $fields['Host']->GetValue();
|
||||
$params->port = $fields['Port']->GetValue();
|
||||
$params->user = $fields['User']->GetValue();
|
||||
$params->pass = $fields['Password']->GetValue();
|
||||
|
||||
return $params;
|
||||
}
|
||||
}
|
||||
|
||||
// End of connection_manager.php
|
@ -1,189 +1,188 @@
|
||||
<?php
|
||||
/**
|
||||
* OpenSQLManager
|
||||
*
|
||||
* Free Database manager for Open Source Databases
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2012
|
||||
* @link https://github.com/aviat4ion/OpenSQLManager
|
||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
namespace OpenSQLManager;
|
||||
|
||||
/**
|
||||
* Main Window Class
|
||||
*
|
||||
* Creates and displays the main interface window
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @subpackage Windows
|
||||
*/
|
||||
class Main extends \wxFrame {
|
||||
|
||||
/**
|
||||
* Reference to settings instance
|
||||
*
|
||||
* @var Settings
|
||||
*/
|
||||
private $settings;
|
||||
|
||||
/**
|
||||
* Reference to connection sidebar instance
|
||||
*
|
||||
* @var Connection_Sidebar
|
||||
*/
|
||||
private $connection_sidebar;
|
||||
|
||||
/**
|
||||
* Reference to split window
|
||||
*
|
||||
* @var wxSplitterWindow
|
||||
*/
|
||||
protected $split;
|
||||
|
||||
/**
|
||||
* Create and display the main window on startup
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(NULL, NULL, PROGRAM_NAME, \wxDefaultPosition, new \wxSize(800, 600));
|
||||
|
||||
$this->_create_menu();
|
||||
|
||||
$sbar = $this->CreateStatusBar(2);
|
||||
$sbar->SetStatusText("OpenSQLManager");
|
||||
|
||||
$this->settings =& Settings::get_instance();
|
||||
|
||||
// Layout the interface
|
||||
$this->_main_layout();
|
||||
$this->SetThemeEnabled(TRUE);
|
||||
$this->CenterOnScreen(wxBOTH);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Some cleanup for when the main window is closed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
$this->Destroy();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Exits the wx loop
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function quit()
|
||||
{
|
||||
$this->Destroy();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Display About menu with version information
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function about()
|
||||
{
|
||||
$dlg = new \wxAboutDialogInfo();
|
||||
|
||||
$dlg->SetName(PROGRAM_NAME);
|
||||
$dlg->SetVersion(VERSION);
|
||||
|
||||
$dlg->SetCopyright("Copyright (c) ".date('Y')." Timothy J. Warren");
|
||||
|
||||
$dlg->SetWebSite('https://github.com/aviat4ion/OpenSQLManager','Fork on Github');
|
||||
|
||||
$dlg->SetLicense(file_get_contents(BASE_DIR . "/LICENSE"));
|
||||
|
||||
$dlg->SetDevelopers(array(
|
||||
'Timothy J. Warren',
|
||||
));
|
||||
|
||||
\wxAboutBox($dlg);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Layout the main interface
|
||||
* Create menus, hboxes, vboxs and other widgets
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function _main_layout()
|
||||
{
|
||||
// Set up the main menu
|
||||
$this->_create_menu();
|
||||
|
||||
// Create a split window
|
||||
$win = new \wxSplitterWindow($this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_THIN_SASH);
|
||||
$win->setSplitMode(wxSPLIT_HORIZONTAL);
|
||||
|
||||
// Add the connection sidebar
|
||||
$this->connection_sidebar =& Connection_Sidebar::get_instance($win);
|
||||
$win2 = new Data_Grid($win);
|
||||
|
||||
// Add the widgets to the split window
|
||||
$win->SplitVertically($this->connection_sidebar, $win2);
|
||||
$win->SetSashPosition(200, TRUE);
|
||||
|
||||
// Save a reference for later use
|
||||
$this->split =& $win;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create the menu for the program
|
||||
*
|
||||
* @return GtkMenuBar
|
||||
*/
|
||||
private function _create_menu()
|
||||
{
|
||||
// Menu Bar
|
||||
$menu_bar = new \wxMenuBar();
|
||||
|
||||
// Menu Bar Top Items
|
||||
$top_file_menu = new \wxMenu();
|
||||
$top_help_menu = new \wxMenu();
|
||||
|
||||
// File Menu
|
||||
{
|
||||
// Set up the quit item
|
||||
$top_file_menu->Append(2, "&Quit", "Exit the program");
|
||||
$this->Connect(2, wxEVT_COMMAND_MENU_SELECTED, array($this, "quit"));
|
||||
|
||||
// Add the top level menu to the menubar
|
||||
$menu_bar->Append($top_file_menu, "&File");
|
||||
}
|
||||
|
||||
// Help Menu
|
||||
{
|
||||
// Set up the about item
|
||||
$top_help_menu->Append(4, "&About", "About this program");
|
||||
$this->Connect(4, wxEVT_COMMAND_MENU_SELECTED, array($this, "about"));
|
||||
|
||||
// Add the top level menu to the menubar
|
||||
$menu_bar->Append($top_help_menu, "&Help");
|
||||
}
|
||||
|
||||
|
||||
$this->SetMenuBar($menu_bar);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* OpenSQLManager
|
||||
*
|
||||
* Free Database manager for Open Source Databases
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2012
|
||||
* @link https://github.com/aviat4ion/OpenSQLManager
|
||||
* @license http://philsturgeon.co.uk/code/dbad-license
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
namespace OpenSQLManager;
|
||||
|
||||
/**
|
||||
* Main Window Class
|
||||
*
|
||||
* Creates and displays the main interface window
|
||||
*
|
||||
* @package OpenSQLManager
|
||||
* @subpackage Windows
|
||||
*/
|
||||
class Main extends \wxFrame {
|
||||
|
||||
/**
|
||||
* Reference to settings instance
|
||||
*
|
||||
* @var Settings
|
||||
*/
|
||||
private $settings;
|
||||
|
||||
/**
|
||||
* Reference to connection sidebar instance
|
||||
*
|
||||
* @var Connection_Sidebar
|
||||
*/
|
||||
private $connection_sidebar;
|
||||
|
||||
/**
|
||||
* Reference to split window
|
||||
*
|
||||
* @var wxSplitterWindow
|
||||
*/
|
||||
protected $split;
|
||||
|
||||
/**
|
||||
* Create and display the main window on startup
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(NULL, NULL, PROGRAM_NAME, \wxDefaultPosition,new \wxSize(800, 480));
|
||||
$this->_create_menu();
|
||||
|
||||
$sbar = $this->CreateStatusBar(2);
|
||||
$sbar->SetStatusText("OpenSQLManager");
|
||||
|
||||
$this->settings =& Settings::get_instance();
|
||||
|
||||
// Layout the interface
|
||||
$this->_main_layout();
|
||||
$this->CenterOnScreen(wxBOTH);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Some cleanup for when the main window is closed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
$this->Destroy();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Exits the wx loop
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function quit()
|
||||
{
|
||||
$this->Destroy();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Display About menu with version information
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function about()
|
||||
{
|
||||
$dlg = new \wxAboutDialogInfo();
|
||||
|
||||
$dlg->SetName(PROGRAM_NAME);
|
||||
$dlg->SetVersion(VERSION);
|
||||
|
||||
$dlg->SetCopyright("Copyright (c) ".date('Y')." Timothy J. Warren");
|
||||
|
||||
$dlg->SetWebSite('https://github.com/aviat4ion/OpenSQLManager','Fork on Github');
|
||||
|
||||
$dlg->SetLicense(file_get_contents(BASE_DIR . "/LICENSE"));
|
||||
|
||||
$dlg->SetDevelopers(array(
|
||||
'Timothy J. Warren',
|
||||
));
|
||||
|
||||
\wxAboutBox($dlg);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Layout the main interface
|
||||
* Create menus, hboxes, vboxs and other widgets
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function _main_layout()
|
||||
{
|
||||
// Set up the main menu
|
||||
$this->_create_menu();
|
||||
|
||||
// Create a split window
|
||||
$win = new \wxSplitterWindow($this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_THIN_SASH);
|
||||
$win->setSplitMode(wxSPLIT_HORIZONTAL);
|
||||
|
||||
// Add the connection sidebar
|
||||
$this->connection_sidebar =& Connection_Sidebar::get_instance($win);
|
||||
$win2 = new Data_Grid($win);
|
||||
|
||||
// Add the widgets to the split window
|
||||
$win->SplitVertically($this->connection_sidebar, $win2);
|
||||
$win->SetSashPosition(200, TRUE);
|
||||
|
||||
// Save a reference for later use
|
||||
$this->split =& $win;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create the menu for the program
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function _create_menu()
|
||||
{
|
||||
// Menu Bar
|
||||
$menu_bar = new \wxMenuBar();
|
||||
|
||||
// Menu Bar Top Items
|
||||
$top_file_menu = new \wxMenu();
|
||||
$top_help_menu = new \wxMenu();
|
||||
|
||||
// File Menu
|
||||
{
|
||||
// Set up the quit item
|
||||
$top_file_menu->Append(2, "&Quit", "Exit the program");
|
||||
$this->Connect(2, wxEVT_COMMAND_MENU_SELECTED, array($this, "quit"));
|
||||
|
||||
// Add the top level menu to the menubar
|
||||
$menu_bar->Append($top_file_menu, "&File");
|
||||
}
|
||||
|
||||
// Help Menu
|
||||
{
|
||||
// Set up the about item
|
||||
$top_help_menu->Append(4, "&About", "About this program");
|
||||
$this->Connect(4, wxEVT_COMMAND_MENU_SELECTED, array($this, "about"));
|
||||
|
||||
// Add the top level menu to the menubar
|
||||
$menu_bar->Append($top_help_menu, "&Help");
|
||||
}
|
||||
|
||||
|
||||
$this->SetMenuBar($menu_bar);
|
||||
}
|
||||
}
|
||||
|
||||
// End of main.php
|
Reference in New Issue
Block a user