Changeset 18
- Timestamp:
- 01/21/07 11:40:50 (2 years ago)
- Files:
-
- osso-xterm/trunk/acinclude.m4 (added)
- osso-xterm/trunk/configure.ac (modified) (1 diff)
- osso-xterm/trunk/debian/changelog (modified) (1 diff)
- osso-xterm/trunk/etc/osso-xterm.schemas (modified) (1 diff)
- osso-xterm/trunk/src/terminal-app.c (modified) (8 diffs)
- osso-xterm/trunk/src/terminal-gconf.h (modified) (1 diff)
- osso-xterm/trunk/src/terminal-widget.c (modified) (11 diffs)
- osso-xterm/trunk/src/terminal-widget.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
osso-xterm/trunk/configure.ac
r1 r18 1 AC_INIT([osso-xterm],[0.13.mh1 2])1 AC_INIT([osso-xterm],[0.13.mh14]) 2 2 3 3 dnl Initialize automake osso-xterm/trunk/debian/changelog
r1 r18 1 osso-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 1 7 osso-xterm (0.13.mh13) unstable; urgency=low 2 8 osso-xterm/trunk/etc/osso-xterm.schemas
r1 r18 20 20 <locale name="C"> 21 21 <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> 22 42 </locale> 23 43 </schema> osso-xterm/trunk/src/terminal-app.c
r1 r18 94 94 static void terminal_app_action_scrollbar (GtkToggleAction *action, 95 95 TerminalApp *app); 96 static void terminal_app_action_toolbar (GtkToggleAction *action, 97 TerminalApp *app); 98 static void terminal_app_action_screenkeys (GtkToggleAction *action, 99 TerminalApp *app); 96 100 static void terminal_app_action_prev_tab (GtkAction *action, 97 101 TerminalApp *app); … … 165 169 { "fullscreen", NULL, N_ ("Fullscreen"), NULL, NULL, G_CALLBACK (terminal_app_action_fullscreen), FALSE }, 166 170 { "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 }, 167 173 }; 168 174 … … 180 186 " <menuitem action='reverse'/>" 181 187 " <menuitem action='scrollbar'/>" 188 " <menuitem action='toolbar'/>" 189 " <menuitem action='screenkeys'/>" 182 190 " <menuitem action='fullscreen'/>" 183 191 " <separator/>" … … 268 276 attach_item(parent, actiongroup, accelgroup, "reverse"); 269 277 attach_item(parent, actiongroup, accelgroup, "scrollbar"); 278 attach_item(parent, actiongroup, accelgroup, "toolbar"); 279 attach_item(parent, actiongroup, accelgroup, "screenkeys"); 270 280 attach_item(parent, actiongroup, accelgroup, "fullscreen"); 271 281 gtk_menu_shell_append(GTK_MENU_SHELL(parent), … … 405 415 gchar *role; 406 416 gint font_size; 407 gboolean scrollbar, reverse;417 gboolean scrollbar, toolbar, screenkeys, reverse; 408 418 GConfClient *gconf_client; 409 419 GConfValue *gconf_value; … … 444 454 if (gconf_value->type == GCONF_VALUE_BOOL) 445 455 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); 446 490 gconf_value_free(gconf_value); 447 491 } … … 486 530 action = gtk_action_group_get_action(app->action_group, "scrollbar"); 487 531 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); 488 538 489 539 action = gtk_action_group_get_action(app->action_group, "reverse"); … … 878 928 } 879 929 930 static void 931 terminal_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 948 static void 949 terminal_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 } 880 965 881 966 static void osso-xterm/trunk/src/terminal-gconf.h
r1 r18 52 52 53 53 /* 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 */ 54 62 #define OSSO_XTERM_GCONF_REVERSE OSSO_XTERM_GCONF_PATH "/reverse" 55 63 #define OSSO_XTERM_DEFAULT_REVERSE TRUE osso-xterm/trunk/src/terminal-widget.c
r1 r18 124 124 GConfEntry *entry, 125 125 TerminalWidget *widget); 126 static void terminal_widget_gconf_toolbar (GConfClient *client, 127 guint conn_id, 128 GConfEntry *entry, 129 TerminalWidget *widget); 130 static void terminal_widget_gconf_screenkeys (GConfClient *client, 131 guint conn_id, 132 GConfEntry *entry, 133 TerminalWidget *widget); 126 134 static void terminal_widget_gconf_reverse (GConfClient *client, 127 135 guint conn_id, … … 137 145 static void terminal_widget_update_scrolling_bar (TerminalWidget *widget, 138 146 gboolean show); 147 static void terminal_widget_update_tool_bar (TerminalWidget *widget, 148 gboolean show); 149 static void terminal_widget_update_screen_keys (TerminalWidget *widget, 150 gboolean show); 139 151 static void terminal_widget_update_colors (TerminalWidget *widget, 140 152 const gchar *fg_name, … … 146 158 static void terminal_widget_emit_context_menu (TerminalWidget *widget, 147 159 gpointer user_data); 160 static void terminal_widget_vte_ctrlify_notify (VteTerminal *terminal, 161 GParamSpec *pspec, 162 TerminalWidget *widget); 163 static void terminal_widget_ctrlify_notify (GtkToggleToolButton *item, 164 TerminalWidget *widget); 165 static void terminal_widget_next_window (GtkToolButton *button, 166 TerminalWidget *widget); 167 static void terminal_widget_prev_window (GtkToolButton *button, 168 TerminalWidget *widget); 148 169 149 170 … … 280 301 GError *err = NULL; 281 302 gboolean scrollbar; 303 gboolean toolbar; 304 gboolean screenkeys; 282 305 GConfValue *gconf_value; 283 306 … … 299 322 OSSO_XTERM_GCONF_SCROLLBAR, 300 323 (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, 301 334 widget, 302 335 NULL, &err); … … 407 440 gtk_box_pack_start (GTK_BOX (widget), widget->scrollbar, FALSE, FALSE, 0); 408 441 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 409 479 /* apply current settings */ 410 480 gconf_value = gconf_client_get(widget->gconf_client, … … 423 493 } 424 494 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 425 526 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); 426 529 terminal_widget_gconf_font_size(widget->gconf_client, 0, NULL, widget); 427 530 terminal_widget_gconf_reverse (widget->gconf_client, 0, NULL, widget); … … 479 582 gconf_client_notify_remove(widget->gconf_client, 480 583 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); 481 588 gconf_client_notify_remove(widget->gconf_client, 482 589 widget->font_name_conid); … … 960 1067 } 961 1068 1069 static void 1070 terminal_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 1080 static void 1081 terminal_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 } 962 1092 963 1093 static void … … 998 1128 } 999 1129 1130 static void 1131 terminal_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 1143 static void 1144 terminal_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 } 1000 1155 1001 1156 static void … … 1494 1649 tag); 1495 1650 } 1651 1652 static void 1653 terminal_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 1668 static void 1669 terminal_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 1681 static void 1682 terminal_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 1704 static void 1705 terminal_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 1712 static void 1713 terminal_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 52 52 GtkWidget *terminal; 53 53 GtkWidget *scrollbar; 54 GtkWidget *tbar; 55 GtkToolItem *cbutton; 56 GtkToolItem *nbutton; 57 GtkToolItem *pbutton; 54 58 55 59 GPid pid; … … 61 65 GConfClient *gconf_client; 62 66 guint scrollbar_conid; 67 guint toolbar_conid; 68 guint screenkeys_conid; 63 69 guint font_size_conid; 64 70 guint font_base_size_conid;
