r3757 - trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Tue Jan 1 18:24:25 CET 2008


Author: mickey
Date: 2008-01-01 18:24:24 +0100 (Tue, 01 Jan 2008)
New Revision: 3757

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mainwindow.vala
   trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mokoterminal.vala
Log:
openmoko-terminal2: make it more usable
* add toolbar with buttons for
** new
** delete
** zoom in
** zoom out


Modified: trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mainwindow.vala
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mainwindow.vala	2007-12-30 16:03:18 UTC (rev 3756)
+++ trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mainwindow.vala	2008-01-01 17:24:24 UTC (rev 3757)
@@ -2,7 +2,7 @@
  * mainwindow.vala
  *
  * Authored by Michael 'Mickey' Lauer <mickey at vanille-media.de>
- * Copyright (C) 2007 OpenMoko, Inc.
+ * Copyright (C) 2007-2008 OpenMoko, Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,6 +27,15 @@
 
 public class OpenMokoTerminal2.MainWindow : Window
 {
+    private VBox _vbox;
+    private Toolbar _toolbar;
+    private Notebook _notebook;
+
+    private ToolButton _btn_new;
+    private ToolButton _btn_delete;
+    private ToolButton _btn_zoom_in;
+    private ToolButton _btn_zoom_out;
+
     public MainWindow()
     {
         title = "Terminal";
@@ -35,18 +44,85 @@
     construct
     {
         destroy += Gtk.main_quit;
-        var notebook = new Gtk.Notebook();
-        notebook.set_tab_pos( PositionType.BOTTOM );
-        add( notebook );
+        _vbox = new Gtk.VBox( false, 0 );
+        add( _vbox );
+        setup_toolbar();
+        setup_notebook();
+        update_toolbar();
+    }
 
-        for ( int i = 0; i < 3; ++i )
-        {
-            var terminal = new OpenMokoTerminal2.MokoTerminal();
-            notebook.append_page( terminal, Image.from_stock( STOCK_INDEX, IconSize.LARGE_TOOLBAR ) );
-            notebook.child_set (terminal, "tab-expand", true, null );
-        }
+    public void setup_toolbar()
+    {
+        _toolbar = new Gtk.Toolbar();
+        _vbox.add( _toolbar );
+
+        _btn_new = new Gtk.ToolButton.from_stock( STOCK_NEW );
+        _btn_new.clicked += on_new_clicked;
+        _toolbar.insert( _btn_new, 0 );
+
+        _btn_delete = new Gtk.ToolButton.from_stock( STOCK_DELETE );
+        _btn_delete.clicked += on_delete_clicked;
+        _toolbar.insert( _btn_delete, 1 );
+
+        _toolbar.insert( new Gtk.SeparatorToolItem(), 2 );
+
+        _btn_zoom_in = new Gtk.ToolButton.from_stock( STOCK_ZOOM_IN );
+        _btn_zoom_in.clicked += on_zoom_in_clicked;
+        _toolbar.insert( _btn_zoom_in, 3 );
+
+        _btn_zoom_out = new Gtk.ToolButton.from_stock( STOCK_ZOOM_OUT );
+        _btn_zoom_out.clicked += on_zoom_out_clicked;
+        _toolbar.insert( _btn_zoom_out, 4 );
     }
 
+    public void setup_notebook()
+    {
+        _notebook = new Gtk.Notebook();
+        _notebook.set_tab_pos( PositionType.BOTTOM );
+        _vbox.add( _notebook );
+
+        var terminal = new OpenMokoTerminal2.MokoTerminal();
+        _notebook.append_page( terminal, Image.from_stock( STOCK_INDEX, IconSize.LARGE_TOOLBAR ) );
+        _notebook.child_set (terminal, "tab-expand", true, null );
+    }
+
+    private void on_new_clicked( Gtk.ToolButton b )
+    {
+        stdout.printf( "on_new_clicked\n" );
+        var terminal = new OpenMokoTerminal2.MokoTerminal();
+        _notebook.append_page( terminal, Image.from_stock( STOCK_INDEX, IconSize.LARGE_TOOLBAR ) );
+        _notebook.child_set (terminal, "tab-expand", true, null );
+        _notebook.show_all();
+        update_toolbar();
+    }
+
+    private void on_delete_clicked( Gtk.ToolButton b )
+    {
+        stdout.printf( "on_delete_clicked\n" );
+        var page = _notebook.get_nth_page( _notebook.get_current_page() );
+        page.destroy();
+        update_toolbar();
+    }
+
+    private void on_zoom_in_clicked( Gtk.ToolButton b )
+    {
+        stdout.printf( "on_zoom_in_clicked\n" );
+        OpenMokoTerminal2.MokoTerminal terminal = _notebook.get_nth_page( _notebook.get_current_page() );
+        terminal.zoom_in();
+    }
+
+    private void on_zoom_out_clicked( Gtk.ToolButton b )
+    {
+        stdout.printf( "on_zoom_out_clicked\n" );
+        OpenMokoTerminal2.MokoTerminal terminal = _notebook.get_nth_page( _notebook.get_current_page() );
+        terminal.zoom_out();
+    }
+
+    public void update_toolbar()
+    {
+        _btn_delete.set_sensitive( _notebook.get_n_pages() > 1 );
+    }
+
     public void run()
     {
         show_all();

Modified: trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mokoterminal.vala
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mokoterminal.vala	2007-12-30 16:03:18 UTC (rev 3756)
+++ trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mokoterminal.vala	2008-01-01 17:24:24 UTC (rev 3757)
@@ -2,7 +2,7 @@
  * mokoterminal.vala
  *
  * Authored by Michael 'Mickey' Lauer <mickey at vanille-media.de>
- * Copyright (C) 2007 OpenMoko, Inc.
+ * Copyright (C) 2007-2008 OpenMoko, Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,12 +27,18 @@
 
 public class OpenMokoTerminal2.MokoTerminal : HBox
 {
+    private string _fontname;
+    private uint _fontsize;
     private Scrollbar _scrollbar;
     private Terminal _terminal;
 
     construct {
         stdout.printf( "moko-terminal constructed\n" );
 
+        // may read from gconf at some point?
+        _fontname = "LiberationMono";
+        _fontsize = 5;
+
         _terminal = new Vte.Terminal();
         _terminal.child_exited += term => { stdout.printf( "unhandled eof\n" ); };
         _terminal.eof += term => { stdout.printf( "unhandled eof\n" ); };
@@ -56,13 +62,30 @@
 
         //_terminal.set_colors( fore, back, colors[0], 8 );
 
+        update_font();
         _terminal.set_scrollback_lines( 1000 );
-        _terminal.set_font_from_string_full( "LiberationMono 5", TerminalAntiAlias.FORCE_ENABLE );
         _terminal.set_mouse_autohide( true );
         _terminal.set_cursor_blinks( true );
-
         _terminal.set_backspace_binding( TerminalEraseBinding.ASCII_DELETE);
         _terminal.fork_command( null, null, null, Environment.get_variable( "HOME" ), true, true, true );
     }
+
+    public void update_font()
+    {
+        string font = "%s %d".printf( _fontname, _fontsize );
+        _terminal.set_font_from_string_full( font, TerminalAntiAlias.FORCE_ENABLE );
+    }
+
+    public void zoom_in()
+    {
+        ++_fontsize;
+        update_font();
+    }
+
+    public void zoom_out()
+    {
+        --_fontsize;
+        update_font();
+    }
 }
 





More information about the commitlog mailing list