PasswordDialog.pm.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. #  OpenKore - WxWidgets Interface
  3. #  Password input dialog
  4. #
  5. #  Copyright (c) 2006,2007 OpenKore development team
  6. #
  7. #  This program is free software; you can redistribute it and/or modify
  8. #  it under the terms of the GNU General Public License as published by
  9. #  the Free Software Foundation; either version 2 of the License, or
  10. #  (at your option) any later version.
  11. #
  12. #  This program is distributed in the hope that it will be useful,
  13. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #  GNU General Public License for more details.
  16. #
  17. #
  18. #  $Revision$
  19. #  $Id$
  20. #
  21. #########################################################################
  22. package Interface::Wx::PasswordDialog;
  23. use strict;
  24. use Wx ':everything';
  25. use Wx::Event qw(EVT_TEXT_ENTER EVT_BUTTON);
  26. use base qw(Wx::Dialog);
  27. use constant DEFAULT_WIDTH => 250;
  28. sub new {
  29. my ($class, $parent, $message, $title) = @_;
  30. $title = 'Enter password' if (!defined($title));
  31. my $self = $class->SUPER::new($parent, -1, $title);
  32. $self->_buildGUI($message);
  33. return $self;
  34. }
  35. sub getValue {
  36. my ($self) = @_;
  37. return $self->{text}->GetValue;
  38. }
  39. sub GetValue {
  40. &getValue;
  41. }
  42. sub _buildGUI {
  43. my ($self, $message) = @_;
  44. my ($sizer, $label, $text, $buttonSizer, $ok, $cancel);
  45. $sizer = new Wx::BoxSizer(wxVERTICAL);
  46. $label = new Wx::StaticText($self, -1, $message);
  47. $sizer->Add($label, 0, wxALL, 8);
  48. $text = new Wx::TextCtrl($self, -1, '', wxDefaultPosition,
  49. [DEFAULT_WIDTH, -1], wxTE_PASSWORD | wxTE_PROCESS_ENTER);
  50. $sizer->Add($text, 0, wxLEFT | wxRIGHT | wxGROW, 8);
  51. EVT_TEXT_ENTER($self, $text->GetId, &_onTextEnter);
  52. $sizer->AddSpacer(12);
  53. $buttonSizer = new Wx::BoxSizer(wxHORIZONTAL);
  54. $sizer->Add($buttonSizer, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT | wxBOTTOM, 8);
  55. $ok = new Wx::Button($self, -1, 'OK', wxDefaultPosition, wxDefaultSize);
  56. $ok->SetDefault();
  57. $buttonSizer->Add($ok, 1, wxRIGHT, 8);
  58. EVT_BUTTON($self, $ok->GetId, &_onOK);
  59. $cancel = new Wx::Button($self, -1, 'Cancel');
  60. $buttonSizer->Add($cancel, 1);
  61. EVT_BUTTON($self, $cancel->GetId, &_onCancel);
  62. $self->SetSizerAndFit($sizer);
  63. $self->{text} = $text;
  64. }
  65. sub _onTextEnter {
  66. my ($self) = @_;
  67. $self->EndModal(wxID_OK);
  68. }
  69. sub _onOK {
  70. my ($self) = @_;
  71. $self->EndModal(wxID_OK);
  72. }
  73. sub _onCancel {
  74. my ($self) = @_;
  75. $self->EndModal(wxID_CANCEL);
  76. }
  77. 1;