Various improvements

This commit is contained in:
Timothy Warren 2012-03-29 16:26:50 -04:00
parent b241819799
commit 19c709fc93
7 changed files with 85 additions and 21 deletions

View File

@ -21,10 +21,15 @@ class Data_Grid extends GtkTreeView {
/**
* Create the object
*
* @param object $model
*/
public function __construct()
public function __construct($model = null)
{
$this->model = new GtkTreeStore(Gobject::TYPE_PHP_VALUE, Gobject::TYPE_PHP_VALUE);
$this->model = ( ! is_null($model))
? $model
: new GtkTreeStore(Gobject::TYPE_PHP_VALUE, Gobject::TYPE_PHP_VALUE);
parent::__construct($this->model);
}
@ -40,4 +45,30 @@ class Data_Grid extends GtkTreeView {
{
// @todo implement
}
}
// --------------------------------------------------------------------------
/**
* Set the value of the cell at the provided coordinate array
*
* @param array $coord
* @param mixed $val
*/
public function set(array $coord, $val)
{
// @todo implement
}
// --------------------------------------------------------------------------
/**
* Return a new Data_grid object
*
* @param object $model
*/
public function reset($model = null)
{
return new Data_Grid($model);
}
}
// End of data_grid.php

View File

@ -21,8 +21,6 @@ class Query_Builder {
// Compiled query component strings
private $select_string,
$from_string,
$insert_string,
$update_string,
$set_string,
$order_string,
$group_string;

View File

@ -32,5 +32,4 @@ class Add_DB extends GtkWindow {
$this->show_all();
}
}
// End of add_db.php

View File

@ -17,7 +17,12 @@
*/
class Edit_DB extends GtkWindow {
public function __construct()
/**
* Connection editing window
*
* @param string $db
*/
public function __construct($db)
{
parent::__construct();
@ -25,12 +30,11 @@ class Edit_DB extends GtkWindow {
$this->set_title("Edit Database Connection");
// Create the layout table
$connection_form = new DB_Info_Widget();
$connection_form = new DB_Info_Widget(Settings::get_instance()->get_db($db));
// Add the Vbox, and show the window
$this->add($connection_form);
$this->show_all();
}
}
// End of edit_db.php

View File

@ -150,7 +150,7 @@ class Main extends GtkWindow {
$scrolled_win = new GtkScrolledWindow();
$scrolled_win->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
$scrolled_win->add_with_viewport(new DB_tabs());
$scrolled_win->add_with_viewport(DB_tabs::get_instance());
// Add the connection sidebar
$this->connection_sidebar =& Connection_Sidebar::get_instance();

View File

@ -17,7 +17,7 @@
*/
class Connection_Sidebar extends GtkVBox {
protected $settings, $menu, $treeview, $model;
protected $settings, $menu, $treeview;
private static $instance;
/**
@ -60,9 +60,6 @@ class Connection_Sidebar extends GtkVBox {
// Treeview to show database connections
{
// Create a Storage object for connection list
$this->model = new GtkListStore(GObject::TYPE_PHP_VALUE, GObject::TYPE_STRING);
// Render the treeview
$this->_render();
@ -86,6 +83,11 @@ class Connection_Sidebar extends GtkVBox {
*/
protected function _render()
{
// Initialize the treeview
$this->treeview = new Data_Grid();
$model = $this->treeview->get_model();
// Add the existing connections to the model
$db_conns = $this->settings->get_dbs();
if( ! empty($db_conns))
@ -95,14 +97,11 @@ class Connection_Sidebar extends GtkVBox {
$db = $props;
$db->name = $name;
$iter = $this->model->append();
$this->model->set($iter, 0, $db);
$iter = $model->append();
$model->set($iter, 0, $db);
}
}
// Initialize the treeview with the data
$this->treeview = new GtkTreeView($this->model);
// Icon column
$cell_renderer = new GtkCellRendererPixbuf();
$this->treeview->insert_column_with_data_func(0, 'Type', $cell_renderer, array($this, 'set_icon'));
@ -125,7 +124,7 @@ class Connection_Sidebar extends GtkVBox {
public function set_icon($col, $cell, $model, $iter)
{
$col->set_reorderable(TRUE);
$info = $this->model->get_value($iter, 0);
$info = $model->get_value($iter, 0);
$db_type = strtolower($info->type);
$img_file = BASE_DIR."/images/{$db_type}-logo-32.png";
@ -154,7 +153,7 @@ class Connection_Sidebar extends GtkVBox {
public function set_label($col, $cell, $model, $iter)
{
$col->set_reorderable(TRUE);
$info = $this->model->get_value($iter, 0);
$info = $model->get_value($iter, 0);
$cell->set_property('text', $info->name);
}

View File

@ -17,6 +17,25 @@
*/
class DB_tabs extends GTKNotebook {
private static $instance;
/**
* Return the db tabs object if it exists, or create and return
*
* @return DB_tabs
*/
public static function &get_instance()
{
if (empty(self::$instance))
{
self::$instance = new DB_tabs();
}
return self::$instance;
}
// --------------------------------------------------------------------------
/**
* Create the object
*/
@ -49,5 +68,19 @@ class DB_tabs extends GTKNotebook {
$this->append_page($widget, new GtkLabel($label));
}
// --------------------------------------------------------------------------
/**
* Creates a new instance of this class, and destroys the existing
* instance
*
* @return DB_tabs
*/
public function reset()
{
unset(self::$instance);
return self::get_instance();
}
}
// End of db_tabs.php