
=== modified file 'Scribus.pot'
--- Scribus.pot	2008-11-13 15:46:29 +0000
+++ Scribus.pot	2008-11-17 15:02:34 +0000
@@ -3231,6 +3231,9 @@
 msgid "List Box"
 msgstr ""
 
+msgid "Digital Signature"
+msgstr ""
+
 msgid "Insert PDF Fields"
 msgstr ""
 
=== modified file 'scribus/actionmanager.cpp'
--- scribus/actionmanager.cpp	2008-11-13 15:46:29 +0000
+++ scribus/actionmanager.cpp	2008-11-17 17:32:01 +0000
@@ -851,7 +851,7 @@
 	if (currItem->isAnnotation())
 	{
 		int aType=currItem->annotation().Type();
-		bool setter=((aType == 0) || (aType == 1) || (aType > 9));
+		bool setter=((aType == 0) || (aType == 1) || ((aType > 9) && (aType < 14)));
 		(*scrActions)["itemPDFAnnotationProps"]->setEnabled(setter);
 		(*scrActions)["itemPDFFieldProps"]->setEnabled(!setter);
 	}

=== modified file 'scribus/annot.cpp'
--- scribus/annot.cpp	2008-11-13 15:46:29 +0000
+++ scribus/annot.cpp	2008-11-18 17:30:33 +0000
@@ -70,14 +70,20 @@
 	Layout1->addWidget( TextLabel1 );
 
 	ComboBox1 = new QComboBox( true, this, "ComboBox1" );
-	QString tmp[] = { tr("Button"), tr("Text Field"), tr("Check Box"), tr("Combo Box"), tr("List Box")};
+	QString tmp[] = { tr("Button"), tr("Text Field"), tr("Check Box"), tr("Combo Box"), tr("List Box"), tr("Digital Signature")};
 	size_t array = sizeof(tmp) / sizeof(*tmp);
 	for (uint a = 0; a < array; ++a)
 		ComboBox1->insertItem(tmp[a]);
 	ComboBox1->setEditable(false);
 	Layout1->addWidget( ComboBox1 );
 	AnnotLayout->addLayout( Layout1 );
-	ComboBox1->setCurrentItem(item->annotation().Type()-2);
+	int an_type=item->annotation().Type();
+	/* TODO: fix bug 7609 to simplify this fragile code */
+	if (an_type == 14) {
+		ComboBox1->setCurrentItem(5);
+	} else {
+		ComboBox1->setCurrentItem(an_type-2);
+	}
 
 	Fram = new QWidgetStack(this);
 	AnnotLayout->addWidget( Fram );
@@ -1019,7 +1025,14 @@
 	Frame9->setFrameShadow( QFrame::Plain );
 	Fram->addWidget(Frame9, 2);
 
-	SetZiel(item->annotation().Type()-2);
+	an_type=item->annotation().Type();
+	/* TODO: fix bug 7609 to simplify this fragile code */
+	if (an_type==14) {
+		SetZiel(5);
+	} else {
+		SetZiel(an_type-2);
+	}
+
 	Layout1_2 = new QHBoxLayout;
 	Layout1_2->setSpacing( 6 );
 	Layout1_2->setMargin( 0 );
@@ -1691,7 +1704,14 @@
 	QString tmp, tmp2;
 	QString Nfo("");
 	bool AAct = false;
-	item->annotation().setType(ComboBox1->currentItem()+2);
+	int combo1=ComboBox1->currentItem();
+	/* TODO: fix bug 7609 to simplify this fragile code */
+	if (combo1 == 5) {
+	     item->annotation().setType(14);
+	} else {
+	     item->annotation().setType(combo1+2);
+	}
+
 	if (Name->text() != OldName)
 	{
 		item->setItemName(Name->text());
@@ -1734,7 +1754,7 @@
 		if (CanEdit->isChecked())
 			item->annotation().addToFlag(262144);
 	}
