.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Padre::Wx::Role::Config 3pm" .TH Padre::Wx::Role::Config 3pm "2014-09-11" "perl v5.20.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Padre::Wx::Role::Config \- Role for Wx forms that control preference data .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBPadre::Wx::Role::Config\fR is a role for dialogs and form panels that enables the load and saving of configuration data in a standard manner. .PP It was originally created to power the main Preferences dialog, but can be reused by any dialog of panel that wants to load preference entries and allow them to be changed. .PP To use this role, create a dialog or panel which has public getter methods for the preference form elements. The public getter method must exactly match the name of the preference method you wish to load. .PP For example, the following demonstrates a text box that can load and save the identify of the Padre user. .PP .Vb 8 \& # In your constructor, create the text control \& $self\->{identity_name} = Wx::TextCtrl\->new( \& $self, \& \-1, \& "", \& Wx::DefaultPosition, \& Wx::DefaultSize, \& ); \& \& # Later in the module, create a public getter for the control \& sub identity_name { \& $_[0]\->{identity_name}; \& } .Ve .PP Once your public form controls have been set up, the preference information is loaded from configuration by the \f(CW\*(C`config_load\*(C'\fR method and then the \&\f(CW\*(C`config_save\*(C'\fR method is used to apply the changes to the active Padre instance and save the changes to configuration. .SH "METHODS" .IX Header "METHODS" .SS "config_load" .IX Subsection "config_load" .Vb 8 \& $dialog\->config_load( \& Padre::Current\->config, \& qw{ \& identity_name \& identity_nick \& identity_email \& } \& ); .Ve .PP The \f(CW\*(C`config_load\*(C'\fR method loads preference information from configuration into the public form controls for the current object. .PP The first parameter to \f(CW\*(C`config_load\*(C'\fR should be a valid Padre::Config object to load from (usually the main or current configuration object). .PP After the configuration object you should provide a list of preferences names that should be loaded. .PP Returns the number of configuration form controls that were successfully loaded, which should match the number of names you passed in. .SS "config_save" .IX Subsection "config_save" .Vb 8 \& $dialog\->config_save( \& Padre::Current\->config, \& qw{ \& identity_name \& identity_nick \& identity_email \& } \& ); .Ve .PP The \f(CW\*(C`config_save\*(C'\fR method saves preference information from public form controls into configuration, applying the changes to the current Padre instance as it does so. .PP The first parameter to \f(CW\*(C`config_load\*(C'\fR should be a valid Padre::Config object to load from (usually the main or current configuration object). .PP After the configuration object you should provide a list of preferences names that should be loaded. .PP The changes are applied inside of a complete Padre::Lock of all possible subsystems and \s-1GUI\s0 lock modes to ensure that changes apply as a single fast visual change, and will not cause weird flickering of the user interface. .PP Returns the number of changes that were made to configuration, which may be zero if all config fields match the current values. No lock will be taken in the case where the number of config changes to make is zero. .SS "config_diff" .IX Subsection "config_diff" .Vb 8 \& $dialog\->config_diff( \& Padre::Current\->config, \& qw{ \& identity_name \& identity_nick \& identity_email \& } \& ); .Ve .PP The \f(CW\*(C`config_diff\*(C'\fR method calculates changes to preference information from the public form controls, but does not save or apply them. .PP The first parameter to \f(CW\*(C`config_load\*(C'\fR should be a valid Padre::Config object to load from (usually the main or current configuration object). .PP After the configuration object you should provide a list of preferences names that should be loaded. .PP Since the \f(CW\*(C`config_diff\*(C'\fR method is used by \f(CW\*(C`config_save\*(C'\fR to find the list of changes to make, overloading \f(CW\*(C`config_diff\*(C'\fR with custom functionality will also result in this custom behaviour being used when saving the changes for real. .PP Returns a reference to a \f(CW\*(C`HASH\*(C'\fR containing a set of name/value pairs of the new values to be applied to configuration, or \f(CW\*(C`undef\*(C'\fR if there are no changes to configuration. .SS "config_get" .IX Subsection "config_get" .Vb 3 \& $dialog\->config_get( \& Padre::Current\->config\->meta(\*(Aqidentity_name\*(Aq) \& ); .Ve .PP The \f(CW\*(C`config_get\*(C'\fR method fetches a single configuration value form a the public dialog control. .PP It takes a single parameter, which should be the Padre::Config::Setting metadata object for the configuration preference to fetch. .PP Successfully getting a value is by no means certain, there can be a number of different reasons why no value may be returned. These include: .IP "The lack of a public getter method for the form control" 4 .IX Item "The lack of a public getter method for the form control" .PD 0 .ie n .IP "The form control being disabled (i.e. not $control\->IsEnabled)" 4 .el .IP "The form control being disabled (i.e. not \f(CW$control\fR\->IsEnabled)" 4 .IX Item "The form control being disabled (i.e. not $control->IsEnabled)" .ie n .IP "The form control returning ""undef"" (which native Wx controls won't)" 4 .el .IP "The form control returning \f(CWundef\fR (which native Wx controls won't)" 4 .IX Item "The form control returning undef (which native Wx controls won't)" .IP "The form control being incompatible with the config data type" 4 .IX Item "The form control being incompatible with the config data type" .PD .PP Returns a simple defined scalar value suitable for being passed \&\*(L"set\*(R" in Padre::Config on success, or \f(CW\*(C`undef\*(C'\fR if no value can be found. .SS "config_set" .IX Subsection "config_set" .Vb 4 \& $dialog\->config_set( \& Padre::Current\->config\->meta(\*(Aqidentity_name\*(Aq), \& \*(AqMy Name\*(Aq, \& ); .Ve .PP The \f(CW\*(C`config_set\*(C'\fR method applies a simple scalar value to a form control. .PP It takes two parameters, a Padre::Config::Setting metadata object for the configuration preference to load, and a value to load into the form control. .PP Returns true if the value was loaded into the form control, false if the form control was unknown or not compatible with the preference, or \&\f(CW\*(C`undef\*(C'\fR if the form control does not exist at all in the dialog. .SH "COPYRIGHT & LICENSE" .IX Header "COPYRIGHT & LICENSE" Copyright 2008\-2013 The Padre development team as listed in Padre.pm. .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5 itself. .PP The full text of the license can be found in the \&\s-1LICENSE\s0 file included with this module.