Fix #8
This commit is contained in:
parent
05ec65091f
commit
ace22357f6
@ -53,6 +53,9 @@ class Query_Builder {
|
|||||||
// )
|
// )
|
||||||
private $query_map;
|
private $query_map;
|
||||||
|
|
||||||
|
// Convenience property for connection management
|
||||||
|
public $conn_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -111,6 +114,8 @@ class Query_Builder {
|
|||||||
{
|
{
|
||||||
$this->db = new $dbtype($dsn);
|
$this->db = new $dbtype($dsn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->conn_name = $params->name;
|
||||||
|
|
||||||
// Make things just slightly shorter
|
// Make things just slightly shorter
|
||||||
$this->sql =& $this->db->sql;
|
$this->sql =& $this->db->sql;
|
||||||
|
@ -19,6 +19,7 @@ class Connection_Sidebar extends GtkVBox {
|
|||||||
|
|
||||||
protected $settings, $menu, $treeview;
|
protected $settings, $menu, $treeview;
|
||||||
private static $instance;
|
private static $instance;
|
||||||
|
private $conn_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the current instance of the class
|
* Return the current instance of the class
|
||||||
@ -120,6 +121,9 @@ class Connection_Sidebar extends GtkVBox {
|
|||||||
// Status column
|
// Status column
|
||||||
$cell_renderer = new GtkCellRendererPixbuf();
|
$cell_renderer = new GtkCellRendererPixbuf();
|
||||||
$this->treeview->insert_column_with_data_func(2, 'Status', $cell_renderer, array($this, 'set_status_icon'));
|
$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
|
try
|
||||||
{
|
{
|
||||||
$conn =& DB_Reg::get_db($data->name);
|
$conn =& DB_Reg::get_db($data->name);
|
||||||
|
$this->conn_name = $data->name;
|
||||||
}
|
}
|
||||||
catch(PDOException $e)
|
catch(PDOException $e)
|
||||||
{
|
{
|
||||||
@ -385,5 +390,29 @@ class Connection_Sidebar extends GtkVBox {
|
|||||||
|
|
||||||
$this->refresh();
|
$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
|
// End of connection_sidebar.php
|
||||||
|
@ -22,6 +22,7 @@ class DB_tabs extends GTKNotebook {
|
|||||||
* @var DB_Tabs
|
* @var DB_Tabs
|
||||||
*/
|
*/
|
||||||
private static $instance;
|
private static $instance;
|
||||||
|
private $data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the db tabs object if it exists, or create and return
|
* Return the db tabs object if it exists, or create and return
|
||||||
@ -46,6 +47,7 @@ class DB_tabs extends GTKNotebook {
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
$this->data = new StdClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@ -80,9 +82,11 @@ class DB_tabs extends GTKNotebook {
|
|||||||
// Empty the tabs
|
// Empty the tabs
|
||||||
self::reset();
|
self::reset();
|
||||||
|
|
||||||
|
self::$instance->hide_all();
|
||||||
|
|
||||||
// 'Databases' Tab
|
// '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'),
|
'row-activated' => array(self::$instance, '_switch_db'),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -164,10 +168,14 @@ class DB_tabs extends GTKNotebook {
|
|||||||
*/
|
*/
|
||||||
public static function reset()
|
public static function reset()
|
||||||
{
|
{
|
||||||
|
self::$instance->hide_all();
|
||||||
|
|
||||||
for($i=self::$instance->get_n_pages(); $i >= 0; $i--)
|
for($i=self::$instance->get_n_pages(); $i >= 0; $i--)
|
||||||
{
|
{
|
||||||
self::$instance->remove_page($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 $tab_name
|
||||||
* @param string $col_name
|
* @param string $col_name
|
||||||
* @param string $method
|
* @param string $method
|
||||||
|
* @param array $events
|
||||||
* @return void
|
* @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 = new Data_Grid();
|
||||||
$tab_model = $tab->get_model();
|
$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)
|
if ($tab_data !== FALSE)
|
||||||
{
|
{
|
||||||
@ -225,7 +247,21 @@ class DB_tabs extends GTKNotebook {
|
|||||||
*/
|
*/
|
||||||
private static function _add_row_tab(&$conn, $tab_name, $method)
|
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))
|
if ( ! empty($tab_data))
|
||||||
{
|
{
|
||||||
@ -296,8 +332,6 @@ class DB_tabs extends GTKNotebook {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @todo figure out how to single out the current db connection
|
// @todo figure out how to single out the current db connection
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// End of db_tabs.php
|
// End of db_tabs.php
|
||||||
|
Reference in New Issue
Block a user