From be3c70f451f73b22be78c5df05b17d96cfa5ff3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Gade?= Date: Sat, 18 May 2013 00:40:44 +0200 Subject: [PATCH] Inital commit. Basic AddIn/Ribbon layout done. Server API basically done. --- .gitignore | 148 +++++++++++ PowerPoint Remote.sln | 20 ++ PowerPoint Remote/Constants.cs | 13 + PowerPoint Remote/PPRAddIn.Designer.cs | 231 ++++++++++++++++++ PowerPoint Remote/PPRAddIn.Designer.xml | 4 + PowerPoint Remote/PPRAddIn.cs | 79 ++++++ PowerPoint Remote/PPRRibbon.Designer.cs | 128 ++++++++++ PowerPoint Remote/PPRRibbon.cs | 47 ++++ PowerPoint Remote/PPRRibbon.resx | 120 +++++++++ PowerPoint Remote/PowerPoint Remote.csproj | 225 +++++++++++++++++ PowerPoint Remote/Properties/AssemblyInfo.cs | 38 +++ .../Properties/Resources.Designer.cs | 62 +++++ PowerPoint Remote/Properties/Resources.resx | 117 +++++++++ .../Properties/Settings.Designer.cs | 26 ++ .../Properties/Settings.settings | 7 + PowerPoint Remote/Server/PPRServer.cs | 55 +++++ 16 files changed, 1320 insertions(+) create mode 100644 .gitignore create mode 100644 PowerPoint Remote.sln create mode 100644 PowerPoint Remote/Constants.cs create mode 100644 PowerPoint Remote/PPRAddIn.Designer.cs create mode 100644 PowerPoint Remote/PPRAddIn.Designer.xml create mode 100644 PowerPoint Remote/PPRAddIn.cs create mode 100644 PowerPoint Remote/PPRRibbon.Designer.cs create mode 100644 PowerPoint Remote/PPRRibbon.cs create mode 100644 PowerPoint Remote/PPRRibbon.resx create mode 100644 PowerPoint Remote/PowerPoint Remote.csproj create mode 100644 PowerPoint Remote/Properties/AssemblyInfo.cs create mode 100644 PowerPoint Remote/Properties/Resources.Designer.cs create mode 100644 PowerPoint Remote/Properties/Resources.resx create mode 100644 PowerPoint Remote/Properties/Settings.Designer.cs create mode 100644 PowerPoint Remote/Properties/Settings.settings create mode 100644 PowerPoint Remote/Server/PPRServer.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ee47e51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,148 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +# ========================= +# Windows detritus +# ========================= + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store \ No newline at end of file diff --git a/PowerPoint Remote.sln b/PowerPoint Remote.sln new file mode 100644 index 0000000..2db1a07 --- /dev/null +++ b/PowerPoint Remote.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerPoint Remote", "PowerPoint Remote\PowerPoint Remote.csproj", "{D0A7FF03-2C82-4EE8-A146-2AB0803FAFD6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D0A7FF03-2C82-4EE8-A146-2AB0803FAFD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0A7FF03-2C82-4EE8-A146-2AB0803FAFD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0A7FF03-2C82-4EE8-A146-2AB0803FAFD6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0A7FF03-2C82-4EE8-A146-2AB0803FAFD6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PowerPoint Remote/Constants.cs b/PowerPoint Remote/Constants.cs new file mode 100644 index 0000000..98c8f49 --- /dev/null +++ b/PowerPoint Remote/Constants.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace PowerPoint_Remote +{ + public abstract class Constants + { + public const String NAME = "PowerPoint Remote"; + public const int SERVER_PORT = 34012; + } +} diff --git a/PowerPoint Remote/PPRAddIn.Designer.cs b/PowerPoint Remote/PPRAddIn.Designer.cs new file mode 100644 index 0000000..abb91b2 --- /dev/null +++ b/PowerPoint Remote/PPRAddIn.Designer.cs @@ -0,0 +1,231 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.18034 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 414 +namespace PowerPoint_Remote { + + + /// + [Microsoft.VisualStudio.Tools.Applications.Runtime.StartupObjectAttribute(0)] + [global::System.Security.Permissions.PermissionSetAttribute(global::System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] + public sealed partial class PPRAddIn : Microsoft.Office.Tools.AddInBase { + + internal Microsoft.Office.Tools.CustomTaskPaneCollection CustomTaskPanes; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + private global::System.Object missing = global::System.Type.Missing; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + internal Microsoft.Office.Interop.PowerPoint.Application Application; + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + public PPRAddIn(global::Microsoft.Office.Tools.Factory factory, global::System.IServiceProvider serviceProvider) : + base(factory, serviceProvider, "AddIn", "ThisAddIn") { + Globals.Factory = factory; + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void Initialize() { + base.Initialize(); + this.Application = this.GetHostItem(typeof(Microsoft.Office.Interop.PowerPoint.Application), "Application"); + Globals.PPRAddIn = this; + global::System.Windows.Forms.Application.EnableVisualStyles(); + this.InitializeCachedData(); + this.InitializeControls(); + this.InitializeComponents(); + this.InitializeData(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void FinishInitialization() { + this.InternalStartup(); + this.OnStartup(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void InitializeDataBindings() { + this.BeginInitialization(); + this.BindToData(); + this.EndInitialization(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeCachedData() { + if ((this.DataHost == null)) { + return; + } + if (this.DataHost.IsCacheInitialized) { + this.DataHost.FillCachedData(this); + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeData() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void BindToData() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private void StartCaching(string MemberName) { + this.DataHost.StartCaching(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private void StopCaching(string MemberName) { + this.DataHost.StopCaching(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private bool IsCached(string MemberName) { + return this.DataHost.IsCached(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void BeginInitialization() { + this.BeginInit(); + this.CustomTaskPanes.BeginInit(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void EndInitialization() { + this.CustomTaskPanes.EndInit(); + this.EndInit(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeControls() { + this.CustomTaskPanes = Globals.Factory.CreateCustomTaskPaneCollection(null, null, "CustomTaskPanes", "CustomTaskPanes", this); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeComponents() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + private bool NeedsFill(string MemberName) { + return this.DataHost.NeedsFill(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] + protected override void OnShutdown() { + this.CustomTaskPanes.Dispose(); + base.OnShutdown(); + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + internal sealed partial class Globals { + + /// + private Globals() { + } + + private static PPRAddIn _PPRAddIn; + + private static global::Microsoft.Office.Tools.Factory _factory; + + private static ThisRibbonCollection _ThisRibbonCollection; + + internal static PPRAddIn PPRAddIn { + get { + return _PPRAddIn; + } + set { + if ((_PPRAddIn == null)) { + _PPRAddIn = value; + } + else { + throw new System.NotSupportedException(); + } + } + } + + internal static global::Microsoft.Office.Tools.Factory Factory { + get { + return _factory; + } + set { + if ((_factory == null)) { + _factory = value; + } + else { + throw new System.NotSupportedException(); + } + } + } + + internal static ThisRibbonCollection Ribbons { + get { + if ((_ThisRibbonCollection == null)) { + _ThisRibbonCollection = new ThisRibbonCollection(_factory.GetRibbonFactory()); + } + return _ThisRibbonCollection; + } + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "11.0.0.0")] + internal sealed partial class ThisRibbonCollection : Microsoft.Office.Tools.Ribbon.RibbonCollectionBase { + + /// + internal ThisRibbonCollection(global::Microsoft.Office.Tools.Ribbon.RibbonFactory factory) : + base(factory) { + } + } +} diff --git a/PowerPoint Remote/PPRAddIn.Designer.xml b/PowerPoint Remote/PPRAddIn.Designer.xml new file mode 100644 index 0000000..ec6d4cf --- /dev/null +++ b/PowerPoint Remote/PPRAddIn.Designer.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/PowerPoint Remote/PPRAddIn.cs b/PowerPoint Remote/PPRAddIn.cs new file mode 100644 index 0000000..48ca02e --- /dev/null +++ b/PowerPoint Remote/PPRAddIn.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; +using PowerPoint = Microsoft.Office.Interop.PowerPoint; +using Office = Microsoft.Office.Core; +using PowerPoint_Remote.Server; + +namespace PowerPoint_Remote +{ + public partial class PPRAddIn + { + #region Global Static Getters + private static PPRAddIn instance = null; + public static PPRAddIn GetInstance() + { + return PPRAddIn.instance; + } + #endregion + + private PPRServer server = null; + + #region AddIn Events + /// + /// Called when the AddIn was loaded. + /// + /// The sender. + /// Event arguments. + private void ThisAddIn_Startup(object sender, System.EventArgs e) + { + // save our instance + if ( PPRAddIn.instance == null ) + PPRAddIn.instance = this; + + this.server = new PPRServer(); + } + + private void ThisAddIn_Shutdown(object sender, System.EventArgs e) + { + // clean on shutdown + this.StopServer(); + } + #endregion + + #region Getters + public bool IsServerRunning() + { + return this.server.isRunning(); + } + #endregion + + #region Public Methods + public bool StartServer() + { + return this.IsServerRunning(); + } + + public bool StopServer() + { + return this.IsServerRunning(); + } + #endregion + + #region Von VSTO generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InternalStartup() + { + this.Startup += new System.EventHandler(ThisAddIn_Startup); + this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); + } + + #endregion + } +} diff --git a/PowerPoint Remote/PPRRibbon.Designer.cs b/PowerPoint Remote/PPRRibbon.Designer.cs new file mode 100644 index 0000000..0f1557e --- /dev/null +++ b/PowerPoint Remote/PPRRibbon.Designer.cs @@ -0,0 +1,128 @@ +namespace PowerPoint_Remote +{ + partial class PPRRibbon : Microsoft.Office.Tools.Ribbon.RibbonBase + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + public PPRRibbon() + : base(Globals.Factory.GetRibbonFactory()) + { + InitializeComponent(); + } + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// "true", wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls "false". + protected override void Dispose(bool disposing) + { + if ( disposing && ( components != null ) ) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Komponenten-Designer generierter Code + + /// + /// Erforderliche Methode für Designerunterstützung - + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.tab1 = this.Factory.CreateRibbonTab(); + this.group1 = this.Factory.CreateRibbonGroup(); + this.buttonStartServer = this.Factory.CreateRibbonButton(); + this.buttonStopServer = this.Factory.CreateRibbonButton(); + this.group2 = this.Factory.CreateRibbonGroup(); + this.labelName = this.Factory.CreateRibbonLabel(); + this.tab1.SuspendLayout(); + this.group1.SuspendLayout(); + this.group2.SuspendLayout(); + // + // tab1 + // + this.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office; + this.tab1.Groups.Add(this.group1); + this.tab1.Groups.Add(this.group2); + this.tab1.Label = "PowerPoint Remote"; + this.tab1.Name = "tab1"; + // + // group1 + // + this.group1.Items.Add(this.buttonStartServer); + this.group1.Items.Add(this.buttonStopServer); + this.group1.Label = "Server"; + this.group1.Name = "group1"; + // + // buttonStartServer + // + this.buttonStartServer.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; + this.buttonStartServer.KeyTip = "R"; + this.buttonStartServer.Label = "Start"; + this.buttonStartServer.Name = "buttonStartServer"; + this.buttonStartServer.OfficeImageId = "OutlookGlobe"; + this.buttonStartServer.ShowImage = true; + this.buttonStartServer.SuperTip = "Starts the server"; + this.buttonStartServer.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.buttonStartServer_Click); + // + // buttonStopServer + // + this.buttonStopServer.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; + this.buttonStopServer.Enabled = false; + this.buttonStopServer.KeyTip = "S"; + this.buttonStopServer.Label = "Stop"; + this.buttonStopServer.Name = "buttonStopServer"; + this.buttonStopServer.OfficeImageId = "PrintPreviewClose"; + this.buttonStopServer.ShowImage = true; + this.buttonStopServer.SuperTip = "Stops the server."; + this.buttonStopServer.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.buttonStopServer_Click); + // + // group2 + // + this.group2.Items.Add(this.labelName); + this.group2.Label = "Connected device"; + this.group2.Name = "group2"; + // + // labelName + // + this.labelName.Label = "No connection"; + this.labelName.Name = "labelName"; + // + // PPRRibbon + // + this.Name = "PPRRibbon"; + this.RibbonType = "Microsoft.PowerPoint.Presentation"; + this.Tabs.Add(this.tab1); + this.Load += new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.PPRRibbon_Load); + this.tab1.ResumeLayout(false); + this.tab1.PerformLayout(); + this.group1.ResumeLayout(false); + this.group1.PerformLayout(); + this.group2.ResumeLayout(false); + this.group2.PerformLayout(); + + } + + #endregion + + internal Microsoft.Office.Tools.Ribbon.RibbonTab tab1; + internal Microsoft.Office.Tools.Ribbon.RibbonGroup group1; + internal Microsoft.Office.Tools.Ribbon.RibbonButton buttonStartServer; + internal Microsoft.Office.Tools.Ribbon.RibbonButton buttonStopServer; + internal Microsoft.Office.Tools.Ribbon.RibbonGroup group2; + internal Microsoft.Office.Tools.Ribbon.RibbonLabel labelName; + } + + partial class ThisRibbonCollection + { + internal PPRRibbon PPRRibbon + { + get { return this.GetRibbon(); } + } + } +} diff --git a/PowerPoint Remote/PPRRibbon.cs b/PowerPoint Remote/PPRRibbon.cs new file mode 100644 index 0000000..6d0c2af --- /dev/null +++ b/PowerPoint Remote/PPRRibbon.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using Microsoft.Office.Tools.Ribbon; + +namespace PowerPoint_Remote +{ + public partial class PPRRibbon + { + private PPRAddIn addInInstance = null; + + #region Ribbon Events + private void PPRRibbon_Load(object sender, RibbonUIEventArgs e) + { + this.addInInstance = PPRAddIn.GetInstance(); + + this.SetUIState(); + } + #endregion + + #region UI Events + private void buttonStartServer_Click(object sender, RibbonControlEventArgs e) + { + if ( this.addInInstance.StartServer() ) + this.SetUIState(); + } + + private void buttonStopServer_Click(object sender, RibbonControlEventArgs e) + { + if ( this.addInInstance.StopServer() ) + this.SetUIState(); + } + #endregion + + #region UI Methods + private void SetUIState() + { + bool serverRunning = this.addInInstance.IsServerRunning(); + + this.buttonStartServer.Enabled = !serverRunning; + this.buttonStopServer.Enabled = serverRunning; + } + #endregion + } +} diff --git a/PowerPoint Remote/PPRRibbon.resx b/PowerPoint Remote/PPRRibbon.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/PowerPoint Remote/PPRRibbon.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PowerPoint Remote/PowerPoint Remote.csproj b/PowerPoint Remote/PowerPoint Remote.csproj new file mode 100644 index 0000000..b4332f2 --- /dev/null +++ b/PowerPoint Remote/PowerPoint Remote.csproj @@ -0,0 +1,225 @@ + + + + + + {BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + AnyCPU + {D0A7FF03-2C82-4EE8-A146-2AB0803FAFD6} + Library + false + PowerPoint_Remote + PowerPoint Remote + 3 + v4.0 + VSTO40 + true + HomeSite + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + Windows Installer 4.5 + true + + + + + PowerPoint + + + + true + full + false + bin\Debug\ + false + $(DefineConstants);DEBUG;TRACE + 4 + + + + pdbonly + true + bin\Release\ + false + $(DefineConstants);TRACE + 4 + + + + + + + + + + + + + + + + + + + + + + + True + + + + + False + true + + + False + true + + + False + + + + + + + Component + + + PPRRibbon.cs + + + Code + + + + PPRRibbon.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + + + Code + + + PPRAddIn.cs + + + PPRAddIn.Designer.xml + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + true + + + PowerPoint Remote_TemporaryKey.pfx + + + F6BF14354264E5118DF4B373B988665F82BF4A84 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PowerPoint Remote/Properties/AssemblyInfo.cs b/PowerPoint Remote/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1d3c7d2 --- /dev/null +++ b/PowerPoint Remote/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security; + +// Allgemeine Informationen über eine Assembly werden über die folgende +// Attributgruppe gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("PowerPoint Remote")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("PowerPoint Remote")] +[assembly: AssemblyCopyright("Copyright © Sören Gade 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Zugriffstyp in dieser Assembly aus +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(false)] + +// Die folgende GUID ist für die ID der typelib, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("7ee95b14-3e98-419b-b827-047bb4dd031a")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + diff --git a/PowerPoint Remote/Properties/Resources.Designer.cs b/PowerPoint Remote/Properties/Resources.Designer.cs new file mode 100644 index 0000000..d0cbedb --- /dev/null +++ b/PowerPoint Remote/Properties/Resources.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18034 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace PowerPoint_Remote.Properties { + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PowerPoint_Remote.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/PowerPoint Remote/Properties/Resources.resx b/PowerPoint Remote/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/PowerPoint Remote/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PowerPoint Remote/Properties/Settings.Designer.cs b/PowerPoint Remote/Properties/Settings.Designer.cs new file mode 100644 index 0000000..f4a5c5a --- /dev/null +++ b/PowerPoint Remote/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18034 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace PowerPoint_Remote.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/PowerPoint Remote/Properties/Settings.settings b/PowerPoint Remote/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/PowerPoint Remote/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/PowerPoint Remote/Server/PPRServer.cs b/PowerPoint Remote/Server/PPRServer.cs new file mode 100644 index 0000000..120c6c7 --- /dev/null +++ b/PowerPoint Remote/Server/PPRServer.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading; + +namespace PowerPoint_Remote.Server +{ + public class PPRServer + { + private Thread thread = null; + private Socket socket = null; + + public bool isRunning() + { + return ( this.thread != null && this.thread.IsAlive ); + } + + public PPRServer() + { + + } + + public bool Start() + { + if ( !this.isRunning() ) + { + this.thread = new Thread(this.Run); + this.thread.Start(); + + return true; + } + + return false; + } + public bool Stop() + { + if ( this.isRunning() ) + { + this.thread.Interrupt(); + this.thread.Join(1000); + + return true; + } + + return false; + } + + private void Run() + { + Debug.WriteLine("running!"); + } + } +}