Changeset 18

Show
Ignore:
Timestamp:
01/21/07 11:40:50 (2 years ago)
Author:
inz
Message:

Add toolbar.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • osso-xterm/trunk/configure.ac

    r1 r18  
    1 AC_INIT([osso-xterm],[0.13.mh12]) 
     1AC_INIT([osso-xterm],[0.13.mh14]) 
    22 
    33dnl Initialize automake 
  • osso-xterm/trunk/debian/changelog

    r1 r18  
     1osso-xterm (0.13.mh14) unstable; urgency=low 
     2 
     3  * Add toolbar. 
     4 
     5 -- Santtu Lakkala <inz@inz.fi>  Sun, 21 Jan 2007 11:40:07 +0200 
     6 
    17osso-xterm (0.13.mh13) unstable; urgency=low 
    28 
  • osso-xterm/trunk/etc/osso-xterm.schemas

    r1 r18  
    2020                        <locale name="C"> 
    2121                                <short>Show scrolling bar in window</short> 
     22                        </locale> 
     23                </schema> 
     24                <schema> 
     25                        <key>/schemas/apps/osso/xterm/toolbar</key> 
     26                        <applyto>/apps/osso/xterm/toolbar</applyto> 
     27                        <owner>osso-xterm</owner> 
     28                        <type>bool</type> 
     29                        <default>true</default> 
     30                        <locale name="C"> 
     31                                <short>Show tool bar in window</short> 
     32                        </locale> 
     33                </schema> 
     34                <schema> 
     35                        <key>/schemas/apps/osso/xterm/screenkeys</key> 
     36                        <applyto>/apps/osso/xterm/screenkeys</applyto> 
     37                        <owner>osso-xterm</owner> 
     38                        <type>bool</type> 
     39                        <default>true</default> 
     40                        <locale name="C"> 
     41                                <short>Show screen keys in toolbar</short> 
    2242                        </locale> 
    2343                </schema> 
  • osso-xterm/trunk/src/terminal-app.c

    r1 r18  
    9494static void            terminal_app_action_scrollbar        (GtkToggleAction *action, 
    9595                                                             TerminalApp     *app); 
     96static void            terminal_app_action_toolbar        (GtkToggleAction *action, 
     97                                                             TerminalApp     *app); 
     98static void            terminal_app_action_screenkeys        (GtkToggleAction *action, 
     99                                                             TerminalApp     *app); 
    96100static void            terminal_app_action_prev_tab         (GtkAction       *action, 
    97101                                                             TerminalApp     *app); 
     
    165169  { "fullscreen", NULL, N_ ("Fullscreen"), NULL, NULL, G_CALLBACK (terminal_app_action_fullscreen), FALSE }, 
    166170  { "scrollbar", NULL, N_ ("Scrollbar"), NULL, NULL, G_CALLBACK (terminal_app_action_scrollbar), TRUE }, 
     171  { "toolbar", NULL, N_ ("Toolbar"), NULL, NULL, G_CALLBACK (terminal_app_action_toolbar), TRUE }, 
     172  { "screenkeys", NULL, N_ ("Screen keys"), NULL, NULL, G_CALLBACK (terminal_app_action_screenkeys), TRUE }, 
    167173}; 
    168174 
     
    180186 "    <menuitem action='reverse'/>" 
    181187 "    <menuitem action='scrollbar'/>" 
     188 "    <menuitem action='toolbar'/>" 
     189 "    <menuitem action='screenkeys'/>" 
    182190 "    <menuitem action='fullscreen'/>" 
    183191 "    <separator/>" 
     
    268276  attach_item(parent, actiongroup, accelgroup, "reverse"); 
    269277  attach_item(parent, actiongroup, accelgroup, "scrollbar"); 
     278  attach_item(parent, actiongroup, accelgroup, "toolbar"); 
     279  attach_item(parent, actiongroup, accelgroup, "screenkeys"); 
    270280  attach_item(parent, actiongroup, accelgroup, "fullscreen"); 
    271281  gtk_menu_shell_append(GTK_MENU_SHELL(parent), 
     
    405415  gchar               *role; 
    406416  gint                 font_size; 
    407   gboolean             scrollbar, reverse; 
     417  gboolean             scrollbar, toolbar, screenkeys, reverse; 
    408418  GConfClient         *gconf_client; 
    409419  GConfValue          *gconf_value; 
     
    444454          if (gconf_value->type == GCONF_VALUE_BOOL) 
    445455                  scrollbar = gconf_value_get_bool(gconf_value); 
     456          gconf_value_free(gconf_value); 
     457  } 
     458 
     459  gconf_value = gconf_client_get(gconf_client, 
     460                                 OSSO_XTERM_GCONF_TOOLBAR, 
     461                                 &error); 
     462 
     463  if (error != NULL) { 
     464      g_printerr("Unable to get toolbar setting from gconf: %s\n", 
     465                 error->message); 
     466      g_error_free(error); 
     467      error = NULL; 
     468  } 
     469  toolbar = OSSO_XTERM_DEFAULT_TOOLBAR; 
     470  if (gconf_value) { 
     471          if (gconf_value->type == GCONF_VALUE_BOOL) 
     472                  toolbar = gconf_value_get_bool(gconf_value); 
     473          gconf_value_free(gconf_value); 
     474  } 
     475 
     476  gconf_value = gconf_client_get(gconf_client, 
     477                                 OSSO_XTERM_GCONF_SCREENKEYS, 
     478                                 &error); 
     479 
     480  if (error != NULL) { 
     481      g_printerr("Unable to get screenkeys setting from gconf: %s\n", 
     482                 error->message); 
     483      g_error_free(error); 
     484      error = NULL; 
     485  } 
     486  screenkeys = OSSO_XTERM_DEFAULT_SCREENKEYS; 
     487  if (gconf_value) { 
     488          if (gconf_value->type == GCONF_VALUE_BOOL) 
     489                  screenkeys = gconf_value_get_bool(gconf_value); 
    446490          gconf_value_free(gconf_value); 
    447491  } 
     
    486530  action = gtk_action_group_get_action(app->action_group, "scrollbar"); 
    487531  gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), scrollbar); 
     532 
     533  action = gtk_action_group_get_action(app->action_group, "toolbar"); 
     534  gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), toolbar); 
     535 
     536  action = gtk_action_group_get_action(app->action_group, "screenkeys"); 
     537  gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), screenkeys); 
    488538 
    489539  action = gtk_action_group_get_action(app->action_group, "reverse"); 
     
    878928} 
    879929 
     930static void 
     931terminal_app_action_toolbar (GtkToggleAction *action, 
     932                               TerminalApp     *app) 
     933{ 
     934    GConfClient *client; 
     935    gboolean show; 
     936 
     937    client = gconf_client_get_default(); 
     938    show = gtk_toggle_action_get_active (action); 
     939 
     940    gconf_client_set_bool (client, 
     941                           OSSO_XTERM_GCONF_TOOLBAR, 
     942                           show, 
     943                           NULL); 
     944 
     945    g_object_unref(G_OBJECT(client)); 
     946} 
     947 
     948static void 
     949terminal_app_action_screenkeys (GtkToggleAction *action, 
     950                               TerminalApp     *app) 
     951{ 
     952    GConfClient *client; 
     953    gboolean show; 
     954 
     955    client = gconf_client_get_default(); 
     956    show = gtk_toggle_action_get_active (action); 
     957 
     958    gconf_client_set_bool (client, 
     959                           OSSO_XTERM_GCONF_SCREENKEYS, 
     960                           show, 
     961                           NULL); 
     962 
     963    g_object_unref(G_OBJECT(client)); 
     964} 
    880965 
    881966static void 
  • osso-xterm/trunk/src/terminal-gconf.h

    r1 r18  
    5252 
    5353/* Boolean */ 
     54#define OSSO_XTERM_GCONF_TOOLBAR   OSSO_XTERM_GCONF_PATH "/toolbar" 
     55#define OSSO_XTERM_DEFAULT_TOOLBAR TRUE 
     56 
     57/* Boolean */ 
     58#define OSSO_XTERM_GCONF_SCREENKEYS   OSSO_XTERM_GCONF_PATH "/screenkeys" 
     59#define OSSO_XTERM_DEFAULT_SCREENKEYS TRUE 
     60 
     61/* Boolean */ 
    5462#define OSSO_XTERM_GCONF_REVERSE     OSSO_XTERM_GCONF_PATH "/reverse" 
    5563#define OSSO_XTERM_DEFAULT_REVERSE   TRUE 
  • osso-xterm/trunk/src/terminal-widget.c

    r1 r18  
    124124                                                               GConfEntry     *entry, 
    125125                                                               TerminalWidget *widget); 
     126static void     terminal_widget_gconf_toolbar               (GConfClient    *client, 
     127                                                               guint           conn_id, 
     128                                                               GConfEntry     *entry, 
     129                                                               TerminalWidget *widget); 
     130static void     terminal_widget_gconf_screenkeys               (GConfClient    *client, 
     131                                                               guint           conn_id, 
     132                                                               GConfEntry     *entry, 
     133                                                               TerminalWidget *widget); 
    126134static void     terminal_widget_gconf_reverse                 (GConfClient    *client, 
    127135                                                               guint           conn_id, 
     
    137145static void     terminal_widget_update_scrolling_bar          (TerminalWidget *widget, 
    138146                                                               gboolean show); 
     147static void     terminal_widget_update_tool_bar          (TerminalWidget *widget, 
     148                                                               gboolean show); 
     149static void     terminal_widget_update_screen_keys          (TerminalWidget *widget, 
     150                                                               gboolean show); 
    139151static void     terminal_widget_update_colors                 (TerminalWidget *widget, 
    140152                                                               const gchar *fg_name, 
     
    146158static void     terminal_widget_emit_context_menu            (TerminalWidget *widget, 
    147159                                                              gpointer user_data); 
     160static void     terminal_widget_vte_ctrlify_notify           (VteTerminal *terminal, 
     161                                                              GParamSpec  *pspec, 
     162                                                              TerminalWidget *widget); 
     163static void     terminal_widget_ctrlify_notify               (GtkToggleToolButton *item, 
     164                                                              TerminalWidget *widget); 
     165static void     terminal_widget_next_window                  (GtkToolButton *button, 
     166                                                              TerminalWidget *widget); 
     167static void     terminal_widget_prev_window                  (GtkToolButton *button, 
     168                                                              TerminalWidget *widget); 
    148169 
    149170 
     
    280301  GError *err = NULL; 
    281302  gboolean scrollbar; 
     303  gboolean toolbar; 
     304  gboolean screenkeys; 
    282305  GConfValue *gconf_value; 
    283306 
     
    299322          OSSO_XTERM_GCONF_SCROLLBAR, 
    300323          (GConfClientNotifyFunc)terminal_widget_gconf_scrollbar, 
     324          widget, 
     325          NULL, &err); 
     326  widget->toolbar_conid = gconf_client_notify_add(widget->gconf_client, 
     327          OSSO_XTERM_GCONF_TOOLBAR, 
     328          (GConfClientNotifyFunc)terminal_widget_gconf_toolbar, 
     329          widget, 
     330          NULL, &err); 
     331  widget->screenkeys_conid = gconf_client_notify_add(widget->gconf_client, 
     332          OSSO_XTERM_GCONF_SCREENKEYS, 
     333          (GConfClientNotifyFunc)terminal_widget_gconf_screenkeys, 
    301334          widget, 
    302335          NULL, &err); 
     
    407440  gtk_box_pack_start (GTK_BOX (widget), widget->scrollbar, FALSE, FALSE, 0); 
    408441 
     442  widget->tbar = g_object_new(GTK_TYPE_TOOLBAR,  
     443                  "orientation", GTK_ORIENTATION_VERTICAL, 
     444                  NULL); 
     445  widget->cbutton = gtk_toggle_tool_button_new(); 
     446  gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget->cbutton), "C"); 
     447  gtk_widget_show(GTK_WIDGET(widget->cbutton)); 
     448 
     449  g_signal_connect (G_OBJECT(widget->terminal), "notify::ctrlify", 
     450                    G_CALLBACK(terminal_widget_vte_ctrlify_notify), 
     451                    widget); 
     452  g_signal_connect (G_OBJECT(widget->cbutton), "toggled", 
     453                    G_CALLBACK(terminal_widget_ctrlify_notify), 
     454                    widget); 
     455 
     456  widget->nbutton = gtk_tool_button_new(NULL, ">"); 
     457 
     458  g_signal_connect (G_OBJECT(widget->nbutton), "clicked", 
     459                    G_CALLBACK(terminal_widget_next_window), 
     460                    widget); 
     461 
     462  widget->pbutton = gtk_tool_button_new(NULL, "<"); 
     463 
     464  g_signal_connect (G_OBJECT(widget->pbutton), "clicked", 
     465                    G_CALLBACK(terminal_widget_prev_window), 
     466                    widget); 
     467 
     468  gtk_toolbar_insert(GTK_TOOLBAR(widget->tbar), 
     469                  widget->pbutton, 
     470                  -1); 
     471  gtk_toolbar_insert(GTK_TOOLBAR(widget->tbar), 
     472                  widget->nbutton, 
     473                  -1); 
     474  gtk_toolbar_insert(GTK_TOOLBAR(widget->tbar), 
     475                  widget->cbutton, 
     476                  -1); 
     477  gtk_box_pack_start (GTK_BOX (widget), widget->tbar, FALSE, FALSE, 0); 
     478 
    409479  /* apply current settings */ 
    410480  gconf_value = gconf_client_get(widget->gconf_client, 
     
    423493  } 
    424494 
     495  /* apply current settings */ 
     496  gconf_value = gconf_client_get(widget->gconf_client, 
     497                                 OSSO_XTERM_GCONF_TOOLBAR, 
     498                                 &err); 
     499  if (err != NULL) { 
     500      g_printerr("Unable to get toolbar setting from gconf: %s\n", 
     501                 err->message); 
     502      g_clear_error(&err); 
     503  } 
     504  toolbar = OSSO_XTERM_DEFAULT_TOOLBAR; 
     505  if (gconf_value) { 
     506          if (gconf_value->type == GCONF_VALUE_BOOL) 
     507                  toolbar = gconf_value_get_bool(gconf_value); 
     508          gconf_value_free(gconf_value); 
     509  } 
     510 
     511  gconf_value = gconf_client_get(widget->gconf_client, 
     512                                 OSSO_XTERM_GCONF_SCREENKEYS, 
     513                                 &err); 
     514  if (err != NULL) { 
     515      g_printerr("Unable to get toolbar setting from gconf: %s\n", 
     516                 err->message); 
     517      g_clear_error(&err); 
     518  } 
     519  screenkeys = OSSO_XTERM_DEFAULT_SCREENKEYS; 
     520  if (gconf_value) { 
     521          if (gconf_value->type == GCONF_VALUE_BOOL) 
     522                  screenkeys = gconf_value_get_bool(gconf_value); 
     523          gconf_value_free(gconf_value); 
     524  } 
     525 
    425526  terminal_widget_update_scrolling_bar(TERMINAL_WIDGET(widget), scrollbar); 
     527  terminal_widget_update_tool_bar(TERMINAL_WIDGET(widget), toolbar); 
     528  terminal_widget_update_screen_keys(TERMINAL_WIDGET(widget), screenkeys); 
    426529  terminal_widget_gconf_font_size(widget->gconf_client, 0, NULL, widget); 
    427530  terminal_widget_gconf_reverse (widget->gconf_client, 0, NULL, widget); 
     
    479582  gconf_client_notify_remove(widget->gconf_client, 
    480583                             widget->scrollbar_conid); 
     584  gconf_client_notify_remove(widget->gconf_client, 
     585                             widget->toolbar_conid); 
     586  gconf_client_notify_remove(widget->gconf_client, 
     587                             widget->screenkeys_conid); 
    481588  gconf_client_notify_remove(widget->gconf_client, 
    482589                             widget->font_name_conid); 
     
    9601067} 
    9611068 
     1069static void 
     1070terminal_widget_update_tool_bar (TerminalWidget *widget, gboolean show) 
     1071{ 
     1072    if (show) { 
     1073        gtk_widget_show (widget->tbar); 
     1074    } 
     1075    else { 
     1076        gtk_widget_hide (widget->tbar); 
     1077    } 
     1078} 
     1079 
     1080static void 
     1081terminal_widget_update_screen_keys (TerminalWidget *widget, gboolean show) 
     1082{ 
     1083    if (show) { 
     1084        gtk_widget_show (GTK_WIDGET(widget->nbutton)); 
     1085        gtk_widget_show (GTK_WIDGET(widget->pbutton)); 
     1086    } 
     1087    else { 
     1088        gtk_widget_hide (GTK_WIDGET(widget->nbutton)); 
     1089        gtk_widget_hide (GTK_WIDGET(widget->pbutton)); 
     1090    } 
     1091} 
    9621092 
    9631093static void 
     
    9981128} 
    9991129 
     1130static void 
     1131terminal_widget_gconf_toolbar(GConfClient    *client, 
     1132                                guint           conn_id, 
     1133                                GConfEntry     *entry, 
     1134                                TerminalWidget *widget) { 
     1135    GConfValue *value; 
     1136    gboolean toolbar; 
     1137 
     1138    value = gconf_entry_get_value(entry); 
     1139    toolbar = gconf_value_get_bool(value); 
     1140    terminal_widget_update_tool_bar(widget, toolbar); 
     1141} 
     1142 
     1143static void 
     1144terminal_widget_gconf_screenkeys(GConfClient    *client, 
     1145                                guint           conn_id, 
     1146                                GConfEntry     *entry, 
     1147                                TerminalWidget *widget) { 
     1148    GConfValue *value; 
     1149    gboolean screenkeys; 
     1150 
     1151    value = gconf_entry_get_value(entry); 
     1152    screenkeys = gconf_value_get_bool(value); 
     1153    terminal_widget_update_screen_keys(widget, screenkeys); 
     1154} 
    10001155 
    10011156static void 
     
    14941649      tag); 
    14951650} 
     1651 
     1652static void 
     1653terminal_widget_vte_ctrlify_notify (VteTerminal    *terminal, 
     1654                                    GParamSpec     *pspec, 
     1655                                    TerminalWidget *widget) 
     1656{ 
     1657  gboolean bval = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON( 
     1658                          widget->cbutton)); 
     1659  gboolean tval; 
     1660  g_object_get(widget->terminal, "ctrlify", &tval, NULL); 
     1661 
     1662  if (bval != tval) { 
     1663    gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(widget->cbutton), 
     1664        tval); 
     1665  } 
     1666} 
     1667 
     1668static void 
     1669terminal_widget_ctrlify_notify (GtkToggleToolButton    *item, 
     1670                                TerminalWidget *widget) 
     1671{ 
     1672  gboolean bval = gtk_toggle_tool_button_get_active(item); 
     1673  gboolean tval; 
     1674  g_object_get(widget->terminal, "ctrlify", &tval, NULL); 
     1675 
     1676  if (bval != tval) { 
     1677    g_object_set(widget->terminal, "ctrlify", bval, NULL); 
     1678  } 
     1679} 
     1680 
     1681static void 
     1682terminal_widget_send_key(TerminalWidget *widget, 
     1683                         const char *str, 
     1684                         guint state) 
     1685{ 
     1686  GdkEventKey *key; 
     1687 
     1688  key = (GdkEventKey *) gdk_event_new(GDK_KEY_PRESS); 
     1689 
     1690  key->window = GTK_WIDGET(widget->terminal)->window; 
     1691  key->time = GDK_CURRENT_TIME; 
     1692  key->state = state; 
     1693  key->keyval = gdk_keyval_from_name(str); 
     1694  gdk_event_put ((GdkEvent *) key); 
     1695 
     1696  key->type = GDK_KEY_RELEASE; 
     1697  key->state |= GDK_RELEASE_MASK; 
     1698  gdk_event_put ((GdkEvent *) key); 
     1699 
     1700  g_object_ref(key->window); 
     1701  gdk_event_free((GdkEvent *) key); 
     1702} 
     1703 
     1704static void 
     1705terminal_widget_next_window (GtkToolButton *button, 
     1706                             TerminalWidget *widget) 
     1707{ 
     1708        terminal_widget_send_key(widget, "a", GDK_CONTROL_MASK); 
     1709        terminal_widget_send_key(widget, "n", 0); 
     1710} 
     1711 
     1712static void 
     1713terminal_widget_prev_window (GtkToolButton *button, 
     1714                             TerminalWidget *widget) 
     1715{ 
     1716        terminal_widget_send_key(widget, "a", GDK_CONTROL_MASK); 
     1717        terminal_widget_send_key(widget, "p", 0); 
     1718} 
  • osso-xterm/trunk/src/terminal-widget.h

    r1 r18  
    5252  GtkWidget           *terminal; 
    5353  GtkWidget           *scrollbar; 
     54  GtkWidget           *tbar; 
     55  GtkToolItem         *cbutton; 
     56  GtkToolItem         *nbutton; 
     57  GtkToolItem         *pbutton; 
    5458 
    5559  GPid                 pid; 
     
    6165  GConfClient         *gconf_client; 
    6266  guint                scrollbar_conid; 
     67  guint                toolbar_conid; 
     68  guint                screenkeys_conid; 
    6369  guint                font_size_conid; 
    6470  guint                font_base_size_conid;