Changeset 5841
- Timestamp:
- 07/05/09 00:53:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Padre-Plugin-Perl6/lib/Padre/Plugin/Perl6/Perl6HelpDialog.pm
r5836 r5841 16 16 # accessors 17 17 use Class::XSAccessor accessors => { 18 _sizer => '_sizer', # window sizer 18 _hbox => '_hbox', # horizontal box sizer 19 _vbox => '_vbox', # vertical box sizer 19 20 _search_text => '_search_text', # search text control 20 21 _list => '_list', # matches list 21 22 _targets_index => '_targets_index', # targets index 23 _help_viewer => '_help_viewer', # HTML Help Viewer 22 24 _plugin => '_plugin', # plugin object 23 25 }; … … 33 35 $main, 34 36 -1, 35 Wx::gettext('Perl 6 Help '),37 Wx::gettext('Perl 6 Help (Powered by App::Grok)'), 36 38 Wx::wxDefaultPosition, 37 39 Wx::wxDefaultSize, … … 54 56 55 57 # 56 # handler called when the ok button has been clicked. 57 # 58 sub _on_ok_button_clicked { 59 my ($self) = @_; 60 61 my $main = $self->_plugin->main; 62 63 #Open the selected resources here if the user pressed OK 58 # Fetches the current selection's help HTML via App::Grok 59 # 60 sub display_help_in_viewer { 61 my $self = shift; 62 64 63 my $selection = $self->_list->GetSelection(); 65 64 my $help_target = $self->_list->GetClientData($selection); 65 my $help_html; 66 66 if($help_target) { 67 67 require App::Grok; 68 my $grok = App::Grok->new; 69 my $grok_text = $grok->render_target($help_target,'xhtml'); 70 if($grok_text) { 71 my $tmp = File::Temp->new(SUFFIX => '.html'); 72 $tmp->unlink_on_destroy(0); 73 my $filename = $tmp->filename; 74 print $tmp $grok_text; 75 close $tmp 76 or warn "Could not close $filename"; 77 78 # launch the HTML file in your default browser 79 require URI::file; 80 my $file_url = URI::file->new($filename); 81 Wx::LaunchDefaultBrowser($file_url); 82 83 } else { 84 Wx::MessageBox( 85 Wx::gettext('Topic not found!'), 86 Wx::gettext('Perl 6 Help'), 87 Wx::wxOK, 88 $main, 89 ); 90 } 91 } 92 $self->Destroy; 93 } 94 68 eval { 69 my $grok = App::Grok->new; 70 $help_html = $grok->render_target($help_target,'xhtml'); 71 }; 72 } 73 74 if(not $help_html) { 75 $help_html = '<b>No Help found</b>'; 76 } 77 78 $self->_help_viewer->SetPage($help_html); 79 80 return; 81 } 95 82 96 83 # -- private methods … … 100 87 # 101 88 sub _create { 102 my ($self) = @_;89 my $self = shift; 103 90 104 91 # create sizer that will host all controls 105 my $sizer = Wx::BoxSizer->new( Wx::wxVERTICAL);106 $self->_ sizer($sizer);92 $self->_hbox( Wx::BoxSizer->new( Wx::wxHORIZONTAL ) ); 93 $self->_vbox( Wx::BoxSizer->new( Wx::wxVERTICAL ) ); 107 94 108 95 # create the controls … … 110 97 $self->_create_buttons; 111 98 112 # wrap everything in a vbox to add some padding113 $self->SetSizerAndFit($s izer);114 $s izer->SetSizeHints($self);99 # wrap everything in a box to add some padding 100 $self->SetSizerAndFit($self->_hbox); 101 $self->_hbox->SetSizeHints($self); 115 102 116 103 # center the dialog … … 127 114 # 128 115 sub _create_buttons { 129 my ($self) = @_; 130 my $sizer = $self->_sizer; 116 my $self = shift; 131 117 132 118 my $butsizer = $self->CreateStdDialogButtonSizer(Wx::wxOK|Wx::wxCANCEL); 133 $s izer->Add($butsizer, 0, Wx::wxALL|Wx::wxEXPAND|Wx::wxALIGN_CENTER, 5 );119 $self->_vbox->Add($butsizer, 0, Wx::wxALL|Wx::wxEXPAND|Wx::wxALIGN_CENTER, 5 ); 134 120 Wx::Event::EVT_BUTTON( $self, Wx::wxID_OK, \&_on_ok_button_clicked ); 135 121 } … … 139 125 # 140 126 sub _create_controls { 141 my ($self) = @_;127 my $self = shift; 142 128 143 129 # search textbox … … 149 135 my $matches_label = Wx::StaticText->new( $self, -1, 150 136 Wx::gettext('&Matching Help Topics:') ); 151 $self->_list( Wx::ListBox->new( $self, -1, [-1, -1], [ 400, 300], [],137 $self->_list( Wx::ListBox->new( $self, -1, [-1, -1], [200, 300], [], 152 138 Wx::wxLB_SINGLE ) ); 153 154 $self->_sizer->AddSpacer(10); 155 $self->_sizer->Add( $search_label, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 156 $self->_sizer->Add( $self->_search_text, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 157 $self->_sizer->Add( $matches_label, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 158 $self->_sizer->Add( $self->_list, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 139 140 # HTML Help Viewer 141 require Padre::Wx::HtmlWindow; 142 $self->_help_viewer( Padre::Wx::HtmlWindow->new($self, -1, [-1,-1], [350, 300] ) ); 143 $self->_help_viewer->SetPage(''); 144 145 146 $self->_vbox->AddSpacer(10); 147 $self->_vbox->Add( $search_label, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 148 $self->_vbox->Add( $self->_search_text, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 149 $self->_vbox->Add( $matches_label, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 150 $self->_vbox->Add( $self->_list, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 151 $self->_hbox->Add( $self->_vbox, 0, Wx::wxALL|Wx::wxEXPAND, 2 ); 152 $self->_hbox->Add( $self->_help_viewer, 0, Wx::wxALL|Wx::wxEXPAND, 0 ); 159 153 160 154 $self->_setup_events(); … … 188 182 }); 189 183 190 Wx::Event::EVT_LISTBOX_DCLICK( $self, $self->_list, sub { 191 $self->_on_ok_button_clicked(); 192 $self->EndModal(0); 184 Wx::Event::EVT_LISTBOX( $self, $self->_list, sub { 185 $self->display_help_in_viewer; 193 186 }); 187 194 188 } 195 189 … … 234 228 if($pos > 0) { 235 229 $self->_list->Select(0); 230 $self->display_help_in_viewer; 236 231 } 237 232
Note: See TracChangeset
for help on using the changeset viewer.
