diff --git a/src/taskpane/components/AddConfidential.tsx b/src/taskpane/components/AddConfidential.tsx
deleted file mode 100644
index 38cff08e..00000000
--- a/src/taskpane/components/AddConfidential.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import * as React from "react";
-import {
- Button
-} from "@fluentui/react-components";
-import {
- ShieldLockRegular
-} from "@fluentui/react-icons";
-import { useStatusContext } from "./App";
-import { useCommonStyles } from "./commonStyles";
-
-export const AddConfidential: React.FC = () => {
- const styles = useCommonStyles();
- const {
- statusMessage, setStatusMessage,
- statusType, setStatusType,
- isProcessing, setIsProcessing
- } = useStatusContext();
-
- const addConfidentialMarking = async () => {
- setIsProcessing(true);
- try {
- await PowerPoint.run(async (context) => {
- try {
- // Get all slides in the presentation
- const slides = context.presentation.slides;
- slides.load("items");
- await context.sync();
-
- // Get a reference slide to determine dimensions
- // Since we can't access presentation width/height directly
- if (slides.items.length === 0) {
- setStatusMessage("No slides found in the presentation.");
- setStatusType("warning");
- return;
- }
-
- // Get dimensions from the first slide
- const firstSlide = slides.items[0];
-
- // Standard PowerPoint slide dimensions (in points)
- // We'll use these as fallbacks and adjust if we can get actual dimensions
- let slideWidth = 960; // Default slide width (10 inches * 72 points)
- let slideHeight = 540; // Default slide height (7.5 inches * 72 points)
-
- // Process counter
- let processedSlides = 0;
- let errorSlides = 0;
-
- // Process each slide
- for (let i = 0; i < slides.items.length; i++) {
- try {
- const slide = slides.items[i];
-
- const positionFromTop = slideHeight - 23;
-
- // Create the textbox - make sure it spans the full width of the slide
- // This is important for proper centering
- const textBox = slide.shapes.addTextBox("");
-
- // Make it span most of the width of the slide (90% centered)
- // This ensures we have room for the text to be centered
- const textBoxWidth = slideWidth * 1; // 0.9
- textBox.left = (slideWidth - textBoxWidth) / 2; // Center it horizontally
- textBox.top = positionFromTop;
- textBox.width = textBoxWidth;
- textBox.height = 25; // Smaller height for footer text
-
- console.log("Starting PowerPoint add-in execution.");
- console.log(textBox.left);
- console.log(textBox.top);
- console.log(textBox.width);
- console.log(textBox.height);
- await context.sync();
-
- // Load textFrame to set text properties
- textBox.load("textFrame");
- await context.sync();
-
- if (textBox.textFrame) {
- // Load textRange to set text and properties
- textBox.textFrame.load("textRange");
- await context.sync();
-
- // Need to load font and paragraphFormat
- textBox.textFrame.textRange.load("font,paragraphFormat");
- await context.sync();
-
- // Set font properties
- try {
- // Ensure the font is loaded properly before setting properties
- textBox.textFrame.textRange.font.load();
- await context.sync();
-
- // Set font properties exactly as in the VBA code
- textBox.textFrame.textRange.font.name = "Inter";
- textBox.textFrame.textRange.font.size = 8;
- textBox.textFrame.textRange.paragraphFormat.horizontalAlignment = "Center"
-
- // Set the color to RGB(218, 19, 53)
- // Different APIs may need different color formats
- textBox.textFrame.textRange.font.color = "#DA1335";
-
- // Set the text
- textBox.textFrame.textRange.text = "– Confidential –";
- } catch (fontError) {
- console.error("Error setting font properties:", fontError);
- // Even if we can't set the font properties exactly, continue with default font
- }
-
- // Add a name/tag to the shape for identification
- textBox.name = "ConfidentialMarking";
-
- await context.sync();
- processedSlides++;
- }
- } catch (slideError) {
- console.error(`Error processing slide ${i+1}:`, slideError);
- errorSlides++;
- // Continue to the next slide
- continue;
- }
- }
-
- // Report results
- if (processedSlides > 0) {
- setStatusMessage(`Added confidential marking to ${processedSlides} slides.`);
- setStatusType("success");
- } else if (errorSlides > 0) {
- setStatusMessage(`Failed to add markings. Errors on ${errorSlides} slides.`);
- setStatusType("error");
- } else {
- setStatusMessage("No slides found to add confidential marking.");
- setStatusType("warning");
- }
-
- } catch (innerError) {
- console.error("Inner error:", innerError);
- throw innerError; // Re-throw to outer catch
- }
- });
- } catch (error) {
- setStatusMessage(`Error: ${error.message}`);
- setStatusType("error");
- console.error("Add confidential error:", error);
- } finally {
- setIsProcessing(false);
- }
- };
-
- return (
-
-
- }
- disabled={isProcessing}
- >
- Add Confidential
-
-
-
- );
-};
-
-export default AddConfidential;
\ No newline at end of file
diff --git a/src/taskpane/components/AddDraft.tsx b/src/taskpane/components/AddDraft.tsx
deleted file mode 100644
index 71a2aba0..00000000
--- a/src/taskpane/components/AddDraft.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import * as React from "react";
-import {
- Button
-} from "@fluentui/react-components";
-import {
- Edit24Regular
-} from "@fluentui/react-icons";
-import { useStatusContext } from "./App";
-import { useCommonStyles } from "./commonStyles";
-
-export const AddDraft: React.FC = () => {
- const styles = useCommonStyles();
- const {
- statusMessage, setStatusMessage,
- statusType, setStatusType,
- isProcessing, setIsProcessing
- } = useStatusContext();
-
- const addDraftWatermark = async () => {
- setIsProcessing(true);
- try {
- await PowerPoint.run(async (context) => {
- const shapes = context.presentation.getSelectedShapes();
- // Implementation will go here
- setStatusMessage("Added draft watermark to slides.");
- setStatusType("success");
- });
- } catch (error) {
- setStatusMessage(`Error: ${error.message}`);
- setStatusType("error");
- console.error("Add draft watermark error:", error);
- } finally {
- setIsProcessing(false);
- }
- };
-
- return (
-
-
- }
- disabled={isProcessing}
- >
- Add Draft
-
-
-
- );
-};
-
-export default AddDraft;
\ No newline at end of file
diff --git a/src/taskpane/components/RemoveConfidential.tsx b/src/taskpane/components/RemoveConfidential.tsx
deleted file mode 100644
index 1a2b8f01..00000000
--- a/src/taskpane/components/RemoveConfidential.tsx
+++ /dev/null
@@ -1,115 +0,0 @@
-import * as React from "react";
-import {
- Button
-} from "@fluentui/react-components";
-import {
- DismissRegular
-} from "@fluentui/react-icons";
-import { useStatusContext } from "./App";
-import { useCommonStyles } from "./commonStyles";
-
-export const RemoveConfidential: React.FC = () => {
- const styles = useCommonStyles();
- const {
- statusMessage, setStatusMessage,
- statusType, setStatusType,
- isProcessing, setIsProcessing
- } = useStatusContext();
-
- const removeConfidentialMarking = async () => {
- setIsProcessing(true);
- try {
- await PowerPoint.run(async (context) => {
- try {
- // Get all slides in the presentation
- const slides = context.presentation.slides;
- slides.load("items");
- await context.sync();
-
- if (slides.items.length === 0) {
- setStatusMessage("No slides found in the presentation.");
- setStatusType("warning");
- return;
- }
-
- // Process counter
- let processedSlides = 0;
- let errorSlides = 0;
- let removedCount = 0;
-
- // Process each slide
- for (let i = 0; i < slides.items.length; i++) {
- try {
- const slide = slides.items[i];
-
- // Load all shapes on the slide
- slide.shapes.load("items");
- await context.sync();
-
- // Find shapes with name "ConfidentialMarking"
- for (let j = 0; j < slide.shapes.items.length; j++) {
- const shape = slide.shapes.items[j];
- shape.load("name");
- await context.sync();
-
- if (shape.name === "ConfidentialMarking") {
- // Delete the confidential marking shape
- shape.delete();
- removedCount++;
- }
- }
-
- await context.sync();
- processedSlides++;
- } catch (slideError) {
- console.error(`Error processing slide ${i+1}:`, slideError);
- errorSlides++;
- // Continue to the next slide
- continue;
- }
- }
-
- // Report results
- if (removedCount > 0) {
- setStatusMessage(`Removed ${removedCount} confidential markings from ${processedSlides} slides.`);
- setStatusType("success");
- } else if (errorSlides > 0) {
- setStatusMessage(`Failed to remove markings. Errors on ${errorSlides} slides.`);
- setStatusType("error");
- } else {
- setStatusMessage("No confidential markings found to remove.");
- setStatusType("info");
- }
-
- } catch (innerError) {
- console.error("Inner error:", innerError);
- throw innerError; // Re-throw to outer catch
- }
- });
- } catch (error) {
- setStatusMessage(`Error: ${error.message}`);
- setStatusType("error");
- console.error("Remove confidential error:", error);
- } finally {
- setIsProcessing(false);
- }
- };
-
- return (
-
-
- }
- disabled={isProcessing}
- >
- Remove Confidential
-
-
-
- );
-};
-
-export default RemoveConfidential;
\ No newline at end of file
diff --git a/src/taskpane/components/RemoveDraft.tsx b/src/taskpane/components/RemoveDraft.tsx
deleted file mode 100644
index 590309b2..00000000
--- a/src/taskpane/components/RemoveDraft.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import * as React from "react";
-import {
- Button
-} from "@fluentui/react-components";
-import {
- DismissRegular
-} from "@fluentui/react-icons";
-import { useStatusContext } from "./App";
-import { useCommonStyles } from "./commonStyles";
-
-export const RemoveDraft: React.FC = () => {
- const styles = useCommonStyles();
- const {
- statusMessage, setStatusMessage,
- statusType, setStatusType,
- isProcessing, setIsProcessing
- } = useStatusContext();
-
- const removeDraftWatermark = async () => {
- setIsProcessing(true);
- try {
- await PowerPoint.run(async (context) => {
- const shapes = context.presentation.getSelectedShapes();
- // Implementation will go here
- setStatusMessage("Removed draft watermarks from slides.");
- setStatusType("success");
- });
- } catch (error) {
- setStatusMessage(`Error: ${error.message}`);
- setStatusType("error");
- console.error("Remove draft watermark error:", error);
- } finally {
- setIsProcessing(false);
- }
- };
-
- return (
-
-
- }
- disabled={isProcessing}
- >
- Remove Draft
-
-
-
- );
-};
-
-export default RemoveDraft;
\ No newline at end of file