-	if (item->annotation().Type() == 3)
+	if (item->annotation().Type() == 3 || (item->annotation().Type() == 14))
 	{
 		if (MultiL->isChecked())
 			item->annotation().addToFlag(4096);
@@ -1745,7 +1765,7 @@
 		if (NoScroll->isChecked())
 			item->annotation().addToFlag(8388608);
 	}
-	if ((item->annotation().Type() == 3) || (item->annotation().Type() == 5))
+	if ((item->annotation().Type() == 3) || (item->annotation().Type() == 14) || (item->annotation().Type() == 5))
 	{
 		if (NoValid->isChecked())
 			item->annotation().setV_act("");

=== modified file 'scribus/pdflib.cpp'
--- scribus/pdflib.cpp	2008-11-13 15:46:29 +0000
+++ scribus/pdflib.cpp	2008-11-19 10:11:20 +0000
@@ -4689,6 +4689,7 @@
 		case 4:
 		case 5:
 		case 6:
+		case 14:
 			Seite.FormObjects.append(ObjCounter-1);
 			PutDoc("/Subtype /Widget\n");
 			PutDoc("/T "+EncString("("+anTitle+")",ObjCounter-1)+"\n");
@@ -4744,6 +4745,13 @@
 					if (ite->annotation().MaxChar() != -1)
 						PutDoc("/MaxLen "+QString::number(ite->annotation().MaxChar())+"\n");
 					break;
+				case 14:
+					PutDoc("/FT /Sig\n");
+					PutDoc("/Q "+QString::number(QMIN(ite->textAlignment,2))+"\n");
+					PutDoc("/AP << /N "+QString::number(ObjCounter)+" 0 R >>\n");
+					if (ite->annotation().MaxChar() != -1)
+						PutDoc("/MaxLen "+QString::number(ite->annotation().MaxChar())+"\n");
+					break;
 				case 4:
 					PutDoc("/FT /Btn\n");
 					PutDoc(ite->annotation().IsChk() ? "/V /Yes\n/DV /Yes\n/AS /Yes\n" :
@@ -4847,6 +4855,7 @@
 				case 6:
 				case 5:
 				case 3:
+				case 14:
 					break;
 				case 4:
 					PutDoc("/CA "+EncString("("+ct+")",ObjCounter-1)+" ");
@@ -4883,7 +4892,7 @@
 						PutDoc(" 0 R >>\n");
 					}
 				}
-				if (ite->annotation().AAact())
+				if ((ite->annotation().AAact()) && (ite->annotation().Type() != 14))
 				{
 					if (!ite->annotation().Action().isEmpty())
 					{
@@ -4924,7 +4933,7 @@
 			}
 			break;
 		}
-	if ((ite->annotation().Type() < 2) || (ite->annotation().Type() > 9))
+	if ((ite->annotation().Type() < 2) || ((ite->annotation().Type() > 9) && (ite->annotation().Type() < 14)))
 		PutDoc("/Border [ 0 0 0 ]\n");
 	switch (((abs(static_cast<int>(ite->rotation())) / 90)*90))
 	{
@@ -4975,7 +4984,7 @@
 			PDF_xForm(img2.width(), img2.height(), cc);
 		}
 	}
-	if (ite->annotation().Type() == 3)
+	if (ite->annotation().Type() == 3 || ite->annotation().Type() == 14)
 	{
 		cc = "";
 		if (ite->fillColor() != CommonStrings::None)
@@ -5038,7 +5047,7 @@
 	}
 	if ((ite->annotation().Type() > 1) && ((ite->annotation().ActionType() == 1) || (ite->annotation().AAact())) && (!ite->annotation().Action().isEmpty()))
 		WritePDFString(ite->annotation().Action());
