static void terminal_create (TerminalPlugin *term_plugin) { GtkWidget *frame; g_return_if_fail(term_plugin != NULL); term_plugin->child_pid = 0; /* Create the terminals. */ term_plugin->shell = create_terminal (term_plugin); term_plugin->shell_box = create_box (term_plugin->shell); term_plugin->term = create_terminal (term_plugin); term_plugin->term_box = create_box (term_plugin->term); /* key-press handler for ctrl-d "kill" */ g_signal_connect (G_OBJECT (term_plugin->term), "key-press-event", G_CALLBACK (terminal_keypress_cb), term_plugin); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (frame), term_plugin->shell_box); gtk_widget_show_all (frame); term_plugin->frame = frame; g_signal_connect (vte_reaper_get(), "child-exited", G_CALLBACK (terminal_child_exited_cb), term_plugin); init_shell (term_plugin, NULL); }
static void terminal_nautilus_menu_item_activate (NautilusMenuItem *item) { TerminalNautilusMenuItem *menu_item = TERMINAL_NAUTILUS_MENU_ITEM (item); TerminalNautilus *nautilus = menu_item->nautilus; char *uri, *path; TerminalFileInfo info; ExecData *data; uri = nautilus_file_info_get_activation_uri (menu_item->file_info); if (uri == NULL) return; path = NULL; info = get_terminal_file_info_from_uri (uri); switch (info) { case FILE_INFO_LOCAL: path = g_filename_from_uri (uri, NULL, NULL); break; case FILE_INFO_DESKTOP: if (desktop_is_home_dir (nautilus) || desktop_opens_home_dir (nautilus)) { path = g_strdup (g_get_home_dir ()); } else { path = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP)); } break; case FILE_INFO_SFTP: if (menu_item->remote_terminal) break; /* fall through */ case FILE_INFO_OTHER: { GFile *file; /* map back remote URI to local path */ file = g_file_new_for_uri (uri); path = g_file_get_path (file); g_object_unref (file); break; } default: g_assert_not_reached (); } if (path == NULL && (info != FILE_INFO_SFTP || !menu_item->remote_terminal)) { g_free (uri); return; } data = g_new (ExecData, 1); data->nautilus = g_object_ref (nautilus); data->timestamp = gtk_get_current_event_time (); data->path = path; data->uri = uri; data->display = gdk_screen_make_display_name (menu_item->screen); data->info = info; data->remote = menu_item->remote_terminal; data->run_in_mc = menu_item->run_in_mc; create_terminal (data); }