From 4709afd8782bd222e949b4ba8e0c6480746a8fb3 Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Fri, 1 Jun 2012 11:55:59 -0400 Subject: [PATCH] Minor tweaks --- sys/windows/connection_manager.php | 518 +++++++++++++++-------------- sys/windows/main.php | 375 +++++++++++---------- 2 files changed, 447 insertions(+), 446 deletions(-) diff --git a/sys/windows/connection_manager.php b/sys/windows/connection_manager.php index d976125..e5d1abc 100644 --- a/sys/windows/connection_manager.php +++ b/sys/windows/connection_manager.php @@ -1,259 +1,261 @@ -_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; - } -} - +_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 \ No newline at end of file diff --git a/sys/windows/main.php b/sys/windows/main.php index 0be5a85..1a428b0 100644 --- a/sys/windows/main.php +++ b/sys/windows/main.php @@ -1,189 +1,188 @@ -_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); - } -} +_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 \ No newline at end of file