Changeset 3d3692a5077fa50f51604e7957b820667351de92

Show
Ignore:
Timestamp:
01/06/07 23:44:02 (6 years ago)
Author:
Philipp Kern <phil@…>
Parents:
c22e31bfd4133f8ff54382f2144309a4df2cf1a8
Children:
e1a4ceb7c162cd72af08edb9038ece416f06f399
git-committer:
Philipp Kern <phil@0x539.de> / 2007-01-06T22:44:02Z+0000
Message:

[project @ Improved the Zeroconf handling]

Original author: Philipp Kern <phil@…>
Date: 2005-07-24 22:35:50+00:00

Files:
4 modified

Legend:

Unmodified
Added
Removed
  • inc/joindialog.hpp

    r1d335d3 r3d3692a  
    5757#endif 
    5858 
     59#ifndef WITH_HOWL 
     60        JoinDialog(Gtk::Window& parent, Gobby::Config& config); 
     61#else 
    5962        JoinDialog(Gtk::Window& parent, Gobby::Config& config, 
    60                    void* zeroconf = NULL); 
     63                   obby::zeroconf* zeroconf); 
     64#endif 
    6165        virtual ~JoinDialog(); 
    6266 
     
    97101        Glib::RefPtr<Gtk::ListStore> m_session_list; 
    98102        Columns m_session_cols; 
    99         obby::zeroconf& m_zeroconf; 
     103        obby::zeroconf* m_zeroconf; 
    100104        sigc::connection m_timer_connection; 
    101105#endif 
  • inc/window.hpp

    rc22e31b r3d3692a  
    109109        void save_local_file(Document& doc, const Glib::ustring& file); 
    110110        void close_document(DocWindow& doc); 
    111         void display_error(const Glib::ustring& message); 
     111        void display_error(const Glib::ustring& message, 
     112                           const Gtk::MessageType type = Gtk::MESSAGE_ERROR); 
    112113 
    113114        // Config 
     
    139140        std::auto_ptr<obby::local_buffer> m_buffer; 
    140141#ifdef WITH_HOWL 
    141         obby::zeroconf m_zeroconf; 
     142        std::auto_ptr<obby::zeroconf> m_zeroconf; 
    142143#endif 
    143144        sigc::connection m_timer_conn; 
  • src/joindialog.cpp

    r0f87c1f r3d3692a  
    3131#endif 
    3232 
     33#ifndef WITH_HOWL 
     34Gobby::JoinDialog::JoinDialog(Gtk::Window& parent, Gobby::Config& config) 
     35#else 
    3336Gobby::JoinDialog::JoinDialog(Gtk::Window& parent, Gobby::Config& config, 
    34                               void* zeroconf) 
     37                              obby::zeroconf* zeroconf) 
     38#endif 
    3539 : DefaultDialog(_("Join obby session"), parent, true, true), 
    3640   m_config(config), 
     
    4145   m_lbl_color(_("Colour:"), Gtk::ALIGN_RIGHT) 
    4246#ifdef WITH_HOWL 
    43    , m_ep_discover(_("Local network")), 
    44      m_zeroconf(*static_cast<obby::zeroconf*>(zeroconf)) 
     47   , m_ep_discover(_("Local network")), m_zeroconf(zeroconf) 
    4548#endif 
    4649{ 
     
    9093 
    9194#ifdef WITH_HOWL 
    92         m_session_list = Gtk::ListStore::create(m_session_cols); 
    93         m_session_view.set_model(m_session_list); 
    94         m_session_view.append_column(_("User"), m_session_cols.name); 
    95         m_session_view.append_column(_("Host"), m_session_cols.host); 
    96         m_session_view.append_column(_("Port"), m_session_cols.port); 
    97         m_session_view.get_selection()->set_mode( 
    98                 Gtk::SELECTION_SINGLE); 
    99         m_session_view.get_selection()->signal_changed().connect( 
    100                 sigc::mem_fun(*this, &JoinDialog::on_change) ); 
    101         m_ep_discover.add(m_session_view); 
    102  
    103         m_zeroconf.discover_event().connect(sigc::mem_fun(*this, 
    104                                             &JoinDialog::on_discover) ); 
    105         m_zeroconf.leave_event().connect(sigc::mem_fun(*this, 
    106                                          &JoinDialog::on_leave) ); 
    107         m_zeroconf.discover(); 
    108         m_timer_connection = Glib::signal_timeout().connect( 
    109                 sigc::mem_fun(*this, &JoinDialog::on_timer), 400); 
    110  
    111         m_vbox.set_spacing(5); 
    112         m_vbox.pack_start(m_table); 
    113         m_vbox.pack_start(m_ep_discover); 
    114         get_vbox()->pack_start(m_vbox); 
     95        if(m_zeroconf) 
     96        { 
     97                m_session_list = Gtk::ListStore::create(m_session_cols); 
     98                m_session_view.set_model(m_session_list); 
     99                m_session_view.append_column(_("User"), m_session_cols.name); 
     100                m_session_view.append_column(_("Host"), m_session_cols.host); 
     101                m_session_view.append_column(_("Port"), m_session_cols.port); 
     102                m_session_view.get_selection()->set_mode( 
     103                        Gtk::SELECTION_SINGLE); 
     104                m_session_view.get_selection()->signal_changed().connect( 
     105                        sigc::mem_fun(*this, &JoinDialog::on_change) ); 
     106                m_ep_discover.add(m_session_view); 
     107 
     108                m_zeroconf->discover_event().connect( 
     109                        sigc::mem_fun(*this, &JoinDialog::on_discover)); 
     110                m_zeroconf->leave_event().connect( 
     111                        sigc::mem_fun(*this, &JoinDialog::on_leave) ); 
     112                m_zeroconf->discover(); 
     113                m_timer_connection = Glib::signal_timeout().connect( 
     114                        sigc::mem_fun(*this, &JoinDialog::on_timer), 400); 
     115 
     116                m_vbox.set_spacing(5); 
     117                m_vbox.pack_start(m_table); 
     118                m_vbox.pack_start(m_ep_discover); 
     119                get_vbox()->pack_start(m_vbox); 
     120        } 
     121        else 
     122        { 
     123                // Howl is deactivated 
     124                get_vbox()->set_spacing(5); 
     125                get_vbox()->pack_start(m_table); 
     126        } 
    115127#else 
    116128        get_vbox()->set_spacing(5); 
     
    200212bool Gobby::JoinDialog::on_timer() 
    201213{ 
    202         m_zeroconf.select(0); 
     214        m_zeroconf->select(0); 
    203215        return true; 
    204216} 
  • src/window.cpp

    rc22e31b r3d3692a  
    5050   m_preferences(m_config), m_buffer(NULL), 
    5151#ifdef WITH_HOWL 
    52    m_zeroconf(), 
     52   m_zeroconf(NULL), 
    5353#endif 
    5454   m_folder(m_preferences), m_header(m_folder), m_statusbar(m_folder) 
     
    129129        set_title("Gobby"); 
    130130        set_default_size(640, 480); 
     131 
     132#ifdef WITH_HOWL 
     133        // Initialise Zeroconf 
     134        try 
     135        { 
     136                m_zeroconf.reset(new obby::zeroconf); 
     137        } 
     138        catch(std::runtime_error&) 
     139        { 
     140                display_error(_("Howl initialisation failed. Probably you need " 
     141                        "to run mDNSResponder as root prior to Gobby. " 
     142                        "Zeroconf support is deactivated for this session."), 
     143                        Gtk::MESSAGE_WARNING); 
     144                m_zeroconf.reset(); 
     145        } 
     146#endif 
    131147} 
    132148 
     
    223239        m_statusbar.obby_end(); 
    224240 
    225         // Delete buffer and zeroconf 
     241        // Delete buffer 
    226242        m_buffer.reset(); 
     243 
    227244#ifdef WITH_HOWL 
    228         m_zeroconf.unpublish_all(); 
     245        m_zeroconf->unpublish_all(); 
    229246#endif 
    230247} 
     
    257274                        buffer->set_global_password(password); 
    258275#ifdef WITH_HOWL 
    259                         // Publish the newly created session via ZeroConf 
    260                         m_zeroconf.publish(name, port); 
     276                        // Publish the newly created session via Zeroconf 
     277                        // if Howl is not deactivated 
     278                        if(m_zeroconf.get() ) 
     279                                m_zeroconf->publish(name, port); 
    261280#endif 
    262281 
     
    273292        JoinDialog dlg(*this, m_config); 
    274293#else 
    275         JoinDialog dlg(*this, m_config, &m_zeroconf); 
     294        JoinDialog dlg(*this, m_config, m_zeroconf.get() ); 
    276295#endif 
    277296 
     
    850869} 
    851870 
    852 void Gobby::Window::display_error(const Glib::ustring& message) 
    853 { 
    854         Gtk::MessageDialog dlg(*this, message, false, Gtk::MESSAGE_ERROR, 
     871void Gobby::Window::display_error(const Glib::ustring& message, 
     872                                  const Gtk::MessageType type) 
     873{ 
     874        Gtk::MessageDialog dlg(*this, message, false, type, 
    855875                               Gtk::BUTTONS_OK, true); 
    856876        dlg.run();