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); }
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(); }