225 lines
5.1 KiB
PHP
225 lines
5.1 KiB
PHP
<?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 https://timshomepage.net/dbaj.txt
|
|
*/
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
namespace OpenSQLManager;
|
|
|
|
/**
|
|
* Main Window Class
|
|
*
|
|
* Creates and displays the main interface window
|
|
*
|
|
* @package OpenSQLManager
|
|
* @subpackage Windows
|
|
*/
|
|
class Main extends \wxFrame {
|
|
|
|
const MAC_EXIT_ITEM = 100;
|
|
const MAC_ABOUT_ITEM = 101;
|
|
|
|
/**
|
|
* 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, OSM_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->__destruct();
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Display About menu with version information
|
|
*
|
|
* @return void
|
|
*/
|
|
public function about()
|
|
{
|
|
$dlg = new \wxAboutDialogInfo();
|
|
|
|
$dlg->SetName(OSM_PROGRAM_NAME);
|
|
$dlg->SetVersion(OSM_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(OSM_RESOURCE_DIR . "/LICENSE"));
|
|
|
|
$dlg->SetDevelopers(array(
|
|
'Timothy J. Warren',
|
|
));
|
|
|
|
\wxAboutBox($dlg);
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Loads data tabs for the selected database
|
|
*
|
|
* @param string $dbname
|
|
*/
|
|
public function load_tabs($dbname)
|
|
{
|
|
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
|
|
/**
|
|
* 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 Db_tabs($win);
|
|
$win2->add_tab('Test');
|
|
|
|
// 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_export_menu = new \wxMenu();
|
|
$top_help_menu = new \wxMenu();
|
|
|
|
// File Menu
|
|
{
|
|
// Set up the quit item
|
|
$top_file_menu->Append(wxID_EXIT, "&Quit\tCtrl+Q", "Exit the program");
|
|
$this->Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, array($this, "quit"));
|
|
|
|
|
|
|
|
// Add the top level menu to the menubar
|
|
$menu_bar->Append($top_file_menu, "&File");
|
|
}
|
|
|
|
// Export Menu
|
|
{
|
|
// Add the top level menu to the menubar
|
|
$menu_bar->Append($top_export_menu, "E&xport");
|
|
}
|
|
|
|
// Help Menu
|
|
{
|
|
// Set up the about item
|
|
$top_help_menu->Append(wxID_ABOUT, "&About", "About this program");
|
|
$this->Connect(wxID_ABOUT, wxEVT_COMMAND_MENU_SELECTED, array($this, "about"));
|
|
|
|
// Add the top level menu to the menubar
|
|
$menu_bar->Append($top_help_menu, "&Help");
|
|
|
|
}
|
|
|
|
// For OS X, duplicate the Quit and About menu items
|
|
if (PLATFORM == wxOS_MAC_OSX_DARWIN)
|
|
{
|
|
// Quit
|
|
$top_file_menu->Append(self::MAC_EXIT_ITEM, "&Quit\tCtrl+Q", "Exit the program");
|
|
$this->Connect(self::MAC_EXIT_ITEM, wxEVT_COMMAND_MENU_SELECTED, array($this, "quit"));
|
|
|
|
// About
|
|
$top_help_menu->Append(self::MAC_ABOUT_ITEM, "&About", "About this program");
|
|
$this->Connect(self::MAC_ABOUT_ITEM, wxEVT_COMMAND_MENU_SELECTED, array($this, "about"));
|
|
}
|
|
|
|
$this->SetMenuBar($menu_bar);
|
|
}
|
|
}
|
|
|
|
// End of main.php
|