Ejemplo n.º 1
0
Gobby::PreferencesDialog::User::User(Gtk::Window& parent,
                                     Preferences& preferences):
	m_group_settings(_("Settings")),
	m_group_remote(_("Remote Users")),
	m_group_local(_("Local Documents")),
	m_box_user_name(false, 6),
	m_lbl_user_name(_("User name:"), GtkCompat::ALIGN_LEFT),
	m_box_user_color(false, 6),
	m_lbl_user_color(_("User color:"), GtkCompat::ALIGN_LEFT),
	m_box_user_alpha(false, 6),
	m_lbl_user_alpha(_("Color intensity:"), GtkCompat::ALIGN_LEFT),
	m_scl_user_alpha(0.0, 1.0, 0.025),
	m_btn_user_color(_("Choose a new user color"), parent),
	m_btn_remote_show_cursors(_("Show cursors of remote users")),
	m_btn_remote_show_selections(_("Show selections of remote users")),
	m_btn_remote_show_current_lines(
		_("Highlight current line of remote users")),
	m_btn_remote_show_cursor_positions(
		_("Indicate cursor position of remote users "
		  "in the scrollbar")),
	m_btn_local_allow_connections(
		_("Allow remote users to edit local documents")),
	m_btn_local_require_password(
		_("Require remote users to enter a password")),
	m_lbl_local_password(_("Password:"******"Port:"), GtkCompat::ALIGN_LEFT),
	m_box_local_port(false, 6),
	m_box_local_connections(false, 6),
	m_btn_local_keep_documents(
		_("Remember local documents after Gobby restart")),
	m_lbl_local_documents_directory(_("Local documents directory:")),
	m_btn_local_documents_directory(
		Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER),
	m_conn_local_documents_directory(m_btn_local_documents_directory,
	                                 preferences.user.host_directory),
	m_box_local_documents_directory(false, 6),
	m_size_group(Gtk::SizeGroup::create(Gtk::SIZE_GROUP_HORIZONTAL))
{
	m_btn_local_allow_connections.signal_toggled().connect(
		sigc::mem_fun(
			*this, &User::on_local_allow_connections_toggled));
	m_btn_local_require_password.signal_toggled().connect(
		sigc::mem_fun(
			*this, &User::on_local_require_password_toggled));
	m_btn_local_keep_documents.signal_toggled().connect(
		sigc::mem_fun(
			*this, &User::on_local_keep_documents_toggled));

	m_lbl_user_name.show();
	m_ent_user_name.set_text(preferences.user.name);
	m_ent_user_name.show();
	connect_option(m_ent_user_name, preferences.user.name);

	m_box_user_name.pack_start(m_lbl_user_name, Gtk::PACK_SHRINK);
	m_box_user_name.pack_start(m_ent_user_name, Gtk::PACK_SHRINK);
	m_box_user_name.show();

	m_btn_user_color.set_hue(preferences.user.hue);
	m_btn_user_color.set_saturation(0.35);
	m_btn_user_color.set_value(1.0);
	m_btn_user_color.set_size_request(150, -1);
	m_lbl_user_color.show();
	m_btn_user_color.show();
	connect_hue_option(m_btn_user_color, preferences.user.hue);

	m_box_user_color.pack_start(m_lbl_user_color, Gtk::PACK_SHRINK);
	m_box_user_color.pack_start(
		m_btn_user_color, Gtk::PACK_SHRINK);
	m_box_user_color.show();

	m_lbl_user_alpha.show();
	m_scl_user_alpha.set_value(preferences.user.alpha);
	m_scl_user_alpha.set_show_fill_level(false);
	m_scl_user_alpha.set_draw_value(false);
	m_scl_user_alpha.show();
	connect_option(m_scl_user_alpha, preferences.user.alpha);

	m_box_user_alpha.pack_start(m_lbl_user_alpha, Gtk::PACK_SHRINK);
	m_box_user_alpha.pack_start(
		m_scl_user_alpha, Gtk::PACK_EXPAND_WIDGET);
	m_box_user_alpha.show();

	m_group_settings.add(m_box_user_name);
	m_group_settings.add(m_box_user_color);
	m_group_settings.add(m_box_user_alpha);

	m_size_group->add_widget(m_lbl_user_name);
	m_size_group->add_widget(m_lbl_user_color);
	m_size_group->add_widget(m_lbl_user_alpha);
	m_group_settings.show();

	m_btn_remote_show_cursors.set_active(
		preferences.user.show_remote_cursors);
	m_btn_remote_show_cursors.show();
	connect_option(m_btn_remote_show_cursors,
	               preferences.user.show_remote_cursors);

	m_btn_remote_show_selections.set_active(
		preferences.user.show_remote_selections);
	m_btn_remote_show_selections.show();
	connect_option(m_btn_remote_show_selections,
	               preferences.user.show_remote_selections);

	m_btn_remote_show_current_lines.set_active(
		preferences.user.show_remote_current_lines);
	m_btn_remote_show_current_lines.show();
	connect_option(m_btn_remote_show_current_lines,
	               preferences.user.show_remote_current_lines);

	m_btn_remote_show_cursor_positions.set_active(
		preferences.user.show_remote_cursor_positions);
	m_btn_remote_show_cursor_positions.show();
	connect_option(m_btn_remote_show_cursor_positions,
	               preferences.user.show_remote_cursor_positions);

	m_group_remote.add(m_btn_remote_show_cursors);
	m_group_remote.add(m_btn_remote_show_selections);
	m_group_remote.add(m_btn_remote_show_current_lines);
	m_group_remote.add(m_btn_remote_show_cursor_positions);
	m_group_remote.show();

	// TODO: Set mnemonics
	// m_lbl_autosave_interval.set_mnemonic_widget(m_ent_autosave_interval);

	m_btn_local_allow_connections.set_active(
		preferences.user.allow_remote_access);
	m_btn_local_allow_connections.show();
	connect_option(m_btn_local_allow_connections,
	               preferences.user.allow_remote_access);

	m_btn_local_require_password.set_active(
		preferences.user.require_password);
	m_btn_local_require_password.show();
	connect_option(m_btn_local_require_password,
	               preferences.user.require_password);

	m_lbl_local_password.show();
	m_ent_local_password.set_visibility(false);
	m_ent_local_password.set_text(
		static_cast<std::string>(preferences.user.password));
	m_ent_local_password.show();
	connect_option(m_ent_local_password,
	               preferences.user.password);

	m_box_local_password.pack_start(m_lbl_local_password,
	                                Gtk::PACK_SHRINK);
	m_box_local_password.pack_start(m_ent_local_password,
	                                Gtk::PACK_SHRINK);
	m_box_local_password.set_sensitive(preferences.user.require_password);
	m_box_local_password.show();

	m_lbl_local_port.show();
	m_ent_local_port.set_range(1, 65535);
	m_ent_local_port.set_value(preferences.user.port);
	m_ent_local_port.set_increments(1, 1);
	m_ent_local_port.show();
	connect_option(m_ent_local_port, preferences.user.port);

	m_box_local_port.pack_start(m_lbl_local_port,
	                            Gtk::PACK_SHRINK);
	m_box_local_port.pack_start(m_ent_local_port,
	                            Gtk::PACK_SHRINK);
	m_box_local_port.show();

	m_box_local_connections.pack_start(m_btn_local_require_password,
	                                   Gtk::PACK_SHRINK);
	m_box_local_connections.pack_start(*indent(m_box_local_password),
	                                   Gtk::PACK_SHRINK);
	m_box_local_connections.pack_start(m_box_local_port,
	                                   Gtk::PACK_SHRINK);
	m_box_local_connections.set_sensitive(
		preferences.user.allow_remote_access);
	m_box_local_connections.show();

	m_btn_local_keep_documents.set_active(
		preferences.user.keep_local_documents);
	m_btn_local_keep_documents.show();
	connect_option(m_btn_local_keep_documents,
	               preferences.user.keep_local_documents);

	m_lbl_local_documents_directory.show();
	m_btn_local_documents_directory.set_width_chars(20);
	m_btn_local_documents_directory.set_filename(
		static_cast<std::string>(preferences.user.host_directory));
	m_btn_local_documents_directory.show();

	m_box_local_documents_directory.pack_start(
		m_lbl_local_documents_directory,
		Gtk::PACK_SHRINK);
	m_box_local_documents_directory.pack_start(
		m_btn_local_documents_directory,
		Gtk::PACK_SHRINK);
	m_box_local_documents_directory.set_sensitive(
		preferences.user.keep_local_documents);
	m_box_local_documents_directory.show();

	m_group_local.add(m_btn_local_allow_connections);
	m_group_local.add(*indent(m_box_local_connections));
	m_group_local.add(m_btn_local_keep_documents);
	m_group_local.add(*indent(m_box_local_documents_directory));
	m_group_local.show();

	add(m_group_settings, false);
	add(m_group_remote, false);
	add(m_group_local, false);
}
Ejemplo n.º 2
0
Gobby::PreferencesDialog::User::User(
	const Glib::RefPtr<Gtk::Builder>& builder,
	Preferences& preferences)
{
	builder->get_widget("user-name", m_ent_user_name);
	builder->get_widget_derived("user-color", m_btn_user_color);
	builder->get_widget("color-intensity", m_scl_user_alpha);
	builder->get_widget("remote-show-cursors", m_btn_remote_show_cursors);
	builder->get_widget("remote-show-selections",
	                    m_btn_remote_show_selections);
	builder->get_widget("remote-show-current-line",
	                    m_btn_remote_show_current_lines);
	builder->get_widget("remote-show-in-scrollbar",
	                    m_btn_remote_show_cursor_positions);
	builder->get_widget("grid-local-connections",
	                    m_grid_local_connections);
	builder->get_widget("remote-allow-edit",
	                    m_btn_local_allow_connections);
	builder->get_widget("require-password",
	                    m_btn_local_require_password);
	builder->get_widget("grid-password", m_grid_password);
	builder->get_widget("password-entry", m_ent_local_password);
	builder->get_widget("port-number", m_ent_local_port);
	builder->get_widget("remember-local-documents",
	                    m_btn_local_keep_documents);
	builder->get_widget("grid-local-documents-directory",
	                    m_grid_local_documents_directory);
	builder->get_widget("local-documents-directory",
	                    m_btn_local_documents_directory);

	m_conn_local_documents_directory.reset(new PathConnection(
		*m_btn_local_documents_directory,
		preferences.user.host_directory));

	m_btn_local_allow_connections->signal_toggled().connect(
		sigc::mem_fun(
			*this, &User::on_local_allow_connections_toggled));
	m_btn_local_require_password->signal_toggled().connect(
		sigc::mem_fun(
			*this, &User::on_local_require_password_toggled));
	m_btn_local_keep_documents->signal_toggled().connect(
		sigc::mem_fun(
			*this, &User::on_local_keep_documents_toggled));

	m_ent_user_name->set_text(preferences.user.name);
	connect_option(*m_ent_user_name, preferences.user.name);

	m_btn_user_color->set_hue(preferences.user.hue);
	m_btn_user_color->set_saturation(0.35);
	m_btn_user_color->set_value(1.0);
	connect_hue_option(*m_btn_user_color, preferences.user.hue);

	m_scl_user_alpha->set_range(0.0, 1.0);
	m_scl_user_alpha->set_increments(0.0025, 0.1);
	m_scl_user_alpha->set_value(preferences.user.alpha);
	connect_option(*m_scl_user_alpha, preferences.user.alpha);

	m_btn_remote_show_cursors->set_active(
		preferences.user.show_remote_cursors);
	connect_option(*m_btn_remote_show_cursors,
	               preferences.user.show_remote_cursors);

	m_btn_remote_show_selections->set_active(
		preferences.user.show_remote_selections);
	connect_option(*m_btn_remote_show_selections,
	               preferences.user.show_remote_selections);

	m_btn_remote_show_current_lines->set_active(
		preferences.user.show_remote_current_lines);
	connect_option(*m_btn_remote_show_current_lines,
	               preferences.user.show_remote_current_lines);

	m_btn_remote_show_cursor_positions->set_active(
		preferences.user.show_remote_cursor_positions);
	connect_option(*m_btn_remote_show_cursor_positions,
	               preferences.user.show_remote_cursor_positions);

	m_btn_local_allow_connections->set_active(
		preferences.user.allow_remote_access);
	connect_option(*m_btn_local_allow_connections,
	               preferences.user.allow_remote_access);

	m_btn_local_require_password->set_active(
		preferences.user.require_password);
	connect_option(*m_btn_local_require_password,
	               preferences.user.require_password);

	m_ent_local_password->set_text(
		static_cast<std::string>(preferences.user.password));
	connect_option(*m_ent_local_password,
	               preferences.user.password);

	m_ent_local_port->set_range(1, 65535);
	m_ent_local_port->set_value(preferences.user.port);
	m_ent_local_port->set_increments(1, 1);
	connect_option(*m_ent_local_port, preferences.user.port);

	m_btn_local_keep_documents->set_active(
		preferences.user.keep_local_documents);
	connect_option(*m_btn_local_keep_documents,
	               preferences.user.keep_local_documents);

	m_btn_local_documents_directory->set_filename(
		static_cast<std::string>(preferences.user.host_directory));

	// Initial sensitivity
	on_local_allow_connections_toggled();
	on_local_require_password_toggled();
	on_local_keep_documents_toggled();
}