OpenSQLManager/sys/windows/main.php

200 lines
4.3 KiB
PHP
Raw Permalink Normal View History

2012-01-26 16:09:05 -05:00
<?php
/**
* OpenSQLManager
*
* Free Database manager for Open Source Databases
*
2012-04-20 13:30:27 -04:00
* @package OpenSQLManager
2012-01-26 16:09:05 -05:00
* @author Timothy J. Warren
* @copyright Copyright (c) 2012
* @link https://github.com/aviat4ion/OpenSQLManager
2012-03-28 11:23:08 -04:00
* @license http://philsturgeon.co.uk/code/dbad-license
2012-01-26 16:09:05 -05:00
*/
// --------------------------------------------------------------------------
/**
* Main Window Class
*
* Creates and displays the main interface window
2012-04-20 13:30:27 -04:00
*
* @package OpenSQLManager
* @subpackage Windows
*/
2012-01-26 16:09:05 -05:00
class Main extends GtkWindow {
2012-04-19 12:29:47 -04:00
/**
* Reference to settings instance
2012-04-19 21:55:44 -04:00
*
* @var Settings
2012-04-19 12:29:47 -04:00
*/
private $settings;
/**
* Reference to connection sidebar instance
2012-04-19 21:55:44 -04:00
*
* @var Connection_Sidebar
2012-04-19 12:29:47 -04:00
*/
private $connection_sidebar;
/**
* Create and display the main window on startup
*/
2012-02-21 11:45:42 -05:00
public function __construct()
2012-01-26 16:09:05 -05:00
{
parent::__construct();
$this->settings =& Settings::get_instance();
2012-03-28 11:23:08 -04:00
if ( ! is_null($this->settings->width) && ! is_null($this->settings->height))
{
// Resize to the last size
$this->set_size_request($this->settings->width, $this->settings->height);
}
else
{
// Resize to a sane size
$this->set_size_request(640, 480);
}
if (! is_null($this->settings->position))
{
$this->move($this->settings->position[0], $this->settings->position[1]);
}
else
{
$this->set_position(Gtk::WIN_POS_CENTER);
}
// Layout the interface
$this->_main_layout();
}
2012-01-30 13:15:44 -05:00
// --------------------------------------------------------------------------
/**
* Some cleanup for when the main window is closed
2012-04-11 14:57:38 -04:00
*
* @return void
*/
public function __destruct()
{
// Save the Window position
$this->settings->position = $this->get_position();
list($width, $height) = $this->get_size();
// Save the Window hegiht
$this->settings->height = $height;
// Save the Window width
$this->settings->width = $width;
}
// --------------------------------------------------------------------------
2012-03-28 11:23:08 -04:00
/**
2012-04-11 14:57:38 -04:00
* Exits the GTK loop
*
* @return void
2012-01-30 13:15:44 -05:00
*/
2012-02-21 11:45:42 -05:00
public function quit()
2012-01-30 13:15:44 -05:00
{
Gtk::main_quit();
}
// --------------------------------------------------------------------------
/**
* Layout the main interface
* Create menus, hboxes, vboxs and other widgets
2012-03-28 11:23:08 -04:00
*
* @return void
*/
private function _main_layout()
{
$this->set_title(PROGRAM_NAME);
2012-03-28 11:23:08 -04:00
2012-01-27 11:57:13 -05:00
// Quit when this window is closed
$this->connect_simple('destroy', array('gtk', 'main_quit'));
// Main Vbox that everything is contained in
2012-02-23 20:10:13 -05:00
$main_vbox = new GTKVBox(FALSE, 5);
// Main Hpaned for columns
$hpane = new GTKHPaned();
// Add the menubar
$main_vbox->pack_start($this->_create_menu(), FALSE, FALSE);
// Add the main interface area hbox
$main_vbox->pack_start($hpane);
$scrolled_win = new GtkScrolledWindow();
2012-02-24 17:53:16 -05:00
$scrolled_win->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
2012-03-29 16:26:50 -04:00
$scrolled_win->add_with_viewport(DB_tabs::get_instance());
2012-02-24 17:53:16 -05:00
// Add the connection sidebar
2012-02-28 10:38:13 -05:00
$this->connection_sidebar =& Connection_Sidebar::get_instance();
// Add the left column to the hpane
2012-02-24 17:53:16 -05:00
$hpane->pack1($this->connection_sidebar, FALSE);
$hpane->pack2($scrolled_win);
// Add the Vbox, and show the window
$this->add($main_vbox);
$this->show_all();
2012-01-26 16:09:05 -05:00
}
2012-01-30 13:15:44 -05:00
// --------------------------------------------------------------------------
/**
* Create the menu for the program
*
* @return GtkMenuBar
*/
private function _create_menu()
{
// Menu Bar
$menu_bar = new GtkMenuBar();
// Menu Bar Top Items
$top_file_menu = new GtkMenuItem('_File');
$top_help_menu = new GtkMenuItem('_Help');
// Add sub Menus to top items
$file_menu = new GtkMenu();
$top_file_menu->set_submenu($file_menu);
$help_menu = new GtkMenu();
$top_help_menu->set_submenu($help_menu);
2012-03-28 11:23:08 -04:00
// File Menu
{
// Set up the quit item
$quit = new GtkImageMenuItem(GTK::STOCK_QUIT);
$quit->connect_simple('activate', array($this, 'quit'));
2012-01-27 21:19:39 -05:00
$file_menu->append($quit);
// Add the top level menu to the menubar
$menu_bar->append($top_file_menu);
}
// Help Menu
{
// Set up the about item
$about = new GtkImageMenuItem(GTK::STOCK_ABOUT);
$about->connect_simple('activate', 'about');
$help_menu->append($about);
// Add the top level menu to the menubar
$menu_bar->append($top_help_menu);
}
2012-03-28 11:23:08 -04:00
return $menu_bar;
2012-03-28 11:23:08 -04:00
}
}
// End of main.php