Я хочу сделать веб-браузер в Vala с помощью WebKit.
Но, я не знаю, как заставить его мультиобработать.
Я хочу, чтобы каждая вкладка имела свой собственный процесс.
Как я могу сделать то использование Vala и Gtk +.
Спасибо за Ваш ответ.
Посмотрите Gtk.Plug
и Gtk.Socket
. Вам нужно будет поместить Gtk.Socket
в каждую открытую вкладку. Затем породите процесс, используя одну из функций GLib.Process
, и в этом процессе создайте Gtk.Plug
, содержащий ваш WebView
. Затем вам понадобится какой-то способ межпроцессного взаимодействия, например, для подключения вашего плагина к сокету и для передачи команд от вашего пользовательского интерфейса к веб-вью (например, "сделать шрифт крупнее").
Похоже, что документация Vala содержит не очень много объяснений, вы можете посмотреть документацию по C для получения дополнительной информации о том, как работают штекеры и сокеты.
EDIT:
Вы просили больше информации о межпроцессном взаимодействии. Есть несколько способов, и я не уверен, какой из них наиболее подходящий для вас. Возможно, вы можете попробовать GLib.Process.spawn_async_with_pipes()
для запуска дочернего процесса и получения дескрипторов файлов для стандартного ввода и вывода дочернего процесса. Затем вы можете передать эти дескрипторы файлов в GLib.IOChannel.unix_new()
для передачи сообщений туда и обратно между вашими процессами.
Другой способ - использовать DBus, но это сложнее и менее документировано.
Возможно, вы захотите использовать GtkPlug см. это обсуждение в Vala-list (и gtk forum).