home *** CD-ROM | disk | FTP | other *** search
/ Dream 49 / Amiga_Dream_49.iso / beos / utils / skey-1.000 / SKey-1.4.3 / Source / Sources / SKeyWindow.cc < prev   
C/C++ Source or Header  |  1997-12-03  |  2KB  |  90 lines

  1. #include "SKeyMessage.h"
  2. #include "SKeyWindow.h"
  3. #include "SKeyView.h"
  4.  
  5. #include <Window.h>
  6. #include <storage/Resources.h>
  7. #include <app/Application.h>
  8.  
  9. float SKeyWindow::AddMenuBar(BRect frame)
  10. {
  11.     menu_bar = new BMenuBar(frame, "window menu");
  12.     
  13.     // Create Edit menu.
  14.     BMenu *file = new BMenu("File");
  15.     BMenuItem *item = new BMenuItem("About S/KeyΓǪ",
  16.                                      new BMessage(B_ABOUT_REQUESTED));
  17.     item->SetTarget(be_app);
  18.     file->AddItem(item);
  19.     file->AddSeparatorItem();
  20.     item = new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED), 'Q');
  21.     item->SetTarget(this);
  22.     file->AddItem(item);
  23.     BMenu *edit = new BMenu("Edit");
  24.     item = new BMenuItem("Copy S/Key Password",
  25.                           new BMessage(B_COPY), 'C');
  26.     item->SetTarget(this);
  27.     edit->AddItem(item);
  28.     item = new BMenuItem("Paste Seed", new BMessage(B_PASTE), 'V');
  29.     item->SetTarget(this);
  30.     edit->AddItem(item);
  31.  
  32.     menu_bar->AddItem(file);
  33.     menu_bar->AddItem(edit);
  34.     AddChild(menu_bar);
  35.  
  36.     Lock();
  37.     float ret_val = menu_bar->Bounds().bottom;
  38.     Unlock();
  39.  
  40.     return ret_val;
  41. }
  42.  
  43. SKeyWindow::SKeyWindow(BRect frame, const bool md4)
  44.            : BWindow(frame, "S/Key", B_TITLED_WINDOW,
  45.                      B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
  46. {
  47.     frame.OffsetTo(B_ORIGIN);
  48.  
  49.     // Add the menu bar.
  50.     BRect view_frame = BRect(0, 0, 0, 0);
  51.  
  52.     view_frame.top = AddMenuBar(view_frame);
  53.     view_frame.bottom = frame.bottom;
  54.     view_frame.left = 0; view_frame.right = frame.right;
  55.  
  56.     // Add the view.
  57.     view = new SKeyView(view_frame, md4);
  58.     AddChild(view);
  59.     Show();
  60. }
  61.  
  62. void SKeyWindow::MessageReceived(BMessage *msg)
  63. {
  64.     switch (msg->what) {
  65.     case MD4_MSG:
  66.     case MD5_MSG:
  67.     case B_COPY:
  68.     case B_PASTE:
  69.     case SKEY_COMP_KEY:
  70.         view->MessageReceived(msg);
  71.         break;
  72.     default:
  73.         BWindow::MessageReceived(msg);
  74.     }
  75. }
  76.  
  77. bool SKeyWindow::QuitRequested()
  78. {
  79.     SavePos();
  80.     be_app->PostMessage(B_QUIT_REQUESTED);
  81.     return TRUE;
  82. }
  83.  
  84. void SKeyWindow::SavePos()
  85. {
  86.     BMessage msg(SKEY_PREFS_MSG);
  87.     msg.AddRect("position", Frame());
  88.     msg.AddBool("md", view->GetMD());
  89.     be_app->PostMessage(&msg);
  90. }