pyro-team / bkt-toolbox Goto Github PK
View Code? Open in Web Editor NEWBusiness Kasper Toolbox (BKT) for Microsoft Office
Home Page: https://www.bkt-toolbox.de/
License: MIT License
Business Kasper Toolbox (BKT) for Microsoft Office
Home Page: https://www.bkt-toolbox.de/
License: MIT License
Replace IPY 2 with new IPY 3: https://github.com/IronLanguages/ironpython3/releases/tag/v3.4.0
When adding multiple shapes to a shape library, an EnvironmentError
can occur due to heavy use of clipboard. This can be avoided by copy-pasting in a separate thread.
When using multiple monitors with different dpi setting, on the seconday monitor popups and windows (like QuickEdit) are not placed correctly.
The position of the slide or shape is received using PowerPoints PointsToScreenPixelsX
and PointsToScreenPixelsY
function. These coordinates need to be scaled according to dpi settings. There are different methods: https://dzimchuk.net/best-way-to-get-dpi-value-in-wpf/
Currently this is implemented in the BktWindow.cs
file as follows:
var ptLogicalUnits = source.CompositionTarget.TransformFromDevice.Transform(new Point(x, y));
However, this function does not work properly in the multi-dpi setup. This is probably related to the dpi awareness of PowerPoint itself and not passing the dpi change event: https://www.add-in-express.com/creating-addins-blog/2021/06/10/office-addins-dpi-awareness-research-analysis/
A solution is be to determine the dpi setting for PowerPoints window handle and use that for scaling the coordinates: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdpiforwindow
double scaling = 96.0 / GetDpiForWindow(_helper.Owner)
Make "align shapes as table" more flexible by:
Excel consolidate sheets feature does (sometimes) not work with the typical comrelease error. This seems to be caused by adding sheets or copying data triggering a callback that initiates ComRelease.
Possible fix: Make use of application.EnableEvents = False
The aspect ration for content-only thumbnails does not update which may results in incorrent aspect ratio. (Manual fix possible via context menu, but this should be done automatically.
Activating the hyperlinks option in the agenda leads to an error.
When I create a BKT thumbnail and delete the slide reference (in context menu) to convert it to a normal picture, the popup still appears (as the CONTEXTDIALOG shape tag is not removed).
Steps to reproduce:
EnvironmentError: System.Runtime.InteropServices.COMException (0x80048240): Shape.Tags : Invalid request. Presentation cannot be modified.
Proposed solution: Avoid iteration of all shapes on each slide change in the first place.
Add function to convert a real table into a shape table and vice versa
Pasting dimensions of tables, charts or picture is currently only enabled for single shape. There is no reason why this shouldn't work for multiple selected shapes.
When using a functions that makes use of copy-paste operations a lot, sometimes Environment error related to clipboard issues appear. For example when using "text onto shape" function for many shapes at once. This is reproducable within a PowerPoint instance.
Maybe make more use of save_paste
function in helpers.py
?
Consolidation of workbooks in Excel toolbar page 3 does not work due to comrelease error. Temporary workaround:
Change line:
fileDialog = application.FileDialog(3)
to
fileDialog = application._comobj.FileDialog(3)
in file books.py
Further investigation required.
If log-level is set to DEBUG, the CallBackLazy (e.g. in context menus) leads to a PowerPoint crash
Currently, editing of foreground and background color for harvey moons possible, but line color is missing.
New Office theme in WIndows 11 look takes more spaces so BKT groups in page 1 are collapsed. We should consider making a new BKT theme with 4 pages.
As-is: It is very easy to add slides or shapes to "favorite" chart/shape library, but not to others.
To-be: Add button to add to any library
Add PictureLib, like ChartLib, but based on folders with image files, e.g. for icon libraries and flag library.
For local files within a OneDrive location, Path variable returns the Sharepoint URL and it is very difficult to determine the actual local path, see https://stackoverflow.com/questions/33734706/excels-fullname-property-with-onedrive
The thumbnail feature currently throws an error when refreshing those thumbnails as they are treated as relative path which is not correct. Easiest fix is to support the URL (check for https://) and do not open the file with the local path.
A function to convert all BKT thumbnails in a presentation into regular images (i.e. remove BKT tags from images) would be helpful.
Maybe add this to "Slidedeck cleanup" and/or "Send Slides" features?
The "generate tracker" feature is not very intuitive and needs explanation, especially the styling of the active element is not clear. The UX should be improved, maybe by giving additional help messages.
When defining a callback, you can pass a parameter transaction=False
to avoid invalidation, but this has no effect as it is only stored in InvocationContext
and not used anywhere. Alternatively, you can pass transactional=False
. This parameter is given when initializing in CallbackType
in callback.py
file. However, as the python_name
is None, ribbon.py
will overwrite the CallbackType
without copying any parameters. So the transactional=False
becomes meaningless. Same behavior for cache
resp. cacheable
.
We use the parameter in the settings module as well as the devkit to avoid invalidation when showing the console or reloading the BKT. Starting with IPY3 this will cause a SystemError as the invalidation is triggered for a none existing object.
Potential fixes:
InvocationContext
CallbackType
copy the parameters from previous oneAdd search for chart and shape library
Steps to reproduce:
Excellent addin... really appreciated. I wanted to update but Symantec Virus scanner immediately removing it.
With fix of com release iterations in committ 5ce5d39 the shape table caching mechanism stops working in shape_tables.py
function _prepare_table
.
In Office Design "dark gray" or black some icons are not readable or appear strange (German flag starts with white color).
Selecting multiple slides and updating all thumbnails on those slides doesn't work.
Reason is that thumbnail refresh selects picture, which is not possible is slide in not in active view.
Lines 422-431 in thumbnails.py
if group:
group.select()
shape.Delete()
new_shp.Select(False)
group.regroup(application.ActiveWindow.Selection.ShapeRange)
new_shp.Select()
else:
shape.Delete()
new_shp.Name = shape_name
new_shp.Select()
Solution: Select only for single refreh, not batch refreh for multiple slides.
Add possibility to define icons for subfolders in a ChartLib, e.g. by adding a "folder.png" file in that folder
After an agenda textbox is changed, add some kind of marker to indicate that an agenda update is required to sync the changes to all other slides.
Sometimes it is useful to toggle off the conversion of shape adjustment values.
Make the shape table functions more flexible using dialogs to insert and update them (like for processes and circular segments)
The current feature "consolidate sheets" always copies rows one below the other. In some situations it would be beneficial to consolidate columns next to each other.
Add Font Awesome 6 Iconfonts
Agenda layout is currently limited by the textbox. Sometimes it would be good to have more options:
Steps to reproduce:
Results: Agenda slides are not in correct order
We have received the feature request to lock and unlock shapes.
This feature is indeed supported by editing the raw XML files [1], but there is currently no way in the object model or via VBA.
Other addins (like ShapeLocker from OfficeOne) are editing the raw file (close, edit, save, re-open), but this is not easy to implement and might cause problem when editing files in OneDrive or Sharepoint with real-time sync.
Additionally, this feature will eventually come to PowerPoint [2] as it is already available via Insiders.
[1] https://www.brandwares.com/bestpractices/2016/09/xml-hacking-locking-graphics/
[2] https://insider.office.com/et-ee/blog/lock-objects-in-powerpoint-for-windows
Dynamically select a master shape within a selection by clicking on it to make alignments much more flexible.
When adding animations to shapes (e.g. for timers) these are lost when using the ChartLib feature. Reason: Shapes are grouped and child-shapes cannot be animated.
Fix options:
Support creating sankey charts. Possible solution: Make horizontal connectors curved instead of straight.
When installing the BKT in a path that contains an Umlaut, the bkt.boostrap cannot be found.
When selecting a table (not within a cell, but the whole table) and then switch to toolbar page 2/3 PowerPoint crashs. Reason unknown.
Add new smart shapes for calendar and time functions, e.g. a shape with a calendar dropdown to select dates or a list of months/calendar weeks. Use python functions: https://docs.python.org/2.7/library/calendar.html
Add custom points that connect to shape connectors by distributing points for standard shapes (e.g. circle, rectangle). (This is similar to manually adding points using the "edit points" feature, but this can be a fragile thing destroying the original shape.)
Native Zoom thumbnails are hyperlinks in presentation mode. This should also be done for BKT thumbnails.
Very hidden sheets (xlVeryHidden) can currently only be shown by showing all sheets. Better way would be to add a dialog with a list of all very hidden sheets and select the ones to show.
In rare cases saving an existing presentation is not possible with the following error message:
We're sorry something went wrong that might make PowerPoint unstable. Please save your presentations and restart PowerPoint.
The issues seems to be related to usage of ChartLib feature, but cannot be reproduced as of now.
The "dock to slide" function in QE does (sometimes) not work properly in multi monitor seeing. Currently root cause is unknown.
Creating a segmented circle. Open dialog to change parameters, but nothing happens. Error is that PickupAnimation in helpers.py fails and error is not catched in IPY3.
It would be nice to have a defined Excel sheet with agenda items (and additional data like time slots) that can be imported to the agenda function.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.