gtk_superuser.cc
上传用户:psq1974
上传日期:2007-01-06
资源大小:1195k
文件大小:4k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. /* Copyright (C) 1998, 1999 State University of New York at Stony Brook
  2.    Author: Andrew V. Shuvalov ( andrew@ecsl.cs.sunysb.edu )
  3.    Software license is located in file "COPYING"
  4. */
  5. #include  <unistd.h>
  6. #include  <gtk--.h>
  7. #include "session.h"
  8. #include "gtk_superuser.h"
  9. const int SuperuserPreferenciesWindow::topWindowInitSizeX = 700;
  10. const int SuperuserPreferenciesWindow::topWindowInitSizeY = 400;
  11. /**
  12.  */
  13. SuLoginWindow::SuLoginWindow( Session &s )
  14.   : session( s )
  15. {
  16.   // make vertical box
  17.   Gtk_VBox *top_vbox_layout = new Gtk_VBox();
  18.   top_vbox_layout->set_spacing( 10 );
  19.   {
  20.     entry = new Gtk_Entry();
  21.     top_vbox_layout->pack_start( *entry, FALSE, FALSE, 0 );
  22.     entry->show();
  23.     entry->set_visibility( false );
  24.     entry->set_editable( true );
  25.     Gtk_Button *but = new Gtk_Button( "Login" );
  26.     top_vbox_layout->pack_start( *but, FALSE, FALSE, 0 );
  27.     but->show();
  28.     connect_to_method( but->clicked, this,
  29.        &SuLoginWindow::callback_login );
  30.   }
  31.   add( top_vbox_layout );
  32.   top_vbox_layout->show();
  33.   set_title( "Video client: Login as superuser" );
  34. }
  35. void SuLoginWindow::callback_login()
  36. {
  37.   string text = entry->get_text();
  38.   text.c_str();
  39.   session.login_superuser( text );
  40.   hide();
  41. }
  42. // ------------------------------------------------------------------
  43. SuperuserPreferenciesWindow::SuperuserPreferenciesWindow( Session &s ) :
  44.   session( s )
  45. {
  46.   set_usize( topWindowInitSizeX, topWindowInitSizeY );
  47.   // make vertical box
  48.   Gtk_VBox *top_vbox_layout = new Gtk_VBox();
  49.   {
  50.     // scrolled w.
  51.     Gtk_ScrolledWindow *scrWindow = new Gtk_ScrolledWindow();
  52.     scrWindow->set_usize( topWindowInitSizeX, topWindowInitSizeY*9/10 );
  53.     scrWindow->set_policy( GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS );
  54.     scrWindow->show();
  55.     // list
  56.     profList = new Gtk_VBox();
  57.     profList->show();
  58.     scrWindow->add( profList );
  59.     
  60.     // button box
  61.     Gtk_HButtonBox *hbb = new Gtk_HButtonBox();
  62.     hbb->show();
  63.     Gtk_Button *svb = new Gtk_Button( "Save" );
  64.     svb->show();
  65.     hbb->pack_start( *svb );
  66.     connect_to_method( svb->clicked, this, 
  67.        &SuperuserPreferenciesWindow::callback_save );
  68.     Gtk_Button *cab = new Gtk_Button( "Cancel" );
  69.     cab->show();
  70.     hbb->pack_start( *cab );
  71.     connect_to_method( cab->clicked, this, 
  72.        &SuperuserPreferenciesWindow::callback_cancel );
  73.     // paned
  74.     Gtk_VPaned *vp = new Gtk_VPaned();
  75.     vp->add1( *scrWindow );
  76.     vp->add2( *hbb );
  77.     vp->show();
  78.     top_vbox_layout->pack_start( *vp, TRUE, TRUE, 0 );
  79.   }
  80.   add( top_vbox_layout );
  81.   top_vbox_layout->show();
  82.   // now add what can be edited
  83.   props.clear();
  84.   session.loadServerProperties( props );
  85.   for( int i = 0; i < props.size(); i++ )
  86.     {
  87.       ServerConfigItem &ci = props[i];
  88.       // hbox
  89.       Gtk_HBox *hbox = new Gtk_HBox();
  90.       hbox->show();
  91.       profList->pack_start( *hbox );
  92.       Gtk_Label *label = new Gtk_Label( ci.help.c_str() );
  93.       label->set_usize( topWindowInitSizeX/2, 20 );
  94.       label->show();
  95.       hbox->pack_start( *label );
  96.       Gtk_Entry *entry = new Gtk_Entry();
  97.       entry->set_text( ci.value.c_str() );
  98.       entry->show();
  99.       entry->set_editable( true );
  100.       hbox->pack_start( *entry );
  101.       // and add to the list of entries
  102.       entries.push_back( entry );
  103.     }
  104. }
  105. void SuperuserPreferenciesWindow::update_from_screen()
  106. {
  107.   for( int i = 0; i < entries.size(); i++ ) 
  108.     {
  109.       Gtk_Entry *entry = entries[i];
  110.       if( !entry )
  111. continue;
  112.       ServerConfigItem &ci = props[i];
  113.       ci.value = entry->get_text();
  114.     }
  115. }
  116. void SuperuserPreferenciesWindow::callback_save()
  117. {
  118.   update_from_screen();
  119.   session.saveServerProperties( props );
  120.   hide();
  121. }
  122. void SuperuserPreferenciesWindow::callback_cancel()
  123. {
  124.   hide();
  125. }