-	if ((ite->annotation().Type() > 1) && (ite->annotation().AAact()))
+	if ((ite->annotation().Type() > 1) && (ite->annotation().Type() != 14) && (ite->annotation().AAact()))
 	{
 		StartObj(ObjCounter);
 		ObjCounter++;
@@ -5069,7 +5078,7 @@
 			PutDoc("/Bl << /Type /Action /S /JavaScript /JS "+QString::number(ObjCounter+AAcoun)+" 0 R >>\n");
 			AAcoun++;
 		}
-		if ((ite->annotation().Type() == 3) || (ite->annotation().Type() == 5) || (ite->annotation().Type() == 6))
+		if ((ite->annotation().Type() == 3) || (ite->annotation().Type() == 14) || (ite->annotation().Type() == 5) || (ite->annotation().Type() == 6))
 		{
 			if (!ite->annotation().K_act().isEmpty())
 			{
@@ -5107,7 +5116,7 @@
 			WritePDFString(ite->annotation().Fo_act());
 		if (!ite->annotation().Bl_act().isEmpty())
 			WritePDFString(ite->annotation().Bl_act());
-		if ((ite->annotation().Type() == 3) || (ite->annotation().Type() == 5) || (ite->annotation().Type() == 6))
+		if ((ite->annotation().Type() == 3) || (ite->annotation().Type() == 14) || (ite->annotation().Type() == 5) || (ite->annotation().Type() == 6))
 		{
 			if (!ite->annotation().K_act().isEmpty())
 				WritePDFString(ite->annotation().K_act());

=== modified file 'scribus/po/scribus.ca.ts'
--- scribus/po/scribus.ca.ts	2008-11-13 15:46:29 +0000
+++ scribus/po/scribus.ca.ts	2008-11-17 15:02:34 +0000
@@ -4854,6 +4854,10 @@
         <translation>Quadre de Llista</translation>
     </message>
     <message>
+        <source>Digital Signature</source>
+        <translation>Signatura digital</translation>
+    </message>
+    <message>
         <source>Properties</source>
         <translation>Propietats</translation>
     </message>
@@ -26380,6 +26384,10 @@
         <translation>Quadre de Llista</translation>
     </message>
     <message>
+        <source>Digital Signature</source>
+        <translation>Signatura digital</translation>
+    </message>
+    <message>
         <source>Insert PDF Fields</source>
         <translation>Inserir Camps PDF</translation>
     </message>

=== modified file 'scribus/po/scribus.es_ES.ts'
--- scribus/po/scribus.es_ES.ts	2008-11-13 15:46:29 +0000
+++ scribus/po/scribus.es_ES.ts	2008-11-17 15:02:34 +0000
@@ -3978,6 +3978,10 @@
         <translation>Casilla de lista</translation>
     </message>
     <message>
+        <source>Digital Signature</source>
+        <translation>Firma digital</translation>
+    </message>
+     <message>
         <source>Properties</source>
         <translation>Propiedades</translation>
     </message>
@@ -18037,6 +18041,10 @@
         <translation>Casilla de lista</translation>
     </message>
     <message>
+        <source>Digital Signature</source>
+        <translation>Signatura digital</translation>
+    </message>
+    <message>
         <source>Insert PDF Fields</source>
         <translation>Insertar campos PDF</translation>
     </message>

=== modified file 'scribus/qm/scribus.ca.qm'
Binary files scribus/qm/scribus.ca.qm	2008-11-13 15:46:29 +0000 and scribus/qm/scribus.ca.qm	2008-11-19 10:09:41 +0000 differ
=== modified file 'scribus/scribus.cpp'
--- scribus/scribus.cpp	2008-11-13 15:46:29 +0000
+++ scribus/scribus.cpp	2008-11-17 17:32:01 +0000
@@ -5704,6 +5704,7 @@
 			case modeInsertPDFCheckbox:
 			case modeInsertPDFCombobox:
 			case modeInsertPDFListbox:
+			case modeInsertPDFSignature:
 			case modeInsertPDFTextAnnotation:
 			case modeInsertPDFLinkAnnotation:
 			case modeDrawFreehandLine:
@@ -8354,7 +8355,7 @@
 	if (doc->m_Selection->count() != 0)
 	{
 		PageItem *currItem = doc->m_Selection->itemAt(0);
-		if ((currItem->annotation().Type() == 0) || (currItem->annotation().Type() == 1) || (currItem->annotation().Type() > 9))
+		if ((currItem->annotation().Type() == 0) || (currItem->annotation().Type() == 1) || ((currItem->annotation().Type() > 9) && (currItem->annotation().Type() < 14)))
 		{
 			int AnType = currItem->annotation().Type();
 			int AnActType = currItem->annotation().ActionType();

=== modified file 'scribus/scribusstructs.h'
--- scribus/scribusstructs.h	2008-11-13 15:46:29 +0000
+++ scribus/scribusstructs.h	2008-11-17 15:02:34 +0000
@@ -371,6 +371,7 @@
 	modeInsertPDFCheckbox,
 	modeInsertPDFCombobox,
 	modeInsertPDFListbox,
+	modeInsertPDFSignature,
 	modeInsertPDFTextAnnotation,
 	modeInsertPDFLinkAnnotation,
 	modeDrawFreehandLine,

=== modified file 'scribus/scribusview.cpp'
--- scribus/scribusview.cpp	2008-11-13 15:46:29 +0000
+++ scribus/scribusview.cpp	2008-11-17 17:32:01 +0000
@@ -5390,6 +5390,7 @@
 		case modeInsertPDFCheckbox:
 		case modeInsertPDFCombobox:
 		case modeInsertPDFListbox:
+		case modeInsertPDFSignature:
 		case modeInsertPDFTextAnnotation:
 		case modeInsertPDFLinkAnnotation:
 			selectPage(m);
@@ -5416,6 +5417,9 @@
 			case modeInsertPDFListbox:
 				currItem->annotation().setType(6);
 				break;
+			case modeInsertPDFSignature:
+				currItem->annotation().setType(14);
+				break;
 			case modeInsertPDFTextAnnotation:
 				currItem->annotation().setType(10);
 				break;

=== modified file 'scribus/werktoolb.cpp'
--- scribus/werktoolb.cpp	2008-11-13 15:46:29 +0000
+++ scribus/werktoolb.cpp	2008-11-17 15:02:34 +0000
@@ -163,7 +163,7 @@
 {
 	int c = PDFM->indexOf(id);
 	PDFwerkz = c;
-	QString tmp[] = {"pushbutton.png", "textview.png", "checkbox.png", "combobox.png", "listbox.png"};
+	QString tmp[] = {"pushbutton.png", "textview.png", "checkbox.png", "combobox.png", "listbox.png", "signature.png"};
 	PDFTool->setPixmap(loadIcon(tmp[c]));
 	PDFTool->setOn(true);
 	PDFaTool->setOn(false);
@@ -189,8 +189,8 @@
 void WerkToolBP::languageChange()
 {
 	PDFM->clear();
-	QString tmp_icn[] = {"pushbutton.png", "textview.png", "checkbox.png", "combobox.png", "listbox.png"};
-	QString tmp_txt[] = { tr("Button"), tr("Text Field"), tr("Check Box"), tr("Combo Box"), tr("List Box")};
+	QString tmp_icn[] = {"pushbutton.png", "textview.png", "checkbox.png", "combobox.png", "listbox.png", "signature.png"};
+	QString tmp_txt[] = { tr("Button"), tr("Text Field"), tr("Check Box"), tr("Combo Box"), tr("List Box"), tr("Digital Signature")};
 	size_t ar_tmp = sizeof(tmp_icn) / sizeof(*tmp_icn);
 	for (uint a = 0; a < ar_tmp; ++a)
 		PDFM->insertItem(loadIcon(tmp_icn[a]), tmp_txt[a]);

