diff options
25 files changed, 826 insertions, 1 deletions
diff --git a/Repository.mk b/Repository.mk index a2967791e9bb..b97a68e371e5 100644 --- a/Repository.mk +++ b/Repository.mk @@ -945,6 +945,7 @@ $(eval $(call gb_Helper_register_packages_for_install,ooo,\ wizards_basicusr \ wizards_properties \ wizards_wizardshare \ + tipoftheday_images \ vcl_opengl_shader \ vcl_theme_definitions \ $(if $(filter WNT,$(OS)), \ diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk index 8ede124d16be..629da3fbc4af 100644 --- a/cui/Library_cui.mk +++ b/cui/Library_cui.mk @@ -115,6 +115,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\ cui/source/dialogs/hltpbase \ cui/source/dialogs/hyphen \ cui/source/dialogs/iconcdlg \ + cui/source/dialogs/tipofthedaydlg \ cui/source/dialogs/insdlg \ cui/source/dialogs/insrc \ cui/source/dialogs/linkdlg \ diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk index d6ba15a82667..4b087d9ca444 100644 --- a/cui/UIConfig_cui.mk +++ b/cui/UIConfig_cui.mk @@ -87,6 +87,7 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/hyphenate \ cui/uiconfig/ui/iconchangedialog \ cui/uiconfig/ui/iconselectordialog \ + cui/uiconfig/ui/tipofthedaydialog \ cui/uiconfig/ui/insertfloatingframe \ cui/uiconfig/ui/insertoleobject \ cui/uiconfig/ui/insertrowcolumn \ diff --git a/cui/inc/tipoftheday.hrc b/cui/inc/tipoftheday.hrc new file mode 100644 index 000000000000..1162a09d7779 --- /dev/null +++ b/cui/inc/tipoftheday.hrc @@ -0,0 +1,342 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_CUI_INC_TIPOFTHEDAY_HRC +#define INCLUDED_CUI_INC_TIPOFTHEDAY_HRC + +#define NC_(Context, String) reinterpret_cast<char const *>(Context "\004" u8##String) + +/* + * text beginning with "html" will be used until the end as hyperlink + * use \\ to show \ + * place accompanying images at extra/source/tipoftheday and name tipoftheday_<id>.png, e.g. tipoftheday_1.png + * add the files to vcl/Package_tipoftheday.mk +*/ + +const char* TIPOFTHEDAY_STRINGARRAY[] = +{ + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice has the ask.libreoffice.org portal where you may get help from the community. https://ask.libreoffice.org/"), + NC_("RID_CUI_TIPOFTHEDAY", "You can easily convert your documents to PDF with one click by clicking the PDF icon in the toolbar."), + NC_("RID_CUI_TIPOFTHEDAY", "Editable PDFs? Yes, you can create Hybrid PDFs with LibreOffice. https://wiki.documentfoundation.org/Documentation/HowTo/CreateAHybridPDF"), + NC_("RID_CUI_TIPOFTHEDAY", "You can select the new Sifr icon set from Tools > Options... > LibreOffice > View > User Interface > Icon size and style."), + NC_("RID_CUI_TIPOFTHEDAY", "You can easily create fillable form documents (even PDF's) with LibreOffice"), + NC_("RID_CUI_TIPOFTHEDAY", "You can use your Android or iPhone to remotely control your Impress presentation"), + NC_("RID_CUI_TIPOFTHEDAY", "Something about rollAPP? You can use LibreOffice on your iPad or Chrome OS via rollApp"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice has great extensions to increase your productivity on its Extension Center, check it out. https://extensions.libreoffice.org/"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice has a template center to create good looking documents, check it out. http://templates.libreoffice.org/template-center"), + NC_("RID_CUI_TIPOFTHEDAY", "You can use font embedding for greater interoperability with other office suites/oses "), + NC_("RID_CUI_TIPOFTHEDAY", "Conditional formatting..."), + NC_("RID_CUI_TIPOFTHEDAY", "XSLT and xml filters http://fridrich.blogspot.com.tr/2013/08/extending-swiss-army-knife-overview.html "), + NC_("RID_CUI_TIPOFTHEDAY", "Zotero is an extensions for better bibliography citation management for Academic works and students https://www.zotero.org/download/"), + NC_("RID_CUI_TIPOFTHEDAY", "Mendeley is an extensions for better bibliography citation management for Academic works and students http://www.mendeley.com/"), + NC_("RID_CUI_TIPOFTHEDAY", "You can change the appearance of LibreOffice with Firefox Personas https://addons.mozilla.org/firefox/themes/"), + NC_("RID_CUI_TIPOFTHEDAY", "You can change the splash screen of LibreOffice for your own taste"), + NC_("RID_CUI_TIPOFTHEDAY", "You can disable the splash screen "), + NC_("RID_CUI_TIPOFTHEDAY", "You can speed-up/fine tune LibreOffice's performance http://oldpapyrus.wordpress.com/2012/06/28/reduce-libreoffice-memory-usage/"), + NC_("RID_CUI_TIPOFTHEDAY", "You can use Quickstart to open LibreOffice quicker"), + NC_("RID_CUI_TIPOFTHEDAY", "Have you tried our new sidebar- Appearance- Sidebar"), + NC_("RID_CUI_TIPOFTHEDAY", "Have you known that LibreOffice has great documentation and free user guide books http://www.libreoffice.org/get-help/documentation/ "), + NC_("RID_CUI_TIPOFTHEDAY", "Embedded help can save lifes. Just click F1 to reach the embedded help, if you've installed it. Otherwise you may benefit from this huge content online at http://help.libreoffice.org"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice has a portable version which gives you mobility. If you don't have administrator rights on your computer you may install LibreOffice Portable to your hard drive too http://www.libreoffice.org/download/portable-versions/"), + NC_("RID_CUI_TIPOFTHEDAY", "How to remove pagebreaks from a .docx document that someone sent you, where there are pagebreaks for each sentence in the document."), + NC_("RID_CUI_TIPOFTHEDAY", "Open 1 document in 2 windows"), + NC_("RID_CUI_TIPOFTHEDAY", "Format one or more characters with a border available since 4.2"), + NC_("RID_CUI_TIPOFTHEDAY", "Generate fully customized PDF documents: you can define the exact pdf format, image compression, comments, access rights, password. File > Export as PDF"), + NC_("RID_CUI_TIPOFTHEDAY", "Right-click context menu on bottom left scrollbar arrows to switch sheets"), + NC_("RID_CUI_TIPOFTHEDAY", "CMIS protocol support to access Document Management Systems"), + NC_("RID_CUI_TIPOFTHEDAY", "Use Data › Statistics for Sampling, Descriptive Statistics, Analysis of Variance, Correlation, Covariance, Exponential Smoothing, Moving Avg"), + NC_("RID_CUI_TIPOFTHEDAY", "Right-click in the status bar and select 'Selection count' to display the number of selected cells"), + NC_("RID_CUI_TIPOFTHEDAY", "Insert › Image › Photo Album to create slideshows from a series of pictures with the 'Photo Album' feature"), + NC_("RID_CUI_TIPOFTHEDAY", "Take a look at the new 'Gallery' (Images & sounds, fifteen themes: Arrows, Bullets, Computers, Environment, Finance, School, Symbols...)"), + NC_("RID_CUI_TIPOFTHEDAY", "Did you know that you can attach comments to portions of text?"), + NC_("RID_CUI_TIPOFTHEDAY", "Need to insert the date in a cell? Type Ctrl+; (Shift+Ctrl+; to insert the time)"), + NC_("RID_CUI_TIPOFTHEDAY", "You want to sort a series such as A1, A2, A3, A11, A15, not in alphabetical order but on the number? Enable natural sort in the Options tab"), + NC_("RID_CUI_TIPOFTHEDAY", "Need to move one or more paragraphs? No need to cut and paste: Use the keyboard shortcut Ctrl+Alt+Arrow (Up/Down)"), + NC_("RID_CUI_TIPOFTHEDAY", "Delete a col of a table (writer) without changing the column widths? Click the column, press Alt+Del 3 seconds then press left/right arrow"), + NC_("RID_CUI_TIPOFTHEDAY", "With #libreoffice is easy to set-up a custom palette. Here's a videoguide: http://impress.paolopelloni.it/2012/06/22/how-create-custom-colour-palette-libreoffice-impress/"), + NC_("RID_CUI_TIPOFTHEDAY", "Presenter console is a great feature when presenting with Impress. Have you checked it out?"), + NC_("RID_CUI_TIPOFTHEDAY", "Impress offers you different keys to control your slide presentation: http://impress.paolopelloni.it/2012/07/24/the-right-keys-to-press-when-presenting-with-impress/"), + NC_("RID_CUI_TIPOFTHEDAY", "Do you know that since version 3.5 colour palette is embedded in the document for greater portability?"), + NC_("RID_CUI_TIPOFTHEDAY", "You can automatically mark alphabetical index entries using a concordance file."), + NC_("RID_CUI_TIPOFTHEDAY", "Frames can be linked so that the text can flow from one to the other as in desktop publishing."), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice supports 110 languages https://wiki.documentfoundation.org/Language_support_of_LibreOffice"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice supports 4 macros security levels (from low to very high) and trusted sources"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice allows you to use assistive tools, such as external screen readers, Braille devices or speech recognition input devices."), + NC_("RID_CUI_TIPOFTHEDAY", "Title page: one single instruction to insert, number the pages, choose the layout..."), + NC_("RID_CUI_TIPOFTHEDAY", "Batch convert your MS Office documents to OpenDocument format by the Document Converter wizard"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice intends to apply as an organization for Google Summer of Code (GSoC) see https://wiki.documentfoundation.org/Development/GSoC"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice has a certification program. Interested? See http://www.documentfoundation.org/certification"), + NC_("RID_CUI_TIPOFTHEDAY", "Uncheck Tools›Options›Calc›View›Zoom: 'Synchronize sheets' so that each sheet has its own zoom factor"), + NC_("RID_CUI_TIPOFTHEDAY", "To open a CSV file as a new sheet in the current spreadsheet use Insert›Sheet from file"), + NC_("RID_CUI_TIPOFTHEDAY", "You write a book? LibreOffice master document lets you manage large documents as a container for individual LibreOffice Writer files."), + NC_("RID_CUI_TIPOFTHEDAY", "Show summary slide: right click and 'goto slide' or Ctrl+Shift+F5 to display the browser and that gives you a pointer to draw on the slides"), + NC_("RID_CUI_TIPOFTHEDAY", "Need to move a writer table? Select whole table, Insert›Frame›Check Autosize›Ok, Move where you want !"), + NC_("RID_CUI_TIPOFTHEDAY", "In Draw to change the 0 point of the rulers, drag the intersection of the two rulers in the top left corner into the workspace"), + NC_("RID_CUI_TIPOFTHEDAY", "To change the default options for Drawing toolbar tools, select one of the tools and define the options before drawing the first object"), + NC_("RID_CUI_TIPOFTHEDAY", "Use array formula to repeat calculation using different values: they need less disk space & consume little memory"), + NC_("RID_CUI_TIPOFTHEDAY", "Enable massive parallel calculations of formula cells via OpenCL formula option"), + NC_("RID_CUI_TIPOFTHEDAY", "You have a mouse with a scroll wheel? you can hold down Ctrl and turn the wheel to change the zoom factor in all main modules of LibreOffice"), + NC_("RID_CUI_TIPOFTHEDAY", "In writer use the 'content view' of the navigator to synchronize the cursor position & the title"), + NC_("RID_CUI_TIPOFTHEDAY", "Edit Find & Replace lets you insert special characters directly: right click in 'search for' or 'replace by' zone (Ctrl+Shift+S)"), + NC_("RID_CUI_TIPOFTHEDAY", "Don't use tabs to space items on a writer document. Depending on what you are trying to do, a borderless table can be a better choice"), + NC_("RID_CUI_TIPOFTHEDAY", "Drag a formatted object to the Styles and Formatting window. A dialog box opens, just enter the name of the new style."), + NC_("RID_CUI_TIPOFTHEDAY", "Besides styles, customizations menus and toolbars can be saved in a template"), + NC_("RID_CUI_TIPOFTHEDAY", "Tools›Options›LibreOffice›Color lets you edit and create colors available in all LibreOffice documents"), + NC_("RID_CUI_TIPOFTHEDAY", "To edit a not showed comment in Calc, right-click the cell and choose Insert comment. Edit then click outside the comment (hidden again)"), + NC_("RID_CUI_TIPOFTHEDAY", "In Calc use TRIMMEAN() to return the mean of a data set excluding the the highest and lowest values "), + NC_("RID_CUI_TIPOFTHEDAY", "To keep the zeros before a number, use the 'leading zeroes' cell format option or format the cell as text before entering the number"), + NC_("RID_CUI_TIPOFTHEDAY", "To copy a comment without losing the content of the target cell : Paste Special›uncheck everything except Comments. Operations select Add"), + NC_("RID_CUI_TIPOFTHEDAY", "With Calc calculate loan repayments: eg. PMT(2%/12;36;2500) interest rate per payment period 2%/12, 36 months, loan amount 2500"), + NC_("RID_CUI_TIPOFTHEDAY", "To create a chart on another sheet than where the data is, start to create the chart in the other sheet. You can then select the data"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc, Writer... to select an object in the background use the tool Select in the Draw toolbar to surround the object to select"), + NC_("RID_CUI_TIPOFTHEDAY", "Using Writer, apply Heading paragraph styles with Shortcut Keys: Ctrl+1 applies Heading 1, Ctrl+2 applies Heading 2, etc."), + NC_("RID_CUI_TIPOFTHEDAY", "In Calc mix portrait and landscape orientations in a spreadsheet by applying different page styles on sheets"), + NC_("RID_CUI_TIPOFTHEDAY", "In Writer Sections can protect part of text, show/hide text, reuse parts from other documents, use different column layout"), + NC_("RID_CUI_TIPOFTHEDAY", "To choose the medium and the background of your presentation select File›Wizards›Presentation›Page 2"), + NC_("RID_CUI_TIPOFTHEDAY", "You can create many master pages in a presentation template: View›Master›Slide Master›New Master (toolbar or right click in Slide Pane)"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw/Impress: 'Fit object to paper format' (Format›Page) resizes the objects so that they fit on the paper format that you select"), + NC_("RID_CUI_TIPOFTHEDAY", "You want to modify an AutoPlay presentation? Open it, it starts, right click›Edit the presentation "), + NC_("RID_CUI_TIPOFTHEDAY", "Rename your slides to help you define 'Go to page' interactions and have a summary more explicit than Slide1, Slide2..."), + NC_("RID_CUI_TIPOFTHEDAY", "To play a music throughout a slideshow, assign the sound to the first slide transition without clicking the Apply to All Slides button"), + NC_("RID_CUI_TIPOFTHEDAY", "With Slide Show›Custom Slide Show you can reorder and pick slides to fit a slideshow to public needs"), + NC_("RID_CUI_TIPOFTHEDAY", "To include a paragraph that is not a title in the TOC, edit the paragraph, Outline & Numbering tab select the outline level"), + NC_("RID_CUI_TIPOFTHEDAY", "Impress: Select a layout directly when inserting a slide by long click on the +Slide button on the Presentation toolbar"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw/Impress: Use the Connector tool from the Drawing toolbar to draw flowcharts. You can copy and paste into writer"), + NC_("RID_CUI_TIPOFTHEDAY", "The Navigator's Open Documents List allow to select a document in the list. You can then drag & drop an item to another document"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw: Want to see an object but do not print? Draw it or move it to a new layer unprintable"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to stop base forms from going to the next record when you tab from the last field ? Select Active record in the Cycle list (data tab)"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to print 2 portrait pages on a landscape one (reducing A4 to A5)? File›Print›Page Layout tab, select 2 pages per page"), + NC_("RID_CUI_TIPOFTHEDAY", "To be able to get the Vertical Text tool in Drawing toolbar check Tool›Options›Language Settings›Languages›Default languages›Asian"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw/Impress: double-click a tool in drawing toolbar to use it for multiple tasks"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to to display only the highest 10 values in a spreadsheet g? Data›Filter›AutoFilter›Standard click the drop-down arrow›Top10"), + NC_("RID_CUI_TIPOFTHEDAY", "You can not modify or delete a custom cell style? Check all sheets: none should be protected"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Want to get the number of days in month? Try =DAYSINMONTH(TODAY())"), + NC_("RID_CUI_TIPOFTHEDAY", "Do you know that the Styles & Formatting dialog allows you to hide the styles you do not use?"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc displays Err: followed by a number? This page gives the explanation https://help.libreoffice.org/Calc/Error_Codes_in_Calc "), + NC_("RID_CUI_TIPOFTHEDAY", "Want something else than a color as cell background? Drag a background from the Gallery, resize then right click›Arrange To Background"), + NC_("RID_CUI_TIPOFTHEDAY", "To quickly get a math object in Writer type your formulas, mark it then Insert›Object›Formula"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer inserts a blank page between two odd (even) pages that follow. Use File›Print›Writer tab›Print inserted blank pages as per your need"), + NC_("RID_CUI_TIPOFTHEDAY", "The 4th optional parameter of VLOOKUP Calc function tells whether the first column of data is sorted. If not, enter FALSE or zero"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to show hidden col A? Click a cell in col B, keep the left mouse button, move the mouse to the left, release. Format›Column›Show"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer helps you to make backups: with File›Save a copy you create a new document continuing to work on the original. Be safe!"), + NC_("RID_CUI_TIPOFTHEDAY", "You have to present a report written with Writer? File›Send›Outline to Presentation automatically creates your slideshow from the outline"), + NC_("RID_CUI_TIPOFTHEDAY", "Drag & drop cells from calc into the normal view of a slide creates a table. Into the outline view, each cell creates a line in the outline"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: to copy the table cells' background, use the Format Paintbrush of the Standard ToolBar"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw/Impress›Right click›Alignment to center the selection: on the page if 1 object or a group, on the selection if several objects"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to find the words in bold in a Writer doc? Edit›Find&Replace›Other options›Attributes›Font weight (check Including styles if needed)"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to repeat the heading on next page when a table spans more than one page? Table›Table Properties›Text Flow tab›Check Repeat heading"), + NC_("RID_CUI_TIPOFTHEDAY", "You can use the column (row) labels in formulas. Eg. you have 2 columns, Time & KM, use =Time/KM to get minutes per kilometer (apply hour format)"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: To change the number of a page, edit its first paragraph›Flow tab check Break›Insert and give the number (0 for continuous numbering)"), + NC_("RID_CUI_TIPOFTHEDAY", "Do you want the cursor to go into the cell to the right, after you've entered a value in a cell? Use the Tab key instead of the Enter key"), + NC_("RID_CUI_TIPOFTHEDAY", "Impress provides you with a simple animation editor to create an animated GIF: Insert›Animated Image"), + NC_("RID_CUI_TIPOFTHEDAY", "Since LibreOffice version 4.1, you can show or hide comments in Writer by clicking the comment toggle button in the rule"), + NC_("RID_CUI_TIPOFTHEDAY", "In Calc, it is no longer necessary to use RAND or RANDBETWEEN function to generate a random series. Use Edit›Fill›Random Number"), + NC_("RID_CUI_TIPOFTHEDAY", "Fit your sheet or print ranges to a page with Format›Page›Sheet Tab›Scaling Mode"), + NC_("RID_CUI_TIPOFTHEDAY", "To keep visible column headers of a sheet when scrolling lines, use Windows›Freeze (or Windows›Split if scrollable header needed)"), + NC_("RID_CUI_TIPOFTHEDAY", "Want your chapter titles to always begin a page? Edit Heading1 (paragraph style)›Flow tab›Breaks›check Insert›Page›Before"), + NC_("RID_CUI_TIPOFTHEDAY", "Do you want to keep the text but remove a hyperlink in Writer? Right click on the link›Remove Hyperlink"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to remove all <> at once & keep the text inside? Edit›Find & Replace›Search›[<|>]›Replace›blank›Other Options›check Regular expressions"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Use Format›Conditional Formating›Manage to find out which are the cells for which conditional 9formating has been defined"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: To create a chart based on a Writer table, click in the table and then Insert›Object›Chart"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Move a column between 2 others in 1 step? Click header then a cell in the col, keep mouse button and move to the target with Alt key"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Use the Backspace key instead of Delete. You can choose what to delete"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Want to distribute some text in multi-columns? Select the text then Format›Columns"), + NC_("RID_CUI_TIPOFTHEDAY", "Uncheck Slide Show›Settings›Always on top if you need another program displays its window to the front of your presentation"), + NC_("RID_CUI_TIPOFTHEDAY", "Tools›Detective›Mark Invalid Data Marks all cells in the sheet that contain values outside the validation rules"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Need to allow changes to parts of a read-only document? Insert frames or sections that can authorize changes"), + NC_("RID_CUI_TIPOFTHEDAY", "Select options in Tools›Options›Writer›Formatting Aids›Display to specify which nonprinting characters are displayed"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Want the same layout for the screen display and printing? Check Tools›Options›Calc›General›Use printer metrics for text formatting"), + NC_("RID_CUI_TIPOFTHEDAY", "Customize your footnotes page with Tools›Footnotes/Endnotes"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to sum a cell through several sheets? Refer to the range of sheets (insert/delete sheet handled) e.g. =SUM(Sheet1.A1:Sheet3.A1)"), + NC_("RID_CUI_TIPOFTHEDAY", "You can copy from one sheet to another without the clipboard. Select the area to copy›ctrl+click the target sheet's tab›Edit›Fill›Sheets"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to insert a value in the same place on several sheets? Select the sheets: hold down Ctrl key and click their tabs before entering"), + NC_("RID_CUI_TIPOFTHEDAY", "Click a col field (row) PivotTable and press F12 to group data. Choices adapt to content: Date (month, quarter, year), number (classes)"), + NC_("RID_CUI_TIPOFTHEDAY", "Apart from table of contents LibreOffice can create Alphabetical, Illustrations, Tables, Objects, Bibliography, User-Defined indexes"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to count words for just one paragraph style? Use Find & Replace›Search for Styles›select the style›Find All. Look at the status bar"), + NC_("RID_CUI_TIPOFTHEDAY", "With LibreOffice you can use your Google Mail account to do a mail merge. Fill in Tools›Options›Writer›Mail Merge E-mail"), + NC_("RID_CUI_TIPOFTHEDAY", "Toolbars are contextual, they open depending on the context. If you do not want that, uncheck them from the View Toolbars menu"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Insert and number your formulas in one step: type fn then F3. An AutoText is inserted with formula and number aligned in a table"), + NC_("RID_CUI_TIPOFTHEDAY", "There are Themes to customize LibreOffice: Tools›Customize (menu, keyboard, toolbars, events)"), + NC_("RID_CUI_TIPOFTHEDAY", "To automatically number your table rows in Writer, select the relevant column, then apply a numbering style from List Styles"), + NC_("RID_CUI_TIPOFTHEDAY", "Delete in one step all of your printing areas: select all sheets then Format›Print Ranges›Clear"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice helps you not to enter two or more spaces in Writer. Check Tools›AutoCorrect Options›Ignore double spaces"), + NC_("RID_CUI_TIPOFTHEDAY", "Transpose a writer table? Copy-Paste in Calc. Transpose with Copy-Paste special then Copy-paste special›Formatted text in writer"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer lets you number your footnotes per page, chapter, document: Tools›Footnotes/Endnotes›Footnotes tab›Counting"), + NC_("RID_CUI_TIPOFTHEDAY", "Left-handed? Check Tools›Options›Language Settings›Languages›Asian & Writer›View›Ruler›Right-aligned Displays the scrollbar to the left"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: To display the scrollbar to the left Check Tools›Options›Language Settings›Languages›Complex text & Format›Sheet›Right-To-Left"), + NC_("RID_CUI_TIPOFTHEDAY", "To insert Calc cells in a Writer table copy the cells›Paste special›Format RTF in Writer out of the table›copy this new table in your table"), + NC_("RID_CUI_TIPOFTHEDAY", "Your numbers are displayed as ### in your spreadsheet? The column is too narrow to display all digits"), + NC_("RID_CUI_TIPOFTHEDAY", "In a chart you can choose to leave a gap, assume zero or continue a line & you can include values from hidden cells or not"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: use Ctrl+Alt+Shift+V to paste the contents of the clipboard as unformatted text"), + NC_("RID_CUI_TIPOFTHEDAY", "59.a (alternative) Need more pasting options? Use 'Paste Special' via Edit - Special paste or press Ctrl+Shift+V"), + NC_("RID_CUI_TIPOFTHEDAY", "When editing a cell in place, you can right click›Insert fields: Date, Sheet name, Title"), + NC_("RID_CUI_TIPOFTHEDAY", "Wrap Text Around an Object in Writer: Select the graphic›Right-click›Wrap›Edit Contour"), + NC_("RID_CUI_TIPOFTHEDAY", "Slide Show›Slide Show Settings›Type›Auto: Restarts the slide show after the pause interval you specify"), + NC_("RID_CUI_TIPOFTHEDAY", "In LibreOffice Calc, document sharing allows simultaneous write access for many users"), + NC_("RID_CUI_TIPOFTHEDAY", "You can delete multiple custom styles at once: select them›right click›Delete"), + NC_("RID_CUI_TIPOFTHEDAY", "The Calc's keyboard shortcut to toggle between relative and absolute references is Shift + F4"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc's keyboard shortcut to toggle between relative and absolute references is F4"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: You can not see all the text in a cell? Expand the input line in the formula bar, you can scroll"), + NC_("RID_CUI_TIPOFTHEDAY", "You often create a document from another? Have you considered using a template?"), + NC_("RID_CUI_TIPOFTHEDAY", "New versions do not bring that new features and bug fixes. They also include security patches. Be safe, put yourself updated!"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Want to duplicate the above line? Click the row header and then press Ctrl + D"), + NC_("RID_CUI_TIPOFTHEDAY", "You can embed copied graphics from web to your docs via Edit - Links - Break Link "), + NC_("RID_CUI_TIPOFTHEDAY", "You can easily arrange size table rows and coloumns - Right click - Row(or Coloums) - Optimal Height and Width"), + NC_("RID_CUI_TIPOFTHEDAY", "Best way to fix bad looking MS Word table cells via Right click - Row(or Coloums) - Optimal Height and Width (Or Table AutoFit)"), + NC_("RID_CUI_TIPOFTHEDAY", "Don't get lost in long%large documents. Use Navigator(F5) to find your way through the content."), + NC_("RID_CUI_TIPOFTHEDAY", "Want to change a word which appeares multiple places many place Use Find&Replace to save time."), + NC_("RID_CUI_TIPOFTHEDAY", "You can use various table styles via Table - AutoFormat to have good looking tables"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to select a large range of cells without scrolling? Type the range reference (e.g. A1:A1000) in the name box then Enter"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc›Data›Validity allows you to create drop-down lists for the user selects instead of typing"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc›Format›Page›Sheet Tab›Print:Grid can avoid you draw borders"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to center cells on a printed page? Format›Page›Page Tab›Layout settings›Table alignment"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Want to change basic fonts for the predefined template or Current document? Tools›Options›Writer›Basic Fonts"), + NC_("RID_CUI_TIPOFTHEDAY", "Define texts that you often use as AutoText. You will be able to insert them by their name, shortcut or toolbar in any writer document"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: you can import data from Data Sources view as you do in Writer with Data to Text button (creates a refreshable datarange)"), + NC_("RID_CUI_TIPOFTHEDAY", "You can drag and drop a contiguous range of cells in a chart to redefine"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice uses Regexp ICU’s engine (International Components for Unicode)"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc›View›Value Highlighting displays cell contents in colors: Text/black, Formulas/green, Numbers/blue, Protected cells/grey background"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: to show formulas instead of results in cells Tools›Options›Calc›View›Display›Formulas or check Format›Page›Sheet tab›Print›Formulas"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Want to reach a page by its number? F5 to open the navigator›Type the number in the fied›Enter"), + NC_("RID_CUI_TIPOFTHEDAY", "With Edit›AutoText›Import you can select Word document or template, containing the AutoText entries that you want to import"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc can display a number or a calculation as a fraction: Format›Cells›Number tab›Category›Fraction"), + NC_("RID_CUI_TIPOFTHEDAY", "To print the notes of your slides File›Print›General tab›Select Notes in the Print listbox"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw: To Move an object to another Layer›Hold it until its edges flash›Drag to the name tab of the layer you want to move it to›Release"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to exclude duplicate rows in a spreasheet? Use Data›Filter›Standard Filter›Options›No duplications"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to find words more than 10 characters? Edit›Find & Replace›Search›\\<[a-z]{10,}›Other Options›Check Regular expressions"), + NC_("RID_CUI_TIPOFTHEDAY", "You delete instead of insert? You are in overwrite mode. Press the Insert key on the keyboard or click in the status bar on Overwrite"), + NC_("RID_CUI_TIPOFTHEDAY", "Surprised that Writer adds blank pages in a mailing? Would you like to have a recipient letter to the back of another (Duplexing)?"), + NC_("RID_CUI_TIPOFTHEDAY", "Help users to insert a picture in a Writer template? Insert›Fields›Other›Functions tab›PlaceHolder›Image. One Click to select an image"), + NC_("RID_CUI_TIPOFTHEDAY", "Have you checked Tools›Options›Load/Save›General›Always create backup copy ?"), + NC_("RID_CUI_TIPOFTHEDAY", "Create a master document from the current Writer document? File›Send›Create Master Document (sub-document created depending of outline)"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer includes LibreLogo: simple Logo-like programming environment with turtle vector graphics, DTP and graphic design"), + NC_("RID_CUI_TIPOFTHEDAY", "Need custom acceptance date format? Tools›Options›Language Settings›Language›Date acceptance patterns"), + NC_("RID_CUI_TIPOFTHEDAY", "Typing in bold italics or underlined in Writer you can continue with the default attributes using only the shortcut Ctrl+Shift+X"), + NC_("RID_CUI_TIPOFTHEDAY", "Looking WordArt in LibreOffice? Click Fontwork gallery in the Drawing Toolbar"), + NC_("RID_CUI_TIPOFTHEDAY", "To protect cells: Tools›Protect Document›Sheet. To prevent insert, delete, rename, move/copy sheets: Tools›Protect›Document›Document"), + NC_("RID_CUI_TIPOFTHEDAY", "Search by default in several sheets, select them before you start the search"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to change spell checking for some part of the text? Click in the language zone of the status bar or better, apply a style"), + NC_("RID_CUI_TIPOFTHEDAY", "You don't like the selection color ? Uncheck or modify Tools›Options›LibreOffice›View›Selection›Transparency"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: a date is a formated number of days since a date origin. An hour is a day divided by 24: noon = 0.5"), + NC_("RID_CUI_TIPOFTHEDAY", "Need custom contents for metadata properties? File›Properties›Custom Properties tab lets you create what you want"), + NC_("RID_CUI_TIPOFTHEDAY", "Customize›ToolbarModify›Change Icon›Import to use your icons for toolbars (only PNG file format and 16x16 or 26x26 pixels)"), + NC_("RID_CUI_TIPOFTHEDAY", "Insert your metadata in your Writer document: Insert›Fields›Other›Document or DocInformation tabs"), + NC_("RID_CUI_TIPOFTHEDAY", "You are missing a label at the beginning of each page? Delete the 'Next Record' field from the last label, it is implicit"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: To delete multiple comments, Copy the range›Edit›Paste Special›Selection›Everything except Comments"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: you would like to view the calculation of individual elements of a formula, select the respective elements and press F9"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: you can rotate cells table orientation with Table›Table Properties›Text Flow tab›Text orientation"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice can automatically add a numbered caption when you insert an object. See Tools›Options›LibreOffice Writer›AutoCaption"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Want to add x months to a date? Use =EDATE(date;months)"), + NC_("RID_CUI_TIPOFTHEDAY", "Many images in your writer document? Speed up the display by disabling Tools›Options›LibreOffice Writer›View›Graphics and objects"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Shift+Ctrl+Del deletes from cursor to the end of the current sentence. If the cursor is at the end of a cell, same for the next cell"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Want to sort paragraphs or table rows alphabetically or numerically? Select them›Tools›Sort"), + NC_("RID_CUI_TIPOFTHEDAY", "To bring back a cell on screen after entering formula for which you need to scroll the sheet, select the cell before typing"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Need an unnumbered item in a list? Use 'Insert Unnumbered Entry' in Bullets and Numbering toolbar"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to open/save to favourite places? Enable Tools›Options›LibreOffice›General›Use LibreOffice dialogs lets you record shortcuts"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Click a row header›Ctrl++›Ctrl+D duplicates the above row, including formulas. Just type new values"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Trace cells used in a formula, precedents (Shift+F7) or dependants (Shift+F5). For each hit you go one more step in the chain"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to sort a pivot table? Click on drop-list's arrow in the row/col header and select sort method: ascending, descending or custom"), + NC_("RID_CUI_TIPOFTHEDAY", "Sticky templates (user & shared template folders) let you apply style changes when you open a document created from the template"), + NC_("RID_CUI_TIPOFTHEDAY", "Tools›AutoCorrect›Replace provides a list of common substitutions. Take a look and complete with your own replacements"), + NC_("RID_CUI_TIPOFTHEDAY", "Center a picture in a Writer Table's cell? Anchor as ›Center buttons in Formating (horizontally) & Table (vertically) toolbars"), + NC_("RID_CUI_TIPOFTHEDAY", "Do not insert empty paragraph to separate two paragraphs, set Indents & Spacing›Spacing›Below paragraph for the paragraph style"), + NC_("RID_CUI_TIPOFTHEDAY", "Want your documents open where you were when last saved? Fill Tools›Options›LibreOffice›User Data First/Last name"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: with the navigator you can select & move up/down headings and the text below the heading, in the Navigator and in the document"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice doesn't calculate from left to right but respects the order Parentheses›Exponents›Multiplication›Division›Addition›Subtraction"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: you can change the default function in the status bar: right click on the area"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: you do not want to print all columns? Hide or group ones you do not need"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: use Shift+Space to select the current row & Ctrl+Shift+Space to select the current column (previous versions)"), + NC_("RID_CUI_TIPOFTHEDAY", " Calc: use Shift+Space to select the current row & Ctrl+Space to select the current column"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer handles Conditional styles: paragraph styles that have different properties depending on the context"), + NC_("RID_CUI_TIPOFTHEDAY", "Install/LibreOffice not working? Have you checked the integrity of the download? On Download page click on Info to get the checksums"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: want to show the current date in your document? Insert›Fields›Other›Document tab›select Date (not fixed)›select a format"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Need to fill a serie? Select the cell range›Edit›Fill›Series›Choose between Linear, Growth, Date and AutoFill"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Click at the beginning (end) of a section and press Alt+Enter to insert a paragraph before (after) the section"), + NC_("RID_CUI_TIPOFTHEDAY", "With File›Versions Save multiple versions of the document in the same file. You can also open, delete, and compare previous versions"), + NC_("RID_CUI_TIPOFTHEDAY", "You change computers and want to recover your customizations? See https://wiki.documentfoundation.org/UserProfile"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: You can set a color for each tab: right-click the tab›Tab ColourfA"), + NC_("RID_CUI_TIPOFTHEDAY", "Looking for examples of LibreOffice Basic macros? Look at LibreOffice Macros›Tools"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Insert›Function List opens a resizable dockable window which displays all functions that can be inserted into your document"), + NC_("RID_CUI_TIPOFTHEDAY", "Don't want the page number in your TOC? Edit index›Delete Tab Stop & Page number from Structure Line in Entries tab"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: to quickly assign a name to a range of cells, select it›type the name in the name box and press Enter"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Outline numbering lets you set text to be displayed before the chapter number. For example, type 'Chapter ' to display 'Chapter 1'"), + NC_("RID_CUI_TIPOFTHEDAY", "Base not only manages its own. Connect to main database engines: JDBC PostgreSQL MySQL LDAP Address book, MS Access ODBC Spreadsheet Text"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Want to know if a cell is referred in formulas of other cells? Tools›Detective›Trace Dependents [Shift+F5]"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to customize the middle mouse button? Tools›Options›LibreOffice›View›Middle Mouse button"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: To delete picture's caption select the picture›Ctrl+X›There is only the legend's frame›Select›Delete›Ctrl+C to paste the picture"), + NC_("RID_CUI_TIPOFTHEDAY", "Base: Need a crosstab query ? Calc›Data›Pivot Table›Create›choose your registered Data source"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc Print: Repeat rows/columns on every pages? Format›Print Ranges›Edit›Click the Row/Col text box›drag the mouse in the sheet"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: To copy rows/cols to another sheet preserving heights/widths, select them by clicking the labels before before copying"), + NC_("RID_CUI_TIPOFTHEDAY", "With LibreOffice it is very easy to install a new dictionary: they are supplied as an extension"), + NC_("RID_CUI_TIPOFTHEDAY", "Registered databases can also be used in Calc, for example to export your tables to CSV format"), + NC_("RID_CUI_TIPOFTHEDAY", "Need to precisely position? Alt+Arrow Keys move objects (shape, picture, formula...) by one pixel"), + NC_("RID_CUI_TIPOFTHEDAY", "Choose Hierarchical View in the Styles and Formatting window to see the links between styles"), + NC_("RID_CUI_TIPOFTHEDAY", "Print 2 A5 on A4? Check File›Print›Options tab›Use only paper size from printer & set A4 landscape orientation in the printer properties"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: The field names are displayed instead of their content? View›Fields Names or Ctrl + F9"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Creating a Style based on another, you can enter a percentage value or a point value (e.g. 110% or -2pt or +5pt)"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to know the valid Command Line Parameters? Start soffice with --help or -h or -?"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Want to return to default after applying a List Style? Click Bullets or Numbering On/Off tool on the Formatting toolbar"), + NC_("RID_CUI_TIPOFTHEDAY", "Configure use of the Ctrl key to follow hyperlinks? Tools›Options›LibreOffice›Security›Options›Ctrl+click required to follow hyperlinks"), + NC_("RID_CUI_TIPOFTHEDAY", "You get 'weird' characters opening a text file? Check the character set when importing"), + NC_("RID_CUI_TIPOFTHEDAY", "Open Document Format is the key. LibreOffice is the solution."), + NC_("RID_CUI_TIPOFTHEDAY", "For your safety, save your files to disk and then copy them to your USB key. Never do the opposite !"), + NC_("RID_CUI_TIPOFTHEDAY", "After a copy you can hit Esc to stop the 'marching ants'. The copied content will remain available for pasting"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: To quickly insert or delete rows, drag the mouse over the header to select the desired number of lines then Ctrl+ or Ctrl-"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Select contiguous cell range that contains data and is bounded by empty row and columns ? Use Ctrl+* (numeric key pad )"), + NC_("RID_CUI_TIPOFTHEDAY", "Tools›Customize›Keyboard›Save saves the current shortcut key configuration, so that you can load it later or on another computer"), + NC_("RID_CUI_TIPOFTHEDAY", "Property mapping for charts allows to change data serie's fill & border colors based on spreadsheet values"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Ctrl+Shift+F9 Recalculates all formulas in all sheets (some functions like RANDBETWEEN are not calculated by F9)"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: Write along a curve ? Draw the line›Double clic›Type the text›Format›Object›Fontwork... Have fun with the proposed effects"), + NC_("RID_CUI_TIPOFTHEDAY", "Click the bo4rders button adds borders to selected cells - Shift+Click replaces all borders of current cell with your choice"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: you can create an illustration index from Object names, not only from Captions"), + NC_("RID_CUI_TIPOFTHEDAY", "To enable macro recording check Tools›Options›LibreOffice›Advanced›Enable macro recording (limited)"), + NC_("RID_CUI_TIPOFTHEDAY", "In the Replace input field of AutoCorrection you can use the wildcards .*"), + NC_("RID_CUI_TIPOFTHEDAY", "You no longer find an option? Search in Tools›Options›LibreOffice›Advanced›Configuration Expert"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc - Want to export formulas to CSV? File›Save As›Type:Text CSV›Check Edit filter settings›Check Save cell formulas"), + NC_("RID_CUI_TIPOFTHEDAY", "Impress: set Handouts in File›Print›Document listbox›select the number of slides per page (lines automatically drawn if you pick 3)"), + NC_("RID_CUI_TIPOFTHEDAY", "Impress: Outline View. You cannot use Tab/Shift+Tab to move the title in the hierarchy with Title slide layout (apply Title, content)"), + NC_("RID_CUI_TIPOFTHEDAY", " Impress: Outline View. You cannot use Tab/Shift+Tab to move the title in the hierarchy with Title slide layout (apply Title, content"), + NC_("RID_CUI_TIPOFTHEDAY", "Want to manage the presentation of hyperlinks in a spreadsheet? Insert them with the HYPERLINK function"), + NC_("RID_CUI_TIPOFTHEDAY", "Tools›Customize›Keyboard› No need to scroll through the list to find a shortcut: just type the shortcut"), + NC_("RID_CUI_TIPOFTHEDAY", "Draw/Impress: Want to quickly zoom in on selection? Press the Divide Key (number pad) - Press * to restore entire page in screen"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Want to quickly zoom in on range selection? Right click on the zoom part of the status bar, choose Optimal"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: to reformat all comments in a document click the down arrow in a comment and choose 'Format all Comments'"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: File›Print›Comments and choose Place in margins, end of page, end of document"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Convert formula into static values ? No need to copy-paste: Tools›Cell Contents›Formula to Value"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc: Can not get what you want with VLOOKUP? With INDEX and MATCH You can do everything!"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: LibreOffice 5.1 introduces Hide Whitespace option which removes gaps between pages, to help you really focus on your content"), + NC_("RID_CUI_TIPOFTHEDAY", "LibreOffice 5.1 reorganize main menus in Writer, Calc and Impress to improve usability"), + NC_("RID_CUI_TIPOFTHEDAY", "Mailing: with LibreOffice 5.1 embed your datasource definition in the document"), + NC_("RID_CUI_TIPOFTHEDAY", "5.3 implements table styles in Writer, try them!"), + NC_("RID_CUI_TIPOFTHEDAY", "Calc 5.3 brings new cell styles, and the possibility to create your own x"), + NC_("RID_CUI_TIPOFTHEDAY", "New arrow endings in LibreOffice 5.3, including Crow's foot notation's ones "), + NC_("RID_CUI_TIPOFTHEDAY", "Grab the latest docker image from Docker Hub here: https://hub.docker.com/r/libreoffice/online "), + NC_("RID_CUI_TIPOFTHEDAY", "Release 5.3 features the first source release of LibreOffice Online "), + NC_("RID_CUI_TIPOFTHEDAY", "Calc now supports scrolling through the Scroll key"), + NC_("RID_CUI_TIPOFTHEDAY", "Now possible to sign existing PDF files and also verify those signatures"), + NC_("RID_CUI_TIPOFTHEDAY", "A safe mode has been added which starts LibreOffice temporarily with a fresh user profile"), + NC_("RID_CUI_TIPOFTHEDAY", "Menu Help: direct link to user guides, collateral documentation, help on line"), + NC_("RID_CUI_TIPOFTHEDAY", "You can now import AutoText import from .dotx and .dotm files"), + NC_("RID_CUI_TIPOFTHEDAY", "Version 5.4 introduces Pivot Charts"), + NC_("RID_CUI_TIPOFTHEDAY", "Writer: To find the expressions in brackets Edit›Find & Replace›Find›\\([^)]+\\)›set Regular expression"), +}; + +#endif //INCLUDED_CUI_INC_TIPOFTHEDAY_HRC + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/dialogs/tipofthedaydlg.cxx b/cui/source/dialogs/tipofthedaydlg.cxx new file mode 100644 index 000000000000..430ae484d08a --- /dev/null +++ b/cui/source/dialogs/tipofthedaydlg.cxx @@ -0,0 +1,119 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <tipofthedaydlg.hxx> + +#include <config_folders.h> +#include <dialmgr.hxx> +#include <officecfg/Office/Common.hxx> +#include <osl/file.hxx> +#include <rtl/bootstrap.hxx> +#include <tipoftheday.hrc> +#include <vcl/graphicfilter.hxx> +#include <vcl/virdev.hxx> + +TipOfTheDayDialog::TipOfTheDayDialog(weld::Window* pParent) + : GenericDialogController(pParent, "cui/ui/tipofthedaydialog.ui", "TipOfTheDayDialog") + , m_pImage(m_xBuilder->weld_image("imImage")) + , m_pText(m_xBuilder->weld_label("lbText")) + , m_pShowTip(m_xBuilder->weld_check_button("cbShowTip")) + , m_pNext(m_xBuilder->weld_button("btnNext")) + , m_pLink(m_xBuilder->weld_link_button("btnLink")) +{ + m_pShowTip->connect_toggled(LINK(this, TipOfTheDayDialog, OnShowTipToggled)); + m_pNext->connect_clicked(LINK(this, TipOfTheDayDialog, OnNextClick)); + + nNumberOfTips = SAL_N_ELEMENTS(TIPOFTHEDAY_STRINGARRAY); + nCurrentTip = rand() % nNumberOfTips; + UpdateTip(); +} + +TipOfTheDayDialog::~TipOfTheDayDialog() +{ + std::shared_ptr<comphelper::ConfigurationChanges> xChanges( + comphelper::ConfigurationChanges::create()); + const auto t0 = std::chrono::system_clock::now().time_since_epoch(); + const sal_Int32 nDay + = std::chrono::duration_cast<std::chrono::hours>(t0).count() / 24; // days since 1970-01-01 + officecfg::Office::Common::Misc::LastTipOfTheDayShown::set(nDay, xChanges); + xChanges->commit(); +} + +static bool file_exists(const OUString& fileName) +{ + ::osl::File aFile(fileName); + return aFile.open(osl_File_OpenFlag_Read) == osl::FileBase::E_None; +} + +void TipOfTheDayDialog::UpdateTip() +{ + //get string + OUString aText; + aText = CuiResId(TIPOFTHEDAY_STRINGARRAY[nCurrentTip]); + //move hyperlink into linkbutton + sal_Int32 nPos = aText.indexOf("http"); + if (nPos > 0) + { + m_pLink->set_visible(true); + if (aText.getLength() - nPos > 40) + m_pLink->set_label(aText.copy(nPos, 40) + "..."); + else + m_pLink->set_label(aText.copy(nPos)); + m_pLink->set_uri(aText.copy(nPos)); + aText = aText.copy(0, nPos - 1); + } + else + m_pLink->set_visible(false); + m_pText->set_label(aText); + + // import the image + OUString aURL("$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/tipoftheday/"); + rtl::Bootstrap::expandMacros(aURL); + OUString aName = "tipoftheday_" + OUString::number(nCurrentTip) + ".png"; + // use default image if none is available with the number + if (!file_exists(aURL + aName)) + aName = "tipoftheday.png"; + // draw image + Graphic aGraphic; + if (GraphicFilter::LoadGraphic(aURL + aName, OUString(), aGraphic) == ERRCODE_NONE) + { + ScopedVclPtr<VirtualDevice> m_pVirDev; + m_pVirDev = m_pImage->create_virtual_device(); + m_pVirDev->SetOutputSizePixel(aGraphic.GetSizePixel()); + m_pVirDev->DrawBitmapEx(Point(0, 0), aGraphic.GetBitmapEx()); + m_pImage->set_image(m_pVirDev.get()); + m_pVirDev.disposeAndClear(); + } +} + +IMPL_STATIC_LINK(TipOfTheDayDialog, OnShowTipToggled, weld::ToggleButton&, rButton, void) +{ + std::shared_ptr<comphelper::ConfigurationChanges> xChanges( + comphelper::ConfigurationChanges::create()); + officecfg::Office::Common::Misc::ShowTipOfTheDay::set(rButton.get_active(), xChanges); + xChanges->commit(); +} + +IMPL_LINK_NOARG(TipOfTheDayDialog, OnNextClick, weld::Button&, void) +{ + nCurrentTip = rand() % nNumberOfTips; + UpdateTip(); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file diff --git a/cui/source/factory/cuiexp.cxx b/cui/source/factory/cuiexp.cxx index 09cddbf04044..e3c13320172f 100644 --- a/cui/source/factory/cuiexp.cxx +++ b/cui/source/factory/cuiexp.cxx @@ -50,6 +50,7 @@ #include <thesdlg.hxx> #include <hangulhanjadlg.hxx> #include <dstribut.hxx> +#include <tipofthedaydlg.hxx> #include "dlgfact.hxx" #include <sal/types.h> diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index a862bea608ab..4669f431df56 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -88,6 +88,7 @@ #include <hyphen.hxx> #include <thesdlg.hxx> #include <about.hxx> +#include <tipofthedaydlg.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::frame; @@ -1344,6 +1345,11 @@ short SvxMacroAssignDialog::Execute() return m_xDialog->run(); } +short AbstractTipOfTheDayDialog_Impl::Execute() +{ + return m_xDlg->run(); +} + VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxMacroAssignDlg( weld::Window* _pParent, const Reference< XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode, const Reference< XNameReplace >& _rxEvents, const sal_uInt16 _nInitiallySelectedEvent ) @@ -1588,4 +1594,10 @@ AbstractDialogFactory_Impl::CreateSignSignatureLineDialog(weld::Window* pParent, std::make_unique<SignSignatureLineDialog>(pParent, xModel)); } +VclPtr<AbstractTipOfTheDayDialog> +AbstractDialogFactory_Impl::CreateTipOfTheDayDialog(weld::Window* pParent) +{ + return VclPtr<AbstractTipOfTheDayDialog_Impl>::Create(std::make_unique<TipOfTheDayDialog>(pParent)); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx index 6d263ea3a70a..65b2f4337760 100644 --- a/cui/source/factory/dlgfact.hxx +++ b/cui/source/factory/dlgfact.hxx @@ -658,6 +658,20 @@ public: virtual short Execute() override; }; +class TipOfTheDayDialog; +class AbstractTipOfTheDayDialog_Impl : public AbstractTipOfTheDayDialog +{ +protected: + std::unique_ptr<TipOfTheDayDialog> m_xDlg; + +public: + explicit AbstractTipOfTheDayDialog_Impl(std::unique_ptr<TipOfTheDayDialog> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; +}; + //AbstractDialogFactory_Impl implementations class AbstractDialogFactory_Impl : public SvxAbstractDialogFactory { @@ -836,6 +850,8 @@ public: virtual VclPtr<AbstractSignSignatureLineDialog> CreateSignSignatureLineDialog(weld::Window* pParent, const css::uno::Reference<css::frame::XModel> xModel) override; + + virtual VclPtr<AbstractTipOfTheDayDialog> CreateTipOfTheDayDialog(weld::Window* pParent) override; }; #endif diff --git a/cui/source/inc/tipofthedaydlg.hxx b/cui/source/inc/tipofthedaydlg.hxx new file mode 100644 index 000000000000..1e7b1eba8c07 --- /dev/null +++ b/cui/source/inc/tipofthedaydlg.hxx @@ -0,0 +1,46 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_CUI_SOURCE_INC_TIPOFTHEDAYDLG_HXX +#define INCLUDED_CUI_SOURCE_INC_TIPOFTHEDAYDLG_HXX + +#include <vcl/weld.hxx> + +class TipOfTheDayDialog : public weld::GenericDialogController +{ +private: + std::unique_ptr<weld::Image> m_pImage; + std::unique_ptr<weld::Label> m_pText; + std::unique_ptr<weld::CheckButton> m_pShowTip; + std::unique_ptr<weld::Button> m_pNext; + std::unique_ptr<weld::LinkButton> m_pLink; + + sal_uInt32 nCurrentTip; + sal_uInt32 nNumberOfTips; + void UpdateTip(); + DECL_STATIC_LINK(TipOfTheDayDialog, OnShowTipToggled, weld::ToggleButton&, void); + DECL_LINK(OnNextClick, weld::Button&, void); + +public: + TipOfTheDayDialog(weld::Window* pWindow); + virtual ~TipOfTheDayDialog() override; +}; + +#endif // INCLUDED_CUI_SOURCE_INC_TIPOFTHEDAYDLG_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index 6c31ddbcdc60..c1ae769a0eb4 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -260,6 +260,7 @@ OfaMiscTabPage::OfaMiscTabPage(TabPageParent pParent, const SfxItemSet& rSet) : SfxTabPage(pParent, "cui/ui/optgeneralpage.ui", "OptGeneralPage", &rSet) , m_xExtHelpCB(m_xBuilder->weld_check_button("exthelp")) , m_xPopUpNoHelpCB(m_xBuilder->weld_check_button("popupnohelp")) + , m_xShowTipOfTheDay(m_xBuilder->weld_check_button("cbShowTipOfTheDay")) , m_xFileDlgFrame(m_xBuilder->weld_widget("filedlgframe")) , m_xPrintDlgFrame(m_xBuilder->weld_widget("printdlgframe")) , m_xFileDlgROImage(m_xBuilder->weld_widget("lockimage")) @@ -329,6 +330,12 @@ bool OfaMiscTabPage::FillItemSet( SfxItemSet* rSet ) if ( m_xExtHelpCB->get_state_changed_from_saved() ) aHelpOptions.SetExtendedHelp( m_xExtHelpCB->get_active() ); + if ( m_xShowTipOfTheDay->get_state_changed_from_saved() ) + { + officecfg::Office::Common::Misc::ShowTipOfTheDay::set(m_xShowTipOfTheDay->get_active(), batch); + bModified = true; + } + if ( m_xFileDlgCB->get_state_changed_from_saved() ) { SvtMiscOptions aMiscOpt; @@ -382,6 +389,8 @@ void OfaMiscTabPage::Reset( const SfxItemSet* rSet ) m_xExtHelpCB->save_state(); m_xPopUpNoHelpCB->set_active( aHelpOptions.IsOfflineHelpPopUp() ); m_xPopUpNoHelpCB->save_state(); + m_xShowTipOfTheDay->set_active( officecfg::Office::Common::Misc::ShowTipOfTheDay::get() ); + m_xShowTipOfTheDay->save_state(); SvtMiscOptions aMiscOpt; m_xFileDlgCB->set_active( !aMiscOpt.UseSystemFileDialog() ); m_xFileDlgCB->save_state(); diff --git a/cui/source/options/optgdlg.hxx b/cui/source/options/optgdlg.hxx index 52cf72ef3b6e..f5c02d20da2d 100644 --- a/cui/source/options/optgdlg.hxx +++ b/cui/source/options/optgdlg.hxx @@ -44,6 +44,7 @@ private: std::unique_ptr<weld::CheckButton> m_xExtHelpCB; std::unique_ptr<weld::CheckButton> m_xPopUpNoHelpCB; + std::unique_ptr<weld::CheckButton> m_xShowTipOfTheDay; std::unique_ptr<weld::Widget> m_xFileDlgFrame; std::unique_ptr<weld::Widget> m_xPrintDlgFrame; std::unique_ptr<weld::Widget> m_xFileDlgROImage; diff --git a/cui/uiconfig/ui/optgeneralpage.ui b/cui/uiconfig/ui/optgeneralpage.ui index 24eadff85c61..b2f6114e3dab 100644 --- a/cui/uiconfig/ui/optgeneralpage.ui +++ b/cui/uiconfig/ui/optgeneralpage.ui @@ -59,6 +59,20 @@ <property name="top_attach">1</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="cbShowTipOfTheDay"> + <property name="label" translatable="yes" context="optgeneralpage|TipOfTheDayCheckbox">Show "Tip of the day" Dialog on Start-up</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> </object> </child> </object> diff --git a/cui/uiconfig/ui/tipofthedaydialog.ui b/cui/uiconfig/ui/tipofthedaydialog.ui new file mode 100644 index 000000000000..8b5936466c8d --- /dev/null +++ b/cui/uiconfig/ui/tipofthedaydialog.ui @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.1 --> +<interface domain="cui"> + <requires lib="gtk+" version="3.18"/> + <object class="GtkDialog" id="TipOfTheDayDialog"> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="title" translatable="yes" context="TipOfTheDayDialog|Name">Tip of the day</property> + <property name="type_hint">dialog</property> + <child> + <placeholder/> + </child> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="layout_style">end</property> + <child> + <object class="GtkCheckButton" id="cbShowTip"> + <property name="label" translatable="yes" context="TipOfTheDay|Checkbox">_Show tips on startup</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_text" translatable="yes" context="TipOfTheDay|Checkbox_Tooltip">Enable the dialog again at Tools > Options > General</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnNext"> + <property name="label" translatable="yes" context="TipOfTheDayDialog|Next_Button">_Next Tip</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnOk"> + <property name="label">gtk-ok</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkImage" id="imImage"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="margin_right">12</property> + <property name="margin_top">12</property> + <property name="margin_bottom">12</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel" id="lbTitle"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_top">12</property> + <property name="label" translatable="yes" context="TipOfTheDayDialog|Title">Did you know?</property> + <attributes> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="1.5"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbText"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="vexpand">True</property> + <property name="wrap">True</property> + <property name="max_width_chars">50</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLinkButton" id="btnLink"> + <property name="label" translatable="yes" context="TipOfTheDayDialog|Link_Button">Link</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="relief">none</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="-5">btnOk</action-widget> + </action-widgets> + </object> +</interface> diff --git a/extras/source/tipoftheday/tipoftheday.png b/extras/source/tipoftheday/tipoftheday.png Binary files differnew file mode 100644 index 000000000000..a126c65cbe93 --- /dev/null +++ b/extras/source/tipoftheday/tipoftheday.png diff --git a/extras/source/tipoftheday/tipoftheday_1.png b/extras/source/tipoftheday/tipoftheday_1.png Binary files differnew file mode 100644 index 000000000000..cedc931671e0 --- /dev/null +++ b/extras/source/tipoftheday/tipoftheday_1.png diff --git a/extras/source/tipoftheday/tipoftheday_2.png b/extras/source/tipoftheday/tipoftheday_2.png Binary files differnew file mode 100644 index 000000000000..5a8e3ca37414 --- /dev/null +++ b/extras/source/tipoftheday/tipoftheday_2.png diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx index 4e9f72d218a3..b4b839c71fe4 100644 --- a/include/vcl/abstdlg.hxx +++ b/include/vcl/abstdlg.hxx @@ -119,6 +119,12 @@ protected: virtual ~AbstractSignSignatureLineDialog() override = default; }; +class VCL_DLLPUBLIC AbstractTipOfTheDayDialog : public VclAbstractDialog +{ +protected: + virtual ~AbstractTipOfTheDayDialog() override = default; +}; + class VCL_DLLPUBLIC VclAbstractDialogFactory { public: @@ -147,6 +153,10 @@ public: virtual VclPtr<AbstractScreenshotAnnotationDlg> CreateScreenshotAnnotationDlg( vcl::Window* pParent, Dialog& rParentDialog) = 0; + + // create info dialog to show tip-of-the-day + virtual VclPtr<AbstractTipOfTheDayDialog> + CreateTipOfTheDayDialog(weld::Window* pParent) = 0; }; #endif diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 4b2c759628b9..3b2fea407aec 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1089,6 +1089,7 @@ class VCL_DLLPUBLIC Image : virtual public Widget { public: virtual void set_from_icon_name(const OUString& rIconName) = 0; + virtual void set_image(VirtualDevice* pDevice) = 0; }; class VCL_DLLPUBLIC Calendar : virtual public Widget diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index 59adc563ef6f..3507ed063745 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5458,6 +5458,19 @@ </info> <value>false</value> </prop> + <prop oor:name="ShowTipOfTheDay" oor:type="xs:boolean" oor:nillable="false"> + <!-- UIHints: Tools - Options - General --> + <info> + <desc>Determines whether the Tip-Of-The-Day dialog is shown on startup.</desc> + </info> + <value>true</value> + </prop> + <prop oor:name="LastTipOfTheDayShown" oor:type="xs:int" oor:nillable="false"> + <info> + <desc>The last time when the Tip-of-the-day dialog was shown.</desc> + </info> + <value>0</value> + </prop> <prop oor:name="UseOpenCL" oor:type="xs:boolean" oor:nillable="false"> <info> <desc>Determines whether OpenCL can be used, when available, to speed up diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index abff96219425..50201c343c76 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -1219,9 +1219,30 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) rBind.Invalidate( SID_RELOAD ); rBind.Invalidate( SID_EDITDOC ); + const auto t0 = std::chrono::system_clock::now().time_since_epoch(); + + // show tip-of-the-day dialog + const bool bShowTipOfTheDay = officecfg::Office::Common::Misc::ShowTipOfTheDay::get(); + bool bIsUITest = false; //uitest.uicheck fails when the dialog is open + for( sal_uInt16 i = 0; i < Application::GetCommandLineParamCount(); i++ ) + { + if( Application::GetCommandLineParam(i) == "--nologo" ) + bIsUITest = true; + } + if (bShowTipOfTheDay && !Application::IsHeadlessModeEnabled() && !bIsUITest) { + const sal_Int32 nLastTipOfTheDay = officecfg::Office::Common::Misc::LastTipOfTheDayShown::get(); + const sal_Int32 nDay = std::chrono::duration_cast<std::chrono::hours>(t0).count()/24; // days since 1970-01-01 + if (nDay-nLastTipOfTheDay > 0) { //only once per day + VclAbstractDialogFactory* pFact = VclAbstractDialogFactory::Create(); + VclPtr<VclAbstractDialog> pDlg = + pFact->CreateTipOfTheDayDialog( GetWindow().GetFrameWeld() ); + pDlg->Execute(); + } + } + // inform about the community involvement const sal_Int64 nLastGetInvolvedShown = officecfg::Setup::Product::LastTimeGetInvolvedShown::get(); - const sal_Int64 nNow = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count(); + const sal_Int64 nNow = std::chrono::duration_cast<std::chrono::seconds>(t0).count(); const sal_Int64 nPeriodSec(60 * 60 * 24 * 180); // 180 days in seconds bool bUpdateLastTimeGetInvolvedShown = false; diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr index c789c27b59a0..1fce68321a1c 100644 --- a/solenv/sanitizers/ui/cui.suppr +++ b/solenv/sanitizers/ui/cui.suppr @@ -245,6 +245,8 @@ cui/uiconfig/ui/hyphenate.ui://GtkButton[@id='right'] button-no-label cui/uiconfig/ui/iconchangedialog.ui://GtkTextView[@id='addrTextview'] no-labelled-by cui/uiconfig/ui/iconchangedialog.ui://GtkLabel[@id='label1'] orphan-label cui/uiconfig/ui/iconselectordialog.ui://GtkLabel[@id='noteLabel'] orphan-label +cui/uiconfig/ui/tipofthedaydialog.ui://GtkLabel[@id='lbTitle'] orphan-label +cui/uiconfig/ui/tipofthedaydialog.ui://GtkLabel[@id='lbText'] orphan-label cui/uiconfig/ui/insertfloatingframe.ui://GtkEntry[@id='edname'] no-labelled-by cui/uiconfig/ui/insertfloatingframe.ui://GtkEntry[@id='edurl'] no-labelled-by cui/uiconfig/ui/insertfloatingframe.ui://GtkLabel[@id='label6'] orphan-label diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk index 6c7ed89dfb23..7bfd4bed1cc9 100644 --- a/vcl/Module_vcl.mk +++ b/vcl/Module_vcl.mk @@ -23,6 +23,7 @@ $(eval $(call gb_Module_add_targets,vcl,\ Library_vcl \ Package_opengl \ Package_theme_definitions \ + Package_tipoftheday \ UIConfig_vcl \ $(if $(filter WNT,$(OS)), \ Package_opengl_blacklist ) \ diff --git a/vcl/Package_tipoftheday.mk b/vcl/Package_tipoftheday.mk new file mode 100644 index 000000000000..165249cce491 --- /dev/null +++ b/vcl/Package_tipoftheday.mk @@ -0,0 +1,18 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Package_Package,tipoftheday_images,extras/source/tipoftheday)) + +$(eval $(call gb_Package_add_files_with_dir,tipoftheday_images,$(LIBO_SHARE_FOLDER)/tipoftheday,\ + tipoftheday.png \ + tipoftheday_1.png \ + tipoftheday_2.png \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 47ab9beab90a..0926dac611fb 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2023,6 +2023,11 @@ public: { m_xImage->SetImage(::Image(StockImage::Yes, rIconName)); } + + virtual void set_image(VirtualDevice* pDevice) override + { + m_xImage->SetImage(createImage(*pDevice)); + } }; class SalInstanceCalendar : public SalInstanceWidget, public virtual weld::Calendar diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index d5bf067032d3..7f294bae8c21 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -5109,6 +5109,18 @@ public: gtk_image_set_from_pixbuf(m_pImage, pixbuf); g_object_unref(pixbuf); } + + virtual void set_image(VirtualDevice* pDevice) override + { + if (gtk_check_version(3, 20, 0) == nullptr) + gtk_image_set_from_surface(m_pImage, get_underlying_cairo_surface(*pDevice)); + else + { + GdkPixbuf* pixbuf = getPixbuf(*pDevice); + gtk_image_set_from_pixbuf(m_pImage, pixbuf); + g_object_unref(pixbuf); + } + } }; class GtkInstanceCalendar : public GtkInstanceWidget, public virtual weld::Calendar |