This repository has been archived on 2018-10-12. You can view files and clone it, but cannot push or open issues or pull requests.
OpenSQLManager/sys/windows/widgets/db_tabs.php
2012-04-02 13:04:53 -04:00

129 lines
2.7 KiB
PHP

<?php
/**
* OpenSQLManager
*
* Free Database manager for Open Source Databases
*
* @author Timothy J. Warren
* @copyright Copyright (c) 2012
* @link https://github.com/aviat4ion/OpenSQLManager
* @license http://philsturgeon.co.uk/code/dbad-license
*/
// --------------------------------------------------------------------------
/**
* Tabbed Container for database properties
*/
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
*/
public function __construct()
{
parent::__construct();
// Move the tab bar to the bottom
$this->set_tab_pos(Gtk::POS_BOTTOM);
}
// --------------------------------------------------------------------------
/**
* Add a new tab with the provided label
*
* @param string $label
* @param GObject $widget
* @return void
*/
public function add_tab($label, $widget = NULL)
{
if (is_null($widget))
{
$widget = new Data_Grid();
}
$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();
}
// --------------------------------------------------------------------------
/**
* Create tabs for database aspects
*
* @param Query_Builder $conn
* @return void
*/
public function get_db_tabs(&$conn)
{
$tables = new Data_Grid();
$table_model = $tables->get_model();
$table_data = $conn->get_tables();
foreach($table_data as $t)
{
$iter = $table_model->append();
$table_model->set($iter, 0, $t);
}
$cell_renderer = new GtkCellRendererText();
$tables->insert_column_with_data_func(0, 'Table Name', $cell_renderer, array($this, 'add_data_col'));
$this->add_tab('Tables', $tables);
}
// --------------------------------------------------------------------------
/**
* Adds a column of data to the model
*
* @param GtkTreeViewColumn $col
* @param GtkCellRenderer $cell
* @param GtkTreeModel $model
* @param GtkTreeIter $iter
* @param int $i
* @return void
*/
public function add_data_col($col, $cell, $model, $iter, $i=0)
{
$data = $model->get_value($iter, $i);
$cell->set_property('text', $data);
}
}
// End of db_tabs.php