Languages

[Genie] Simple Notebook Test

No votes yet
[indent=4]
 
/* Build with valac --pkg gtk+-2.0 yourfile.gs */
 
uses
    Gtk
 
init
    Gtk.init (ref args)
    var test = new NotebookTest ()
    test.show_all ()
    Gtk.main ()
 
class NotebookTest : Window
 
    notebook : Notebook
    delete_button : ToolButton
    status_bar : Statusbar
 
    init
        title = "Simple Notebook Test"
        default_height = 350
        default_width = 500
        window_position = WindowPosition.CENTER
        destroy += on_exit_clicked
        var toolbar = new Toolbar ()
        var new_button = new ToolButton.from_stock (STOCK_NEW)
        delete_button = new ToolButton.from_stock (STOCK_DELETE)
        var prev_button = new ToolButton.from_stock (STOCK_GO_BACK)
        var next_button = new ToolButton.from_stock (STOCK_GO_FORWARD)
        var quit_button = new ToolButton.from_stock (STOCK_QUIT)
        toolbar.add (new_button)
        toolbar.add (delete_button)
        toolbar.add (prev_button)
        toolbar.add (next_button)
        toolbar.add (quit_button)
        new_button.clicked += on_new_clicked
        delete_button.clicked += on_delete_clicked
        delete_button.sensitive = false
        prev_button.clicked += on_prev_page_clicked
        next_button.clicked += on_next_page_clicked
        quit_button.clicked += on_exit_clicked
        notebook = new Notebook()
        notebook.set_tab_pos(PositionType.BOTTOM)
        notebook.set_show_tabs(true)
        notebook.set_show_border(true)
        status_bar = new Statusbar ()
        status_bar.set_has_resize_grip (false)
        status_bar.pop(0)
        status_bar.push(0, "Click 'New' to add tabs !")
        var vbox = new VBox (false, 0)
        vbox.pack_start (toolbar, false, true, 0)
        vbox.pack_start (notebook, true, true, 0)
        vbox.pack_start (status_bar, false, true, 0)
        add (vbox)
 
    def private on_new_clicked ()
        delete_button.sensitive = true
        var frame = new Frame("I'm a frame in a notebook !!!")
        frame.set_border_width(10)
        frame.set_size_request(100, 75)
        frame.show()
        var label = new Label("Page " + notebook.get_n_pages().to_string())
        notebook.append_page(frame, label)
        notebook.child_set (frame, "tab-expand", true, null)
        notebook.show_all()
        notebook.set_current_page(notebook.get_n_pages()-1)
        number_of_pages ()
 
    def private on_delete_clicked ()
        numberofpage : int = notebook.get_current_page() - 1
        if numberofpage is -1
            delete_button.sensitive = false
            delete_pages_clicked ()
            number_of_pages ()
        else
            delete_pages_clicked ()
            number_of_pages ()
 
    def private delete_pages_clicked ()
        notebook.remove_page(notebook.get_current_page())
        number_of_pages ()
 
    def private on_next_page_clicked ()
        notebook.next_page()
 
    def private on_prev_page_clicked ()
        notebook.prev_page()
 
    def private on_exit_clicked ()
        print("See you !!!")
        Gtk.main_quit()
 
    def private number_of_pages ()
        status_bar.push(0, "Number of pages: " + notebook.get_n_pages().to_string())