r3762 - trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src
mickey at sita.openmoko.org
mickey at sita.openmoko.org
Fri Jan 4 06:23:45 CET 2008
Author: mickey
Date: 2008-01-04 06:23:45 +0100 (Fri, 04 Jan 2008)
New Revision: 3762
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: add clipboard toolitem, limit maximum and minimum fontsize
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 2008-01-03 17:17:01 UTC (rev 3761)
+++ trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mainwindow.vala 2008-01-04 05:23:45 UTC (rev 3762)
@@ -23,18 +23,17 @@
using GLib;
using Gtk;
-// how to define a const here?
-
public class OpenMokoTerminal2.MainWindow : Window
{
- private VBox _vbox;
- private Toolbar _toolbar;
- private Notebook _notebook;
+ 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;
+ private ToolButton btn_new;
+ private ToolButton btn_delete;
+ private ToolButton btn_zoom_in;
+ private ToolButton btn_zoom_out;
+ private ToolButton btn_paste;
public MainWindow()
{
@@ -44,62 +43,80 @@
construct
{
destroy += Gtk.main_quit;
- _vbox = new Gtk.VBox( false, 0 );
- add( _vbox );
+ vbox = new Gtk.VBox( false, 0 );
+ add( vbox );
setup_toolbar();
setup_notebook();
update_toolbar();
+ idle_add( on_idle, this );
}
public void setup_toolbar()
{
- _toolbar = new Gtk.Toolbar();
- _vbox.add( _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_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 );
+ 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 );
+ 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_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 );
+ 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 );
+
+ toolbar.insert( new Gtk.SeparatorToolItem(), 5 );
+
+ btn_paste = new Gtk.ToolButton.from_stock( STOCK_PASTE );
+ btn_paste.clicked += on_paste_clicked;
+ toolbar.insert( btn_paste, 6 );
}
public void setup_notebook()
{
- _notebook = new Gtk.Notebook();
- _notebook.set_tab_pos( PositionType.BOTTOM );
- _vbox.add( _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 );
+ notebook.append_page( terminal, Image.from_stock( STOCK_INDEX, IconSize.LARGE_TOOLBAR ) );
+ notebook.child_set (terminal, "tab-expand", true, null );
}
+ private bool on_idle()
+ {
+ stdout.printf( "on_idle\n" );
+ notebook.switch_page += (o, page, num) => {
+ btn_delete.set_sensitive( notebook.get_n_pages() > 1 );
+ OpenMokoTerminal2.MokoTerminal terminal = notebook.get_nth_page( (int)num ); btn_zoom_in.set_sensitive( terminal.get_font_size() < 10 );
+ btn_zoom_out.set_sensitive( terminal.get_font_size() > 1 );
+ };
+ return false;
+ }
+
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();
+ 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() );
+ var page = notebook.get_nth_page( notebook.get_current_page() );
page.destroy();
update_toolbar();
}
@@ -107,20 +124,35 @@
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() );
+ OpenMokoTerminal2.MokoTerminal terminal = notebook.get_nth_page( notebook.get_current_page() );
terminal.zoom_in();
+ update_toolbar();
}
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() );
+ OpenMokoTerminal2.MokoTerminal terminal = notebook.get_nth_page( notebook.get_current_page() );
terminal.zoom_out();
+ update_toolbar();
}
+ private void on_paste_clicked( Gtk.ToolButton b )
+ {
+ stdout.printf( "on_paste_clicked\n" );
+ OpenMokoTerminal2.MokoTerminal terminal = notebook.get_nth_page( notebook.get_current_page() );
+ terminal.paste();
+ update_toolbar();
+ }
+
public void update_toolbar()
{
- _btn_delete.set_sensitive( _notebook.get_n_pages() > 1 );
+ stdout.printf( "update_toolbar\n" );
+ btn_delete.set_sensitive( notebook.get_n_pages() > 1 );
+ OpenMokoTerminal2.MokoTerminal terminal = notebook.get_nth_page( notebook.get_current_page() );
+ stdout.printf( "current font size for terminal is %d\n", terminal.get_font_size() );
+ btn_zoom_in.set_sensitive( terminal.get_font_size() < 10 );
+ btn_zoom_out.set_sensitive( terminal.get_font_size() > 1 );
}
public void run()
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 2008-01-03 17:17:01 UTC (rev 3761)
+++ trunk/src/target/OM-2007.2/applications/openmoko-terminal2/src/mokoterminal.vala 2008-01-04 05:23:45 UTC (rev 3762)
@@ -27,27 +27,28 @@
public class OpenMokoTerminal2.MokoTerminal : HBox
{
- private string _fontname;
- private uint _fontsize;
- private Scrollbar _scrollbar;
- private Terminal _terminal;
+ 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;
+ 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" ); };
- _terminal.window_title_changed += term => { Gtk.Window toplevel = get_toplevel(); toplevel.set_title( term.window_title ); };
- pack_start( _terminal, true, true, 0 );
+ terminal = new Vte.Terminal();
+ terminal.child_exited += term => { stdout.printf( "unhandled eof\n" ); };
+ terminal.eof += term => { stdout.printf( "unhandled eof\n" ); };
+ terminal.window_title_changed += term => { Gtk.Window toplevel = get_toplevel(); toplevel.set_title( term.window_title ); };
+ pack_start( terminal, true, true, 0 );
- _scrollbar = new VScrollbar( _terminal.adjustment );
- pack_start( _scrollbar, false, false, 0 );
+ scrollbar = new VScrollbar( terminal.adjustment );
+ pack_start( scrollbar, false, false, 0 );
+ // yes, (ushort) is ugly. It's a vala bug and will go away soon
var fore = new Gdk.Color() { pixel = 0, red = (ushort)0x0000, green = (ushort)0x0000, blue = (ushort)0x0000 };
var back = new Gdk.Color() { pixel = 0, red = (ushort)0xffff, green = (ushort)0xffff, blue = (ushort)0xffff };
var colors = new Gdk.Color[] {
@@ -61,32 +62,42 @@
new Gdk.Color() { pixel = 0, red = (ushort)0x8000, green = (ushort)0x8000, blue = (ushort)0x8000 }
};
- _terminal.set_colors( ref fore, ref back, ref colors[0], 8 );
+ terminal.set_colors( ref fore, ref back, ref colors[0], 8 );
update_font();
- _terminal.set_scrollback_lines( 1000 );
- _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 );
+ terminal.set_scrollback_lines( 1000 );
+ 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 uint get_font_size()
+ {
+ return fontsize;
+ }
+
public void update_font()
{
- string font = "%s %d".printf( _fontname, _fontsize );
- _terminal.set_font_from_string_full( font, TerminalAntiAlias.FORCE_ENABLE );
+ string font = "%s %d".printf( fontname, fontsize );
+ terminal.set_font_from_string_full( font, TerminalAntiAlias.FORCE_ENABLE );
}
public void zoom_in()
{
- ++_fontsize;
+ ++fontsize;
update_font();
}
public void zoom_out()
{
- --_fontsize;
+ --fontsize;
update_font();
}
+
+ public void paste()
+ {
+ terminal.paste_primary();
+ }
}
More information about the commitlog
mailing list