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/src/windows/main.php

196 lines
4.3 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
*/
// --------------------------------------------------------------------------
/**
* Main Window Class
*
* Creates and displays the main interface window
*/
class Main extends GtkWindow {
private $main_vbox, $main_hbox;
/**
* Create and display the main window on startup
*/
function __construct()
{
parent::__construct();
//Layout the interface
$this->_main_layout();
}
// --------------------------------------------------------------------------
/**
* Display About menu with version information
*/
function about()
{
$dlg = new GtkAboutDialog();
$dlg->set_transient_for($this);
$dlg->set_program_name($this->get_title());
$dlg->set_version('0.0.1pre');
$dlg->set_copyright("Copyright (c) ".date('Y')." Timothy J. Warren");
$dlg->set_website('https://github.com/aviat4ion/OpenSQLManager');
$dlg->run();
$dlg->destroy();
}
// --------------------------------------------------------------------------
/**
* Quits the GTK loop
*/
function quit()
{
Gtk::main_quit();
}
// --------------------------------------------------------------------------
/**
* Layout the main interface
*
* Create menus, hboxes, vboxs and other widgets
*/
private function _main_layout()
{
$this->set_title('OpenSQLManager');
// Quit when this window is closed
$this->connect_simple('destroy', array('gtk', 'main_quit'));
// Main Vbox that everything is contained in
$main_vbox = new GTKVBox();
// Main Hbox for columns
$main_hbox = new GTKHBox();
// Add the menubar
$main_vbox->pack_start($this->_create_menu(), FALSE, FALSE);
// Add the toolbar
//$main_vbox->pack_start($this->_create_toolbar(), FALSE, FALSE);
// Add the info box
$main_vbox->pack_start($this->_create_infobox(), FALSE, FALSE);
// Add the main interface area hbox
$main_vbox->pack_start($main_hbox, FALSE, FALSE);
// Add the Vbox, and show the window
$this->add($main_vbox);
$this->show_all();
}
// --------------------------------------------------------------------------
/**
* Create the main toolbar
*
* @return GtkToolBar
*/
private function _create_toolbar()
{
$tbar = new GtkToolBar();
$open = new GtkToolButton();
$open->set_stock_id(Gtk::STOCK_OPEN);
$tbar->insert($open);
return $tbar;
}
// --------------------------------------------------------------------------
/**
* 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);
//File Menu
{
//Set up the open item
$open = new GtkImageMenuItem(GTK::STOCK_OPEN);
$file_menu->append($open);
//Set up the quit item
$quit = new GtkImageMenuItem(GTK::STOCK_QUIT);
$quit->connect_simple('activate', array($this, 'quit'));
$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', array($this, 'about'));
$help_menu->append($about);
// Add the top level menu to the menubar
$menu_bar->append($top_help_menu);
}
return $menu_bar;
}
// --------------------------------------------------------------------------
/**
* Display Info box for errors/message
*/
private function _create_infobox()
{
$this->infobar = new GtkInfoBar();
$this->messagelabel = new GtkLabel('Welcome to OpenSQLManager!');
$contentarea = $this->infobar->get_content_area();
$contentarea->add($this->messagelabel);
$this->infobar->add_button(GTK::STOCK_OK, GTK::RESPONSE_OK);
$this->infobar->connect_simple('response', array($this->infobar, 'hide'));
return ($this->infobar);
}
}
// End of main.php