SF.net SVN: mahogany:[7522] trunk/M
[email protected] Wed, 06 Aug 2008 00:30:50 +0000
| Newsgroups | gmane.mail.mahogany.cvs |
|---|---|
| Message-ID | <[email protected]> |
Revision: 7522
http://mahogany.svn.sourceforge.net/mahogany/?rev=7522&view=rev
Author: vadz
Date: 2008-08-06 00:30:48 +0000 (Wed, 06 Aug 2008)
Log Message:
-----------
replace PGP signing controls with a simple sign toggle button
Modified Paths:
--------------
trunk/M/include/Moptions.h
trunk/M/include/gui/wxComposeView.h
trunk/M/include/gui/wxMenuDefs.h
trunk/M/res/M.rc
trunk/M/src/classes/Moptions.cpp
trunk/M/src/gui/wxComposeView.cpp
trunk/M/src/gui/wxMenuDefs.cpp
trunk/M/src/gui/wxOptionsDlg.cpp
Added Paths:
-----------
trunk/M/res/pgp_nosign.bmp
trunk/M/res/pgp_sign.bmp
Modified: trunk/M/include/Moptions.h
===================================================================
--- trunk/M/include/Moptions.h 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/include/Moptions.h 2008-08-06 00:30:48 UTC (rev 7522)
@@ -223,7 +223,6 @@
extern const MOption MP_COMPOSE_USE_SIGNATURE;
extern const MOption MP_COMPOSE_SIGNATURE;
extern const MOption MP_COMPOSE_USE_SIGNATURE_SEPARATOR;
-extern const MOption MP_COMPOSE_USE_PGP;
extern const MOption MP_COMPOSE_PGPSIGN;
extern const MOption MP_COMPOSE_PGPSIGN_AS;
extern const MOption MP_COMPOSE_USE_XFACE;
@@ -860,8 +859,6 @@
#define MP_COMPOSE_SIGNATURE_NAME "SignatureFile"
/// use "-- " to separate signature in composition?
#define MP_COMPOSE_USE_SIGNATURE_SEPARATOR_NAME "ComposeSeparateSignature"
-/// show PGP-related controls in the composer?
-#define MP_COMPOSE_USE_PGP_NAME "ShowPGPControls"
/// sign messages with PGP?
#define MP_COMPOSE_PGPSIGN_NAME "SignWithPGP"
/// the user name to sign messages with PGP as
@@ -1730,8 +1727,6 @@
#endif
/// use "-- " to separate signature in composition?
#define MP_COMPOSE_USE_SIGNATURE_SEPARATOR_DEFVAL 1
-/// show PGP-related controls in the composer?
-#define MP_COMPOSE_USE_PGP_DEFVAL 1L
/// sign messages with PGP?
#define MP_COMPOSE_PGPSIGN_DEFVAL 0L
/// the user name to sign messages with PGP as
Modified: trunk/M/include/gui/wxComposeView.h
===================================================================
--- trunk/M/include/gui/wxComposeView.h 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/include/gui/wxComposeView.h 2008-08-06 00:30:48 UTC (rev 7522)
@@ -37,6 +37,9 @@
class SendMessage;
class MessageEditor;
+class IsReplyButton;
+class PGPSignButton;
+
class WXDLLIMPEXP_FWD_CORE wxChoice;
class WXDLLIMPEXP_FWD_CORE wxMenuItem;
class WXDLLIMPEXP_FWD_BASE wxProcess;
@@ -100,7 +103,10 @@
NonInteractive = 0,
/// If this flag is specified, we can ask questions to the user
- Interactive = 1
+ Interactive = 1,
+
+ /// If this flag is specified, the message is going to be sent right now
+ ForSending = 2
};
@@ -291,6 +297,11 @@
void SetTextAppearance(wxTextCtrl *text);
/**
+ Return true if we're configured to cryptographically sign the message.
+ */
+ bool IsPGPSigningEnabled() const;
+
+ /**
Return true if we're a reply to another message.
This doesn't simply check whether we have an original message but checks
@@ -299,6 +310,11 @@
bool IsInReplyTo() const;
/**
+ Toggles the value returned by IsPGPSigningEnabled().
+ */
+ void TogglePGPSigning();
+
+ /**
Configures whether this message is a reply to another one.
This is used for handling the menu command "Set if this is a reply" and
@@ -413,7 +429,7 @@
@param flags by default contains Interactive flag
@return SendMessage object to be deleted by the caller
*/
- SendMessage *BuildMessage(int flags = Interactive) const;
+ SendMessage *BuildMessage(int flags = Interactive | ForSending) const;
/**
Return the message to be sent as a draft: it simply adds a few additional
@@ -479,12 +495,6 @@
/// get the options (for MessageEditor)
const Options& GetOptions() const { return m_options; }
- /// update UI handler for "sign as" control
- void OnUpdateUISignAs(wxUpdateUIEvent& event)
- {
- event.Enable( m_chkPGPSign->GetValue() );
- }
-
/// the profile (never NULL)
Profile *m_Profile;
@@ -533,11 +543,11 @@
/// the editor where the message is really edited
MessageEditor *m_editor;
- /// checkbox enabling cryptographically signing the message
- wxCheckBox *m_chkPGPSign;
+ /// button toggling In-Reply-To header
+ IsReplyButton *m_btnIsReply;
- /// the user name to use for cryptographically signing the message
- wxTextCtrl *m_txtPGPSignAs;
+ /// button enabling cryptographically signing the message
+ PGPSignButton *m_btnPGPSign;
//@}
Modified: trunk/M/include/gui/wxMenuDefs.h
===================================================================
--- trunk/M/include/gui/wxMenuDefs.h 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/include/gui/wxMenuDefs.h 2008-08-06 00:30:48 UTC (rev 7522)
@@ -301,6 +301,7 @@
WXMENU_COMPOSE_EXTEDIT,
WXMENU_COMPOSE_SEP4,
WXMENU_COMPOSE_IN_REPLY_TO,
+ WXMENU_COMPOSE_PGP_SIGN,
WXMENU_COMPOSE_CUSTOM_HEADERS,
WXMENU_COMPOSE_END = WXMENU_COMPOSE_CUSTOM_HEADERS,
Modified: trunk/M/res/M.rc
===================================================================
--- trunk/M/res/M.rc 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/res/M.rc 2008-08-06 00:30:48 UTC (rev 7522)
@@ -177,8 +177,11 @@
msg_copy CURSOR "msg_copy.cur"
msg_move CURSOR "msg_move.cur"
+// composer toggle button icons
+pgp_sign BITMAP "pgp_sign.bmp"
+pgp_nosign BITMAP "pgp_nosign.bmp"
-// PGP icons
+// PGP icons (48x48)
pgpsig_good BITMAP "sig_good.bmp"
pgpsig_exp BITMAP "sig_unk.bmp"
pgpsig_untrust BITMAP "sig_unk.bmp"
Property changes on: trunk/M/res/pgp_nosign.bmp
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Property changes on: trunk/M/res/pgp_sign.bmp
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/M/src/classes/Moptions.cpp
===================================================================
--- trunk/M/src/classes/Moptions.cpp 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/src/classes/Moptions.cpp 2008-08-06 00:30:48 UTC (rev 7522)
@@ -284,7 +284,6 @@
const MOption MP_COMPOSE_USE_SIGNATURE;
const MOption MP_COMPOSE_SIGNATURE;
const MOption MP_COMPOSE_USE_SIGNATURE_SEPARATOR;
-const MOption MP_COMPOSE_USE_PGP;
const MOption MP_COMPOSE_PGPSIGN;
const MOption MP_COMPOSE_PGPSIGN_AS;
const MOption MP_COMPOSE_USE_XFACE;
@@ -708,7 +707,6 @@
DEFINE_OPTION(MP_COMPOSE_USE_SIGNATURE),
DEFINE_OPTION(MP_COMPOSE_SIGNATURE),
DEFINE_OPTION(MP_COMPOSE_USE_SIGNATURE_SEPARATOR),
- DEFINE_OPTION(MP_COMPOSE_USE_PGP),
DEFINE_OPTION(MP_COMPOSE_PGPSIGN),
DEFINE_OPTION(MP_COMPOSE_PGPSIGN_AS),
DEFINE_OPTION(MP_COMPOSE_USE_XFACE),
Modified: trunk/M/src/gui/wxComposeView.cpp
===================================================================
--- trunk/M/src/gui/wxComposeView.cpp 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/src/gui/wxComposeView.cpp 2008-08-06 00:30:48 UTC (rev 7522)
@@ -122,7 +122,6 @@
extern const MOption MP_COMPOSE_PGPSIGN_AS;
extern const MOption MP_COMPOSE_SHOW_FROM;
extern const MOption MP_COMPOSE_TO;
-extern const MOption MP_COMPOSE_USE_PGP;
extern const MOption MP_CURRENT_IDENTITY;
extern const MOption MP_CVIEW_BGCOLOUR;
extern const MOption MP_CVIEW_COLOUR_HEADERS;
@@ -526,61 +525,131 @@
};
// ----------------------------------------------------------------------------
-// wxIsReplyButton: button indicating whether this is a reply
+// ToggleIconButton: wxToggleButton with images
// ----------------------------------------------------------------------------
-class wxIsReplyButton : public IconButton
+class ToggleIconButton : public IconButton
{
public:
- wxIsReplyButton(wxComposeView *composer, wxWindow *parent)
+ // NB: derived class ctor must call UpdateWithoutRefresh()
+ ToggleIconButton(wxComposeView *composer,
+ wxWindow *parent,
+ const char *iconOn,
+ const char *iconOff,
+ const wxString& tooltipOn,
+ const wxString& tooltipOff)
: IconButton(parent, wxNullBitmap),
- m_composer(composer)
+ m_composer(composer),
+ m_iconOn(iconOn),
+ m_iconOff(iconOff),
+ m_tooltipOn(tooltipOn),
+ m_tooltipOff(tooltipOff)
{
- UpdateAppearance();
-
Connect(wxEVT_COMMAND_BUTTON_CLICKED,
- wxCommandEventHandler(wxIsReplyButton::OnClick));
+ wxCommandEventHandler(ToggleIconButton::OnClick));
+ }
- // AddHeaderEntry("In-Reply-To") is called after composer creation, so we
- // want to update our state a bit later
- Connect(wxEVT_IDLE, wxIdleEventHandler(wxIsReplyButton::OnIdle));
+ void Update()
+ {
+ UpdateWithoutRefresh();
+ Refresh();
}
-private:
- void UpdateAppearance()
+protected:
+ wxComposeView * const m_composer;
+
+ void UpdateWithoutRefresh()
{
- m_isReply = m_composer->IsInReplyTo();
+ m_isOn = DoGetValue();
- SetBitmapLabel(mApplication->GetIconManager()->GetBitmap
- (
- m_isReply ? _T("tb_mail_reply") : _T("tb_mail_new")
- ));
- SetToolTip(m_isReply ? _("This is a reply to another message")
- : _("This is a start of new thread"));
+ SetBitmapLabel(mApplication->GetIconManager()->
+ GetBitmap(m_isOn ? m_iconOn : m_iconOff));
+ SetToolTip(m_isOn ? m_tooltipOn : m_tooltipOff);
}
+private:
+ // perform the action when the button is clicked
+ virtual void DoHandleClick() = 0;
+
+ // return if we're in "on" or "off" state
+ virtual bool DoGetValue() const = 0;
+
+
void OnClick(wxCommandEvent& /* event */)
{
- if ( m_composer->ConfigureInReplyTo() )
- {
- UpdateAppearance();
- Refresh();
- }
+ DoHandleClick();
+ if ( DoGetValue() != m_isOn )
+ Update();
}
+ const char * const m_iconOn;
+ const char * const m_iconOff;
+
+ const wxString m_tooltipOn;
+ const wxString m_tooltipOff;
+
+ bool m_isOn;
+
+ DECLARE_NO_COPY_CLASS(ToggleIconButton)
+};
+
+// ----------------------------------------------------------------------------
+// IsReplyButton: button indicating whether this is a reply
+// ----------------------------------------------------------------------------
+
+class IsReplyButton : public ToggleIconButton
+{
+public:
+ IsReplyButton(wxComposeView *composer, wxWindow *parent)
+ : ToggleIconButton(composer, parent,
+ "tb_mail_reply", "tb_mail_new",
+ _("This is a reply to another message"),
+ _("This is a start of new thread"))
+ {
+ // AddHeaderEntry("In-Reply-To") is called after composer creation, so we
+ // want to update our state a bit later
+ Connect(wxEVT_IDLE, wxIdleEventHandler(IsReplyButton::OnIdle));
+ }
+
+private:
+ virtual void DoHandleClick() { m_composer->ConfigureInReplyTo(); }
+ virtual bool DoGetValue() const { return m_composer->IsInReplyTo(); }
+
void OnIdle(wxIdleEvent& /* event */)
{
- UpdateAppearance();
+ Disconnect(wxID_ANY, wxEVT_IDLE,
+ wxIdleEventHandler(IsReplyButton::OnIdle));
- Disconnect(wxID_ANY, wxEVT_IDLE,
- wxIdleEventHandler(wxIsReplyButton::OnIdle));
+ Update();
}
+ DECLARE_NO_COPY_CLASS(IsReplyButton)
+};
- wxComposeView * const m_composer;
- bool m_isReply;
+// ----------------------------------------------------------------------------
+// PGPSignButton: allows the user to choose whether to sign the message or not
+// ----------------------------------------------------------------------------
- DECLARE_NO_COPY_CLASS(wxIsReplyButton)
+class PGPSignButton : public ToggleIconButton
+{
+public:
+ PGPSignButton(wxComposeView *composer, wxWindow *parent)
+ : ToggleIconButton(composer, parent,
+ "pgp_sign", "pgp_nosign",
+ _("Message will be cryptographically signed.\n"
+ "\n"
+ "You will need access to the private key to be "
+ "used for message signing."),
+ _("Message will not be signed"))
+ {
+ UpdateWithoutRefresh();
+ }
+
+private:
+ virtual void DoHandleClick() { m_composer->TogglePGPSigning(); }
+ virtual bool DoGetValue() const { return m_composer->IsPGPSigningEnabled(); }
+
+ DECLARE_NO_COPY_CLASS(PGPSignButton)
};
// ----------------------------------------------------------------------------
@@ -1816,8 +1885,8 @@
m_txtSubject = NULL;
- m_chkPGPSign = NULL;
- m_txtPGPSignAs = NULL;
+ m_btnIsReply = NULL;
+ m_btnPGPSign = NULL;
}
bool wxComposeView::IsReplyTo(const Message& original) const
@@ -1870,16 +1939,6 @@
wxComposeView::~wxComposeView()
{
- // save the last values of PGP options
- if ( m_chkPGPSign )
- {
- const bool sign = m_chkPGPSign->GetValue();
- m_Profile->writeEntry(MP_COMPOSE_PGPSIGN, sign);
- if ( sign )
- m_Profile->writeEntry(MP_COMPOSE_PGPSIGN_AS, m_txtPGPSignAs->GetValue());
- }
-
-
delete m_rcptMain;
WX_CLEAR_ARRAY(m_rcptExtra);
@@ -2039,6 +2098,10 @@
}
//else: no identities configured
+ m_btnPGPSign = new PGPSignButton(this, m_panel);
+ sizerFrom->Add(m_btnPGPSign,
+ 0, wxLEFT | wxALIGN_CENTRE_VERTICAL, LAYOUT_MARGIN);
+
sizerHeaders->Add(sizerFrom, 1, wxEXPAND | wxALIGN_CENTRE_VERTICAL);
}
else // no from line
@@ -2055,8 +2118,9 @@
sizerSubj->Add(m_txtSubject, 1, wxALIGN_CENTRE_VERTICAL);
SetTextAppearance(m_txtSubject);
- sizerSubj->Add(new wxIsReplyButton(this, m_panel),
- 0, wxLEFT | wxALIGN_CENTRE_VERTICAL, LAYOUT_MARGIN);
+ m_btnIsReply = new IsReplyButton(this, m_panel);
+ sizerSubj->Add(m_btnIsReply,
+ 0, wxLEFT | wxALIGN_CENTRE_VERTICAL, LAYOUT_MARGIN);
sizerHeaders->Add(sizerSubj, 1, wxEXPAND | wxALIGN_CENTRE_VERTICAL);
@@ -2244,15 +2308,6 @@
m_splitter->SplitHorizontally(m_panel, m_editor->GetWindow(), heightHeaders);
m_splitter->SetMinimumPaneSize(heightHeaders);
- if ( READ_CONFIG(m_Profile, MP_COMPOSE_USE_PGP) )
- {
- wxBoxSizer * const sizer = new wxBoxSizer(wxVERTICAL);
- sizer->Add(m_splitter, wxSizerFlags(1).Expand());
- sizer->Add(CreatePGPControls(), wxSizerFlags().Expand());
- SetSizer(sizer);
- }
- //else: rely on splitter taking up the entire frame as its only child
-
// note that we must show and layout the frame before setting the control
// values or the text would be scrolled to the right in the text fields as
// they initially don't have enough space to show it...
@@ -2339,48 +2394,6 @@
m_editor = editor;
}
-wxWindow *
-wxComposeView::CreatePGPControls()
-{
- wxPanel * const panelPGP = new wxPanel(this);
- wxBoxSizer * const sizer = new wxBoxSizer(wxHORIZONTAL);
-
- // align all subsequent controls to the right by inserting an expandable
- // sizer before them
- sizer->AddStretchSpacer();
-
- m_chkPGPSign = new wxCheckBox(panelPGP, wxID_ANY, _("&Sign message"));
- m_chkPGPSign->SetToolTip(
- _("If checked, the message will be cryptographically signed.\n"
- "\n"
- "You need to have access to the private key which will be "
- "used for signing.")
- );
- m_chkPGPSign->SetValue(m_options.m_signWithPGP);
- sizer->Add(m_chkPGPSign, wxSizerFlags().Border(wxALL & ~wxRIGHT).Centre());
-
- sizer->Add(new wxStaticText(panelPGP, wxID_ANY, _("a&s ")),
- wxSizerFlags().Centre());
-
- m_txtPGPSignAs = new wxTextCtrl(panelPGP, wxID_ANY, m_options.m_signWithPGPAs);
- m_txtPGPSignAs->SetToolTip(
- _("Enter here the user name to use for signing or leave empty to use "
- "the default key in your key store.")
- );
- sizer->Add(m_txtPGPSignAs, wxSizerFlags().Border(wxALL & ~wxLEFT).Centre());
-
- m_txtPGPSignAs->Connect(
- wxEVT_UPDATE_UI,
- wxUpdateUIEventHandler(wxComposeView::OnUpdateUISignAs),
- NULL,
- this
- );
-
- panelPGP->SetSizer(sizer);
-
- return panelPGP;
-}
-
void
wxComposeView::InitAppearance()
{
@@ -3522,9 +3535,20 @@
break;
case WXMENU_COMPOSE_IN_REPLY_TO:
- ConfigureInReplyTo();
+ if ( ConfigureInReplyTo() )
+ {
+ CHECK_RET( m_btnIsReply, "should have the button" );
+ m_btnIsReply->Update();
+ }
break;
+ case WXMENU_COMPOSE_PGP_SIGN:
+ TogglePGPSigning();
+
+ CHECK_RET( m_btnPGPSign, "should have the button" );
+ m_btnPGPSign->Update();
+ break;
+
case WXMENU_COMPOSE_CUSTOM_HEADERS:
{
String headerName, headerValue;
@@ -4694,13 +4718,16 @@
}
- // postprocess the message
- // -----------------------
+ // postprocess the message if we're really going to send it
+ // --------------------------------------------------------
- // cryptographically sign the message if configured to do it
- if ( m_chkPGPSign && m_chkPGPSign->GetValue() )
+ if ( flags & ForSending )
{
- msg->EnableSigning(m_txtPGPSignAs->GetValue());
+ // cryptographically sign the message if configured to do it
+ if ( IsPGPSigningEnabled() )
+ {
+ msg->EnableSigning(m_options.m_signWithPGPAs);
+ }
}
// the caller is responsible for deleting the object
@@ -4867,6 +4894,16 @@
m_extraHeadersValues.push_back(new String(value));
}
+bool wxComposeView::IsPGPSigningEnabled() const
+{
+ return m_options.m_signWithPGP;
+}
+
+void wxComposeView::TogglePGPSigning()
+{
+ m_options.m_signWithPGP = !m_options.m_signWithPGP;
+}
+
bool wxComposeView::IsInReplyTo() const
{
kbStringList::iterator i,
@@ -5158,6 +5195,8 @@
SendMessage *wxComposeView::BuildDraftMessage(int flags) const
{
+ ASSERT_MSG( !(flags & ForSending), "draft is not for sending" );
+
SendMessage_obj msg(BuildMessage(flags));
if ( !msg )
{
Modified: trunk/M/src/gui/wxMenuDefs.cpp
===================================================================
--- trunk/M/src/gui/wxMenuDefs.cpp 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/src/gui/wxMenuDefs.cpp 2008-08-06 00:30:48 UTC (rev 7522)
@@ -468,7 +468,7 @@
// compose
// the available accelerators for this menu:
- // ABFGJMQUXYZ
+ // ABFJMQUXYZ
{ WXMENU_COMPOSE_INSERTFILE, gettext_noop("&Insert file...\tCtrl-I"),
gettext_noop("Attach a file to the message") , wxITEM_NORMAL },
{ WXMENU_COMPOSE_LOADTEXT, gettext_noop("I&nsert text...\tCtrl-T"),
@@ -494,6 +494,7 @@
{ WXMENU_COMPOSE_EXTEDIT, gettext_noop("&External editor\tCtrl-E"),gettext_noop("Invoke alternative editor"), wxITEM_NORMAL },
{ WXMENU_SEPARATOR, "", "" , wxITEM_NORMAL },
{ WXMENU_COMPOSE_IN_REPLY_TO, gettext_noop("Set if this is a &reply..."), gettext_noop("Set whether this message is a start of new thread or a reply to another message"), wxITEM_NORMAL },
+ { WXMENU_COMPOSE_PGP_SIGN, gettext_noop("Sign message with P&GP\tCtrl-G"), gettext_noop("Cryptographically sign the message using OpenPGP format"), wxITEM_CHECK },
{ WXMENU_COMPOSE_CUSTOM_HEADERS, gettext_noop("Custom &header...\tCtrl-H"), gettext_noop("Add/edit header fields not shown on the screen"), wxITEM_NORMAL },
// language
Modified: trunk/M/src/gui/wxOptionsDlg.cpp
===================================================================
--- trunk/M/src/gui/wxOptionsDlg.cpp 2008-08-06 00:27:32 UTC (rev 7521)
+++ trunk/M/src/gui/wxOptionsDlg.cpp 2008-08-06 00:30:48 UTC (rev 7522)
@@ -262,7 +262,6 @@
ConfigField_SignatureSeparator,
ConfigField_ComposerSpacer0,
ConfigField_SignWithPGPHelp,
- ConfigField_SignWithPGPEnable,
ConfigField_SignWithPGP,
ConfigField_SignWithPGPAs,
ConfigField_XFaceFile,
@@ -1307,21 +1306,17 @@
ConfigField_NewMailMonitor },
// compose
- { gettext_noop("Allow changing \"&From\" field"),
- Field_Bool | Field_Advanced, -1},
- { gettext_noop("&Use signature"), Field_Bool, -1, },
+ { gettext_noop("Show \"&From\" field"), Field_Bool | Field_Advanced, -1},
+ { gettext_noop("&Append signature"), Field_Bool, -1, },
{ gettext_noop("&Signature file"), Field_File, ConfigField_Signature },
-
{ gettext_noop("Use signature se¶tor"), Field_Bool, ConfigField_Signature },
{ "", Field_Message, -1 },
{ gettext_noop("Mahogany may sign outgoing messages in OpenPGP format.\n"
"You need to have a private key to be able to do this, "
"if you have several of them you may specify the one to use\n"
- "by default below (you will be able to change it in the "
- "composer window)"), Field_Message, -1 },
- { gettext_noop("Show &signing controls in composer"), Field_Bool, -1 },
- { gettext_noop("Enable signing by &default"), Field_Bool, ConfigField_SignWithPGPEnable },
+ "by default below"), Field_Message, -1 },
+ { gettext_noop("Enable signing by &default"), Field_Bool, -1 },
{ gettext_noop("&User name to sign messages as"), Field_Advanced | Field_Text,
ConfigField_SignWithPGP },
{ gettext_noop("Configure &XFace..."), Field_XFace, -1 },
@@ -2074,7 +2069,6 @@
CONFIG_ENTRY(MP_COMPOSE_USE_SIGNATURE_SEPARATOR),
CONFIG_NONE(), // spacer
CONFIG_NONE(), // PGP help
- CONFIG_ENTRY(MP_COMPOSE_USE_PGP),
CONFIG_ENTRY(MP_COMPOSE_PGPSIGN),
CONFIG_ENTRY(MP_COMPOSE_PGPSIGN_AS),
CONFIG_ENTRY(MP_COMPOSE_XFACE_FILE),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/