Fix #8
This commit is contained in:
parent
05ec65091f
commit
ace22357f6
@ -53,6 +53,9 @@ class Query_Builder {
|
||||
// )
|
||||
private $query_map;
|
||||
|
||||
// Convenience property for connection management
|
||||
public $conn_name;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
@ -111,6 +114,8 @@ class Query_Builder {
|
||||
{
|
||||
$this->db = new $dbtype($dsn);
|
||||
}
|
||||
|
||||
$this->conn_name = $params->name;
|
||||
|
||||
// Make things just slightly shorter
|
||||
$this->sql =& $this->db->sql;
|
||||
|
@ -19,6 +19,7 @@ class Connection_Sidebar extends GtkVBox {
|
||||
|
||||
protected $settings, $menu, $treeview;
|
||||
private static $instance;
|
||||
private $conn_name;
|
||||
|
||||
/**
|
||||
* Return the current instance of the class
|
||||
@ -120,6 +121,9 @@ class Connection_Sidebar extends GtkVBox {
|
||||
// Status column
|
||||
$cell_renderer = new GtkCellRendererPixbuf();
|
||||
$this->treeview->insert_column_with_data_func(2, 'Status', $cell_renderer, array($this, 'set_status_icon'));
|
||||
|
||||
// Connect event to change database tabs
|
||||
$this->treeview->connect('cursor-changed', array($this, 'switch_tab'));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -361,6 +365,7 @@ class Connection_Sidebar extends GtkVBox {
|
||||
try
|
||||
{
|
||||
$conn =& DB_Reg::get_db($data->name);
|
||||
$this->conn_name = $data->name;
|
||||
}
|
||||
catch(PDOException $e)
|
||||
{
|
||||
@ -385,5 +390,29 @@ class Connection_Sidebar extends GtkVBox {
|
||||
|
||||
$this->refresh();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Change tabs based on db connection selected
|
||||
*
|
||||
* @param type $view
|
||||
*/
|
||||
public function switch_tab($view)
|
||||
{
|
||||
$data = $view->get(0);
|
||||
$conns = DB_Reg::get_connections();
|
||||
|
||||
// Don't reset if you are over the same database
|
||||
if ($data->name === $this->conn_name)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (in_array($data->name, $conns))
|
||||
{
|
||||
$this->db_connect();
|
||||
}
|
||||
}
|
||||
}
|
||||
// End of connection_sidebar.php
|
||||
|
@ -22,6 +22,7 @@ class DB_tabs extends GTKNotebook {
|
||||
* @var DB_Tabs
|
||||
*/
|
||||
private static $instance;
|
||||
private $data;
|
||||
|
||||
/**
|
||||
* Return the db tabs object if it exists, or create and return
|
||||
@ -46,6 +47,7 @@ class DB_tabs extends GTKNotebook {
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->data = new StdClass();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -80,9 +82,11 @@ class DB_tabs extends GTKNotebook {
|
||||
// Empty the tabs
|
||||
self::reset();
|
||||
|
||||
self::$instance->hide_all();
|
||||
|
||||
// 'Databases' Tab
|
||||
{
|
||||
self::_add_tab($conn, 'Databases', 'Db Name', 'get_dbs', array(), array(
|
||||
self::_add_tab($conn, 'Databases', 'Db Name', 'get_dbs', array(
|
||||
'row-activated' => array(self::$instance, '_switch_db'),
|
||||
));
|
||||
}
|
||||
@ -164,10 +168,14 @@ class DB_tabs extends GTKNotebook {
|
||||
*/
|
||||
public static function reset()
|
||||
{
|
||||
self::$instance->hide_all();
|
||||
|
||||
for($i=self::$instance->get_n_pages(); $i >= 0; $i--)
|
||||
{
|
||||
self::$instance->remove_page($i);
|
||||
}
|
||||
|
||||
self::$instance->show_all();
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -179,14 +187,28 @@ class DB_tabs extends GTKNotebook {
|
||||
* @param string $tab_name
|
||||
* @param string $col_name
|
||||
* @param string $method
|
||||
* @param array $events
|
||||
* @return void
|
||||
*/
|
||||
private static function _add_tab(&$conn, $tab_name, $col_name, $method, $params=array(), $events=array())
|
||||
private static function _add_tab(&$conn, $tab_name, $col_name, $method, $events=array())
|
||||
{
|
||||
$tab = new Data_Grid();
|
||||
$tab_model = $tab->get_model();
|
||||
|
||||
$tab_data = call_user_func_array(array($conn, $method), $params);
|
||||
$conn_name = $conn->conn_name;
|
||||
|
||||
if ( ! isset(self::$instance->data->{$conn_name}))
|
||||
{
|
||||
self::$instance->data->{$conn_name}= array();
|
||||
}
|
||||
|
||||
$instance_data =& self::$instance->data->{$conn_name};
|
||||
|
||||
$tab_data = (empty($instance_data[$tab_name]))
|
||||
? call_user_func_array(array($conn, $method), array())
|
||||
: $instance_data[$tab_name];
|
||||
|
||||
$instance_data[$tab_name] = $tab_data;
|
||||
|
||||
if ($tab_data !== FALSE)
|
||||
{
|
||||
@ -225,7 +247,21 @@ class DB_tabs extends GTKNotebook {
|
||||
*/
|
||||
private static function _add_row_tab(&$conn, $tab_name, $method)
|
||||
{
|
||||
$tab_data = call_user_func_array(array($conn, $method), array());
|
||||
|
||||
$conn_name = $conn->conn_name;
|
||||
|
||||
if ( ! isset(self::$instance->data->{$conn_name}))
|
||||
{
|
||||
self::$instance->data->{$conn_name}= array();
|
||||
}
|
||||
|
||||
$instance_data =& self::$instance->data->{$conn_name};
|
||||
|
||||
$tab_data = (empty($instance_data[$tab_name]))
|
||||
? call_user_func_array(array($conn, $method), array())
|
||||
: $instance_data[$tab_name];
|
||||
|
||||
$instance_data[$tab_name] = $tab_data;
|
||||
|
||||
if ( ! empty($tab_data))
|
||||
{
|
||||
@ -296,8 +332,6 @@ class DB_tabs extends GTKNotebook {
|
||||
}
|
||||
|
||||
// @todo figure out how to single out the current db connection
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
// End of db_tabs.php
|
||||
|
Loading…
Reference in New Issue
Block a user