Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Title: Elementary Sequal
- *
- *
- * Based Upon the code-example by Tom Beckmann: https://plus.google.com/111734729718206650167/posts/jGGQrQrqxdg
- * Toms' Code is Based upon the design by Harvey Cabaguio: https://plus.google.com/110079731285191638950/posts/F8LZJuHxojD
- *
- */
- using Gtk;
- using Granite;
- namespace eSQL {
- class MainWindow : Gtk.Window {
- /* APPLICATION INFORMATION */
- const string program_name = "";
- const string exec_name = "";
- const string app_years = "";
- const string app_version = "";
- const string application_id = "";
- const string app_icon = "";
- const string app_launcher = ".desktop";
- const string app_website = "";
- const string app_website_lbl = "";
- const string[] app_authors = {""};
- const string[] app_documenters = {""};
- const string[] app_translators = {"Chris Timberlake <game64@gmail.com>"};
- const string[] app_artists = {""};
- const string app_license_name = "Unknown License";
- const Gtk.License app_license = License.MIT_X11;
- const string app_comments = "";
- //Define variables.
- Gtk.Box main_container;
- Gtk.Toolbar main_toolbar;
- Gtk.ToolItem main_title;
- const int icon_size = Gtk.IconSize.LARGE_TOOLBAR;
- const int icon_height = 48;
- const string main_toolbar_css = """
- .title {
- color: #666;
- text-shadow: 0px 1px 0px white;
- }
- .toolbar {
- padding: 0px;
- box-shadow: inset 0px 1px 0px rgba(255,255,255,0.3);
- }
- """;
- Gtk.CssProvider css;
- /* CUSTOM WIDGETS */
- // It's just good coding practice in any language to define everything before it's used.
- // Even if that specific language doesn't care.
- public Gtk.ToolItem toolbar_seperator() {
- //Create the Seperator Referance
- var sep = new Gtk.ToolItem ();
- //Set Height/Width
- sep.height_request = icon_height;
- sep.width_request = 1;
- //Design the look!
- sep.draw.connect ((cr) => {
- cr.move_to (0, 0);
- cr.line_to (0, 60);
- cr.set_line_width (1);
- var grad = new Cairo.Pattern.linear (0, 0, 0, icon_height);
- grad.add_color_stop_rgba (0, 0.3, 0.3, 0.3, 0.4);
- grad.add_color_stop_rgba (0.8, 0, 0, 0, 0);
- cr.set_source (grad);
- cr.stroke ();
- return true;
- });
- //Add CSS Class Contexts
- sep.get_style_context ().add_class ("sep");
- sep.get_style_context ().add_provider (css, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
- return sep;
- }
- //Main window's title
- Gtk.Label mw_title;
- public new string title {
- get {
- return mw_title.label;
- }
- set {
- mw_title.label = value;
- }
- }
- public MainWindow(){
- /* CREATE THE BASE! */
- //Build Main Toolbar
- main_toolbar = new Gtk.Toolbar();
- //Setup the Toolbar's Look
- main_toolbar.icon_size = icon_size;
- //The CSS
- main_toolbar.get_style_context().add_class ("primary-toolbar");
- main_toolbar.get_style_context().add_provider (css, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
- //Build the Box Container!
- main_container = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
- main_container.pack_start (main_toolbar, false);
- //main_container.window-state-event.connect (() => { this.toggle_maximize(); });
- /* TOOLBAR ITEMS! */
- // Close Button
- var tb_close = new Gtk.ToolButton (new Gtk.Image.from_file("/usr/share/themes/elementary/metacity-1/close.svg"), "Close");
- // Clicked Action
- tb_close.clicked.connect (() => destroy ());
- // Set the proper dimension so it doesn't look ugly!
- tb_close.height_request = icon_height;
- tb_close.width_request = icon_height;
- // Maximize Button
- var tb_maximize = new Gtk.ToolButton (new Gtk.Image.from_file("/usr/share/themes/elementary/metacity-1/maximize.svg"), "Close");
- // Clicked Action => TOGGLE MAXIMIZE!
- tb_maximize.clicked.connect (() => { this.toggle_maximize(); });
- // Set the proper dimension so it doesn't look ugly!
- tb_maximize.height_request = icon_height;
- tb_maximize.width_request = icon_height;
- // Prepare the Main Window Title.
- mw_title = new Gtk.Label("Elementary Studio (Sequal)");
- // Make it look right.
- mw_title.override_font(Pango.FontDescription.from_string("bold"));
- // Create the ToolBar Item
- main_title = new Gtk.ToolItem();
- // Add the Main Window Title.
- main_title.add(mw_title);
- // Expand it!
- main_title.set_expand(true);
- // Settings Menu!
- var settings_menu = new Gtk.Menu();
- //Make a spot for an about dlg
- Gtk.MenuItem item_about = new Gtk.MenuItem.with_label ("About");
- Gtk.MenuItem item_tf = new Gtk.MenuItem.with_label ("tf");
- item_about.activate.connect (() => {
- Granite.Widgets.show_about_dialog (base,
- "program_name", program_name,
- // "version", build_version,
- "logo_icon_name", app_icon,
- "comments", app_comments,
- "copyright", "%s %s Developers".printf (app_years, program_name),
- "website", app_website,
- "website_label", "Website",
- "authors", app_authors,
- "documenters", app_documenters,
- "artists", app_artists,
- "translator_credits", app_translators,
- "license", app_license_name,
- "license_type", app_license,
- "help", app_website,
- "translate", app_website,
- "bug", app_website);
- });
- // Compile the menu!
- settings_menu.add(item_about);
- settings_menu.add(item_tf);
- // Settings Button!
- //new Granite.Widgets.ToolButtonWithMenu (new Gtk.Image.from_icon_name ("application-menu", Gtk.IconSize.LARGE_TOOLBAR), "", new Gtk.Menu ()), true
- var tb_menu = new Granite.Widgets.ToolButtonWithMenu(new Gtk.Image.from_icon_name ("application-menu", Gtk.IconSize.LARGE_TOOLBAR), "", settings_menu);
- // Insert the toolbar items in order!
- main_toolbar.insert (tb_close, -1);
- main_toolbar.insert (toolbar_seperator (), -1);
- main_toolbar.insert (main_title, -1);
- main_toolbar.insert (toolbar_seperator (), -1);
- main_toolbar.insert (tb_menu, -1);
- main_toolbar.insert (toolbar_seperator (), -1);
- main_toolbar.insert (tb_maximize, -1);
- /*CONTENT */
- //main_container.pack_start(/*CONTENT WIDGET HERE*/, true, true, 0);
- //Add the Container to the Base GTK
- base.add(main_container);
- //set the default size
- base.set_default_size(800, 600);
- //Push it to the center!
- base.window_position = WindowPosition.CENTER;
- }
- // This is to check and see if it's maximized. If so, Minimize.
- void toggle_maximize(){
- get_window ().maximize ();
- }
- // We need to hijack the show function of the GTK Window.
- public override void show(){
- //Show the GTK Window
- base.show();
- //Change the window style. Border-Only.
- get_window ().set_decorations (Gdk.WMDecoration.BORDER);
- }
- public override void add (Gtk.Widget widget){
- main_container.pack_start(widget, true, true, 0);
- main_container.show_all();
- }
- public override void remove (Gtk.Widget widget){
- main_container.remove(widget);
- }
- }
- }
- //Main Loop!
- public static int main (string[] args){
- //Init GTK!
- Gtk.init(ref args);
- //Assign window
- var main_window = new eSQL.MainWindow();
- // When our app is closed, Cancel the process.
- main_window.destroy.connect (Gtk.main_quit);
- //Show the main window.
- main_window.show_all();
- //GTK Main Loop.
- Gtk.main();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement