You are on page 1of 72

Contents

Table of Contents
Part I Introduction 3
1 Installation ................................................................................................................................... 4 2 Uninstallation ................................................................................................................................... 4 3 Getting................................................................................................................................... Started 5

Part II Note

1 How to ................................................................................................................................... (note) 10


Send note to another .......................................................................................................................................................... com puter 11 Post note's content .......................................................................................................................................................... on social netw ork 13 Insert post from .......................................................................................................................................................... social netw ork into note 14 Pin/unpin note .......................................................................................................................................................... to/from w indow 16 Adjust note's .......................................................................................................................................................... appearance 17 Adjust note's .......................................................................................................................................................... schedule 18 Work w ith tags .......................................................................................................................................................... 25 Work w ith linked .......................................................................................................................................................... notes 26 Insert im ages.......................................................................................................................................................... 27

2 Note groups ................................................................................................................................... 28

Part III Preferences

28

1 General ................................................................................................................................... settings 29 2 Schedule ................................................................................................................................... 33 3 Appearance ................................................................................................................................... 34 4 Behavior ................................................................................................................................... 37


How to (Behavior) .......................................................................................................................................................... 39 Manage hot ......................................................................................................................................................... keys 39 Forbidden hot key ......................................................................................................................................... 40 Hide/show ......................................................................................................................................................... menus 41

5 Network ................................................................................................................................... 43 6 Protection ................................................................................................................................... 47


How to (Protection) .......................................................................................................................................................... 48 Create, modify ......................................................................................................................................................... or remove program passw ord 49

Part IV PNotes.NET Control Panel

50

1 Preview ................................................................................................................................... pane 53 2 How to ................................................................................................................................... (Control Panel) 53


Change group's .......................................................................................................................................................... settings 53 Hide/show colum .......................................................................................................................................................... ns in list view 54

Part V Backup Part VI Synchronization Part VII Import from previous edition
2013 Andrey Gruber

55 56 56

II

PNotes.NET (version 1.1)

Part VIII Diary Part IX Docking Part X Search Part XI Show/hide options Part XII Spell checking Part XIII Command line Part XIV Plugins development Part XV Credits Index

58 58 59 62 63 64 65 72 0

2013 Andrey Gruber

Introduction

Introduction
Managing your day-to-day life is not an easy job to do. There are so many things to do housekeeping, shopping, children... and what about your cousin's birthday which you always forget or important phone numbers? Undoubtedly your working place is covered with dusty yellow (or blue or pink) sticky notes. If so - PNotes.NET is right for you. Throw the physical stickies away and replace them with virtual ones on your desktop. Here are some PNotes features: Ease of use - no installation, just unpack the downloaded archive to any location and run PNotes. exe. Portability - PNotes does not require installation, it can be started from any drive (fixed or flash) and leaves no traces on host computer after finishing. Scheduling - use various schedule types to be reminded about significant events by many different ways. Using this feature you may just hide notes and don't worry, you'll be notified in time. Posting notes on social networks - easily post your notes on Facebook or Twitter using PNotes plugins (more social network may be added soon). Getting posts from social networks - easily insert text of your posts on social networks into notes. Speaking notes - instead of sound files you may force the notes to speak with you reading their text aloud - isn't it a cool feature? Notes' exchange over local network - keep in touch with your colleagues and friends. Overdue notes tracking - stay alerted even with overdue reminders. Tags - add any number of predefined tags to each note for further searching and sorting. Password protection - prevents unauthorized access to program. Encryption - allows all your notes to be stored as encrypted files, so nobody could read their content, even in case you lose your USB stick. Password protection for single note/group - protect your notes even more strongly. Synchronization - local or on-line via synchronization plugins - always stay synchronized. Ability to pin notes to selected window - all you need appears in time. PNotes.NET Control Panel - this is your central command post. All management is put into effect here. Groups - divide notes into groups of your choice, create new groups and subgroups, control all by mouse click or drag-and-drop. Diary group - special group of notes with its own settings, which allows you to maintain diary-like set. Formatting - format and design each note as you wish, using all the advantages of rich text formatting. Skins - there is a variety of skins for PNotes but if you wish, you can run the program in skinless mode, in which case you can stretch notes to any reasonable size. Transparency - you can set notes transparency level from opaque to fully transparent. If you enable this feature each note can have its own transparency level. Images - you can add images to notes, making them more expressive. Smilies - besides image files, the set of predefined smilies is at your disposal. Docking - dock your notes to any side of the screen, forcing them always to be straightened and look like a panel. Searching - search for (or replace) text fragments in all notes, including hidden or in each separate note, or find notes with specified title, or notes modified within specified interval. Quick search in web - select any word or phrase in note and search for it in web using you preferred search provider. Favorites - access intensively used notes by a single click. Custom fonts - use your custom fonts which are not installed on current machine.

2013 Andrey Gruber

PNotes.NET (version 1.1)

E-mailing - send notes via e-mail as mail body text or as attachment to any target with PNotes running and open attached note on target machine. Recycle Bin - you decide how you want to delete the unneeded note: completely or send it to Recycle Bin with ability to restore it later. Backing up - you decide whether to make backup copies for changed notes and what is the deepness of backup levels. Also you can manually make a full backup copy of all notes (and restore from it of course). Export and import options - export to MS Outlook notes and import from previous versions. Internationalization - PNotes is fully Unicode supported and translated into many languages. Other features - of course there are many other unmentioned features in program, but I suggest you to discover them by yourself, these are delights of any new program, aren't they? I hope you will enjoy using PNotes as much as I enjoyed creating it!

1.1

Installation
Installation from installer package
Proceed accordingly to installer instructions. Preconditions: 1. Installer will check whether you have .NET framework 4 Client Profile or higher and Microsoft Visual C++ 2010 Redistributable installed and will prompt to install missing components.

Installation from ZIP archive


Just place PNotes.NET folder wheresoever you want on your hard disk or flash drive. It is absolutely portable application, which does not require any additional settings in registry and does not leave behind any traces in registry as well. Preconditions: 1. .NET framework 4 Client Profile or higher (Windows 8 comes with version 4.5 pre-installed). ZIP archive contains Web Installer of .NET 4 Client Profile (if it does not, the installer can be downloaded for free at: http://www.microsoft.com/en-us/download/confirmation.aspx?id=17113). Once installed the file may be safely deleted. Full Installer can be downloaded for free at: http:// www.microsoft.com/en-us/download/details.aspx?id=24872 2. Microsoft Visual C++ 2010 Redistributable. ZIP archive DOES NOT contain Microsoft Visual C+ + 2010 Redistributable Package due to its huge size (there is no Web installer for it). It can be downloaded here for free: http://www.microsoft.com/en-us/download/confirmation.aspx?id=8328 Tip: if you are on Windows Vista or Windows 7 under restricted account - install program into root folder ("C:\"), instead of "C:\Program Files" (x32 system) or "C:\Program Files (x86)" (x64 system) in order to avoid UAC conflicts.

1.2

Uninstallation
Uninstallation of program installed from ZIP archive
Remove PNotes.NET folder.

Uninstallation of program installed from another installers


Proceed accordingly to uninstaller instructions.

2013 Andrey Gruber

Introduction

1.3

Getting Started
When you start PNotes.NET it places itself into system tray and allows you to interact with it either by right-click on its icon and choosing one of context menu items, or by using your own hot keys.

Available context menu commands are: New Note - creates new note. New Note In Group - creates new note in specified group. Load Notes - loads notes from .pnote files. New Note From Clipboard - creates new note and pastes clipboard's content into it. Diary - shows list of Diary "pages". Preferences - brings up Preferences dialog.

2013 Andrey Gruber

PNotes.NET (version 1.1)

Control Panel - brings up PNotes.NET Control Panel window. Hot Keys Management - brings up hot keys management dialog Menus Management - brings up menus management dialog Show/Hide - shows/hides notes by several criterions. Save All - saves all notes. Backup/Synchronization - allows to perform full backup, restore from full backup, synchronize notes locally or via synchronization plugins and import notes and settings from previous version of program. Reload All - reloads all currently visible notes Docking (all notes) - allows you to dock all visible notes to any side of screen or undock them. Switch On (All Notes) - applies high priority, read-only mode, complete mark, roll status and always-on-top status to all notes. Switch Off (All Notes) - removes high priority, read-only mode, complete mark, roll status and always-on-top status to all notes. Search - allows to choose one of search options: Search In Notes, Search by Tags, Search By Date. Favorites - shows your favorites notes. Lock Program - so-called "boss-key", allows you to hide all program windows quickly by one click or one hot-key pressing (recommended). To use this function you should protect the program with password. Run - runs external program. Help - brings up help window or redirects you to online help page, accordingly to your settings. About - brings up about dialog. Support PNotes Project - Thankfulness is not a sin :) PNotes Homepage - navigates to pnotes.sourceforge.net Exit - ends program.

Note

It is clear that note is a basic element of PNotes. Depending on your choice, made on Appearance page of Preferences dialog, it can be skinnable or skinless. Each note consists of three areas: header, text area and footer. Header of note includes note's caption and two command buttons, which allow you to hide or delete

2013 Andrey Gruber

Note

current note. In case of skinnable note notifications marks will appear elsewhere on note (depending on note's skin) , if note has been changed, scheduled, locked, has a high priority, marked as complete task, password-protected, pinned to other window or has been sent/received. For skinless notes these notification will be displayed at note's footer . All these icons are clickable, i.e. click on some of them will toggle current state (e.g. high priority or pinned status), or show schedule dialog, or save changed note etc. Text area is an area you type your text in. Right mouse button click somewhere in text area will show context menu for note's text operations: Menu item Undo Redo Cut Copy Paste Copy As Plain Text Paste As Plain Text Shortcut Ctrl+Z Ctrl+Y Ctrl+X Ctrl+C Ctrl+V Description Undoes last text operation Redoes last text operation Cuts selected text Copies selected text Pastes text from clipboard into note Copies selected text discarding any formatting Pastes text from clipboard into note discarding any formatting --Opens submenu with text formatting options, identical to note's toolbar Opens submenu which allow you to insert pictures, smilies and date/time stamp Opens submenu which allow you to set spell checking preferences and add dictionaries Brings up Find dialog Finds next occurrence of text fragment Brings up Replace dialog Performs web search for selected text using specified search provider Posts selected text on one of available social networks Replaces selected text by post from one of available social networks Ctrl+A Selects all text in note's text area

Format

Insert

---

Spell Checking Find Find Next Replace Search Selected With: Post Selected On: Insert Post From: Select All

--Ctrl+F F3 Ctrl+H

2013 Andrey Gruber

PNotes.NET (version 1.1)

Footer of note (usually, but not necessary, it may be any other part of note's surface) includes toolbar (visible only on active note) and, in case of skinless note, sizing grip, allows you to resize the note. Note's toolbar includes 12 buttons (explained in table below) and gives you unrestricted formatting abilities. Button Font Font Size Font Color Bold Italic Underscore Strikethrough Highlight Align Left Center Align Right Bullets/Numbering Ctrl+L Ctrl+E Ctrl+R Ctrl+B Ctrl+I Ctrl+U Shortcut Description Applies specified font to selected text Applies specified font size to selected text Applies specified font color to selected text Applies bold font style to selected text Applies italic font style to selected text Applies underscore font style to selected text Applies strikethrough font style to selected text Highlights selected text with specified color Aligns selected text left Centralize selected text Aligns selected text right Applies bullets/numbering style to selected text

Footer of note (usually, but not necessary, it may be any other part of note's surface) includes toolbar (visible only on active note) and, in case of skinless note, sizing grip, allows you to resize the note. Note's toolbar includes 12 buttons (explained in table below) and gives you unrestricted formatting abilities. Button Font Font Size Font Color Bold Italic Underscore Strikethrough Ctrl+B Ctrl+I Ctrl+U Shortcut Description Applies specified font to selected text Applies specified font size to selected text Applies specified font color to selected text Applies bold font style to selected text Applies italic font style to selected text Applies underscore font style to selected text Applies strikethrough font

2013 Andrey Gruber

Note

Highlight Align Left Center Align Right Bullets/Numbering Ctrl+L Ctrl+E Ctrl+R

style to selected text Highlights selected text with specified color Aligns selected text left Centralize selected text Aligns selected text right Applies bullets/numbering style to selected text

Right mouse button click anywhere on note's area, exclude text area, will show note's context menu with items described in table below (you may assign hot key to each command at Behavior page):

Menu item Save Rename/Change Group Save As Text File Restore From Backup Duplicate Note Print Adjust Appearance Adjust Schedule Hide

Shortcut Ctrl+S --------Ctrl+P -------

Delete

---

Dock Send As Text

-----

Send As Attachment

---

Send In ZIP Archive

Description Saves current note Renames current note and/or changes its group Saves current note as simple text file Restores current note from backup copy Duplicates current note Prints content of current note Brings up the dialog for adjusting note's appearance Brings up the dialog for adjusting note's schedule Hides current note Deletes current note (choosing this command with left Shift button pressed will delete the note completely, otherwise the note will be sent to Recycle Bin) Opens submenu with docking options Sends current note's content via email Sends current note via email as attachment (MS Outlook users - Outlook tries to treat received .pnote file as RTF file and even changes its extension to .rtf. Just save the received file as .pnote and continue to work with it) Sends current note in ZIP archive

2013 Andrey Gruber

10

PNotes.NET (version 1.1)

Send Via Network

---

Reply Post Entire Note On: Replace Note Text By Post From: Export To MS Office As: Tags Linked Notes Add To Favorites (Remove From Favorites) On Top Toggle High Priority Toggle Protection Mode ---

---------

Set (Remove) note Password --Mark As Complete ---

Roll/Unroll

---

Pin To Window

---

Opens submenu which allows to send current note to single contact or multiple contacts, single group of contacts or multiple groups, as well as create new contact and/or group of contacts Replies current note, if it has been previously received Posts entire note on one of available social networks Replaces entire note's text by post from one of available social networks Exports content of current note to MS Office (currently Notes only) Brings up Tags dialog Opens list of notes linked to current one and submenu which allows to manage them Adds/Removes current note to favorites Makes note topmost window Toggles note's priority status Toggles note's protection mode Sets/removes note password Marks note as complete task Rolls/unrolls skinless note to its caption size (appropriate option should be allowed on "Behavior" page of Preferences dialog) Pins or unpins note to/from specified window

2.1

How to (note)
How to: send note to another computer How to: post note's content on social network Insert post from social network into note How to: pin/unpin note to/from window How to: adjust note's appearance How to: adjust note's schedule How to: work with tags How to: work with linked notes

2013 Andrey Gruber

Note

11

How to: insert images

2.1.1

Send note to another computer


First of all you should add at least one contact and (optional) contacts' group on "Network" page at Preferences dialog.

In case of new contact you have to specify contact name and computer name or IP address of contact's computer. If you don't know computer name you may click on search button computers available on your local network: and choose one of

Various sending option are located under "Send Via Network" menu item of note's context menu:

2013 Andrey Gruber

12

PNotes.NET (version 1.1)

You may either choose one of contacts from available groups, or one of contacts which do not belong to any group, or add new contact, or add new group. If you want to send note to several contacts, choose "Select Contacts" item and then check desired contacts in dialog which appears and click "OK":

If you want to send note to several groups, choose "Select Groups Of Contacts" item and then check desired groups and click "OK":

2013 Andrey Gruber

Note

13

You may also choose not to show contacts in context menu by checking "Do not show contacts in context menu" option on "Network" page at Preferences dialog. In this case only multiple choice options - "Select Contacts" and "Select Groups Of Contacts" - will be shown.

2.1.2

Post note's content on social network


If you want to post entire note on one of available social networks, select "Post Entire Note On:" menu item of note's context menu and choose the network you want to post on:

If you want to post only part of note, select desired part of text, right click on note's edit area and choose the network you want to post on under "Post Selected On:" menu item of context menu:

2013 Andrey Gruber

14

PNotes.NET (version 1.1)

2.1.3

Insert post from social network into note


If you want to replace entire note's content with post from one of available social networks, select "Replace Note Text By Post From:" menu item of note's context menu and choose the network you want to import posts from:

2013 Andrey Gruber

Note

15

The following dialog with available posts will appear (the count of posts viewed may be set on "Network" page at Preferences dialog):

Choose desired post and click "OK". If you want to insert into note's content post from one of available social networks, select "Insert Post From:" menu item of note's edit area context menu and choose the network you want to import posts from:

2013 Andrey Gruber

16

PNotes.NET (version 1.1)

2.1.4

Pin/unpin note to/from window


Choose "Pin To Window" menu item from note's context menu. In dialog box that appears choose one of available windows.

2013 Andrey Gruber

Note

17

Once pinned, the note will appear when a window it's pinned to becomes visible or is restored from task bar. If the window is closed or minimized the pinned note will disappear. To unpin choose "Unpin" menu item from note's context menu.

2.1.5

Adjust note's appearance


Choose "Adjust Appearance" menu item from note's context menu. This will bring up appearance dialog. By default note inherits appearance properties from its group (background color, skin etc) or from global settings (e.g. transparency level). At this dialog you can specify appearance properties for separate note.

2013 Andrey Gruber

18

PNotes.NET (version 1.1)

Clocking on "Standard view" button will roll back appearance properties of current note to their default values (based on note's group and global settings).

2.1.6

Adjust note's schedule


Choose "Adjust Schedule" menu item from note's context menu. This will bring up a dialog with various schedule options: 1. Schedule type "Once at": the note will be alerted only once at specified date and time.

2013 Andrey Gruber

Note

19

2. Schedule type "Every day at": the note will be alerted every day at specified time.

2013 Andrey Gruber

20

PNotes.NET (version 1.1)

3. Schedule type "Repeat every": the note will be alerted every [amount of selected years, months, week s, days, hours, minutes and seconds], starting either from selected date/time or program start.

2013 Andrey Gruber

Note

21

4. Schedule type "Weekly on": the note will be alerted every selected weekday at specified time.

2013 Andrey Gruber

22

PNotes.NET (version 1.1)

5. Schedule type "After": the note will be alerted after [amount of selected years, months, week s, days, hours, minutes and seconds], starting either from selected date/time or program start.

2013 Andrey Gruber

Note

23

6. Schedule type "Monthly (exact date)": the note will be alerted every month at specified date and time

2013 Andrey Gruber

24

PNotes.NET (version 1.1)

7. Schedule type "Monthly (day of week)": the note will be alerted every month at weekday with specified ordinal number and selected time.

2013 Andrey Gruber

Note

25

Common options for all schedule types are: Do not track the overdue note - if selected, the note won't be included in checking for overdue notes on program start. Stop alert/notification after - sets amount of seconds after which sound alert and visual notification should be stopped for alerted note. Sound alert - sets the type of sound alert. If set to "Text", the alerted note will "speak" its text. Default voice, its volume and speed may be set on "Schedule" page at Preferences dialog. Repeat in loop - if selected, sound alert of alerted note will be played in loop until you stop it by clicking elsewhere on note. Run external program after notification - you can choose to run of external programs added on "General" page at Preferences dialog. Hide note until notification - a note will be shown only at scheduled moment

2.1.7

Work with tags


Choose "Tags" menu item from note's context menu. Note's Tags dialog allows you to assign tags (from available tags defined at "General settings" page) to

2013 Andrey Gruber

26

PNotes.NET (version 1.1)

note and simplify further searching and sorting.

2.1.8

Work with linked notes


Choose "Linked Notes" menu item from note's context menu. Linked notes dialog allows you to add/remove links to another notes. Using these links makes it easier to find and show notes.

Once added, linked note can be easily accessed from note's menu:

2013 Andrey Gruber

Note

27

2.1.9

Insert images
Images make your note more expressive, aren't they? You may insert any image file to note either by choosing "Insert"-->"Insert picture" menu item, or by simple drag-&-drop operation, or by copying and pasting desired image. In addition you may use one of 121 built-in smilies.

2013 Andrey Gruber

28

PNotes.NET (version 1.1)

2.2

Note groups
Each note belongs to its own group. When program starts for the first time there is only one group - "General". Every new note is created in this group by default. You may add, modify or remove groups at PNotes.NET Control Panel. Each group may have its own settings, including icon, background and caption font color (for skinless notes), skin (for skinnable notes) and font. Any note created in specific group or transferred to it inherits group settings. You may change note's group either by simple drag-n-drop on PNotes.NET Control Panel or by using note's "Rename/Change Group" menu and choosing desired group. If any group is selected on PNotes.NET Control Panel, then new note will be created in this group, although you may always change the group when you save note. You may set group's password on PNotes.NET Control Panel. This will keep all notes from group protected from unauthorized view.

Preferences
Preferences dialog allows you to set various program options. Some of them can be overridden on note's Adjust dialog, while others remain common for program in whole. This dialog consists of several pages: Pages Schedule Appearance Behavior Network Protection Description Everything related to scheduling (date formats, sounds etc) Everything related to notes' and groups' appearance Everything related to program's behavior Everything related to network operations Everything related to password, encryption and backing up

General settings All settings which do not belong to above categories

"Default preferences" button will restore default program preferences. No changes are applied until you click "Save" or "Apply" button.

2013 Andrey Gruber

Preferences

29

3.1

General settings

2013 Andrey Gruber

30

PNotes.NET (version 1.1)

2013 Andrey Gruber

Preferences

31

Following options can be set on this page: Language - select desired UI language in combo box (all translations should be in "lang" subdirectory of program working directory; alternatively their location can be set via command line) (default value is English) Startup options Run on system start - check/uncheck appropriate check box (default value is False ) Show Control Panel on program start - check/uncheck appropriate check box (default value is False ) Always show notes marked as "High Priority" on program start - check/uncheck appropriate check box (default value is False ) Check for new version on program start - check/uncheck appropriate check box (default value is False ) Appearance Hide note's toolbar - check/uncheck appropriate check box (default value is False ) Use custom fonts - check/uncheck appropriate check box (default value is False ) Show scroll bar - check/uncheck appropriate check box (default value is False )

2013 Andrey Gruber

32

PNotes.NET (version 1.1)

Hide "Delete" button - check/uncheck appropriate check box (default value is False ) v Change appearance of "Hide" button to "Delete" button - check/uncheck appropriate check box (default value is False ) Hide "Hide" button - check/uncheck appropriate check box (default value is False ) Default width and height of skinless notes (default value is 256x256) Size of skinless notes toolbar's buttons - (default value is Normal - 12x12) Common settings of note's edit area: Bullets indent (default value is 400) Left margin width (default value is 4) Spell checker underlining color - select desired wavy underlining color for spell checking (default value is Red) Saving/Deletion Save all on program exit - check/uncheck appropriate check box (default value is True ) Confirm saving - check/uncheck appropriate check box.You will be prompted to save unsaved notes when program exits (default value is True ) Confirmation before deletion - check/uncheck appropriate check box. You will be prompted to confirm deletion of note (default value is True ) No confirmation while hiding notes - check/uncheck appropriate check box. You won't be prompted to save newly created notes when hide them - instead they will be saved with default name (timestamp) (default value is False ) Autosave every (minutes) - check/uncheck appropriate check box and set desired interval in appropriate field (default value is False and 5 minutes) Delete note from Recycle Bin after selected period (days) - select desired period in appropriate combo box (the following option will be enabled if you choose any period except "(Never)") (default value is (Never)) v Warn when note is deleted automatically from Recycle Bin - check/uncheck appropriate check box (default value is False ) Date/time formats Date/time format - format used for long date/time presentation (default value is "dd MM yyyy HH:mm:ss") Time format - format used for time presentation (default value is "HH:mm") Search providers - specify which search providers will be used for web search of selected note's text External programs - add, modify or remove links to external programs which you want to run Predefined tags - add, modify or remove predefined tags

2013 Andrey Gruber

Preferences

33

3.2

Schedule

Following options can be set on this page: Allow sound alert - check/uncheck appropriate check box (default value is True ) Track overdue reminders - check/uncheck appropriate check box (default value is False ) Enable visual notification - check/uncheck appropriate check box (default value is True ) Move notes to the center of screen - check/uncheck appropriate check box (default value is True ) Text-to-speech settings - select preferable default voice from available voices and listen sample text Voice settings - volume, speed and pitch

2013 Andrey Gruber

34

PNotes.NET (version 1.1)

3.3

Appearance

2013 Andrey Gruber

Preferences

35

2013 Andrey Gruber

36

PNotes.NET (version 1.1)

Following options can be set on this page: Notes look, either skinnable or skinless - select appropriate radio button Settings of groups appearance : Common group font Common group background color (in skinless mode) Common group caption font (in skinless mode) Common group skin (in skinnable mode) Additional setting of Diary group: v Whether to add weekday name to note's name - check/uncheck appropriate check box (default value is False ) v Full weekday name - check/uncheck appropriate check box (default value is False ) v Add weekday name at the end of note's name - check/uncheck appropriate

2013 Andrey Gruber

Preferences

37

check box (default value is False ) v Do not show diary "pages" from previous dates in "Diary" menu - check/ uncheck appropriate check box (default value is False ) v Ascending sort of pages in "Diary" menu (starting from earliest) - check/ uncheck appropriate check box (default value is False ) v Number of diary "pages" shown in "Diary" menu - select desired value in appropriate field (default value is 7) v Date format using for naming of notes belong to "Diary" group - select desired format in appropriate combo box (default value is "MMMM dd, yyyy", e.g. "March 17, 2013") Additional settings of skinless docked notes: v Width and height of skinless docked notes - default value is 256x256

3.4

Behavior

2013 Andrey Gruber

38

PNotes.NET (version 1.1)

Following options can be set on this page: Hot keys settings Menus visibility Some common settings of skinless notes: Use random background color - check/uncheck appropriate check box (default value is False ). If set to True , it overrides group settings v Invert text color - check/uncheck appropriate check box (default value is False ). If set to True , then text color of newly created note will be set to color opposite to background color, overriding group settings. Roll/Unroll note by double click on caption - check/uncheck appropriate check box (default value is False ) v Fit to caption when rolled - check/uncheck appropriate check box (default value is False ). If set to True , then width of note in rolled state will be adjusted accordingly to its caption text Miscellaneous New note always on top - check/uncheck appropriate check box (default value is False ). If set to True , then newly created note is positioned over all other windows Relational notes positioning - check/uncheck appropriate check box (default value is

2013 Andrey Gruber

Preferences

39

False ). If set to True , then notes positions are stored accordingly to screen resolution. That allows to notes to be shown at the same position on systems with different screen resolution Show separate notes under each group in Show/Hide menus - check/uncheck appropriate check box (default value is False ). By default only groups names are shown. If this option is set to True, then notes names are shown under their groups an you can show/ hide them separately Hide notes marked as "Completed" - check/uncheck appropriate check box (default value is False ). If set to True , then note will immediately disappear if it has been marked as "Completed" Show big icons on PNotes.NET Control Panel toolbar - check/uncheck appropriate check box (default value is False ) Do not show notes in the list of opened windows (Alt+Tab) - check/uncheck appropriate check box (default value is False ). If set to True , then notes won't be shown when you press Alt+Tab. This setting effects only newly created notes. Keep notes visible when hovering over "Show Desktop" button - check/uncheck appropriate check box (default value is False ). Available for Windows Vista and above Action after double click on system tray icon - select desired action in appropriate combo box (default value is New Note ) Action after single click on system tray icon - select desired action in appropriate combo box (default value is (No Action)) Use following as default name of new notes - select desired value in appropriate combo box (default value is First characters of note ) Length of note's text used as default name for new note - select desired value in appropriate combo box (default value is 128) Length of note's text shown in "Content" column at Control Panel - select desired value in appropriate combo box (default value is 24) Action after click on "Pin" icon - select desired value in appropriate combo box (default value is Unpin) Effects Hide notes fluently - check/uncheck appropriate check box (default value is False ). If set to True , then notes will vanish fluently when you hide them Play sound when hide notes - check/uncheck appropriate check box (default value is False ). If set to True , then every time you hide a note it will play special "hide" sound Transparency level - set desired transparency level using track bar. This level is applied on all notes. To set transparency level to separate note use its Adjust Appearance dialog Controls style - select desired style from list. Selected style will be applied to all list boxes, combo boxes tree views etc

3.4.1

How to (Behavior)
How to: manage hot keys How to: hide/show menus

3.4.1.1

Manage hot keys Right click on program icon in system notification area and choose "Preferences" menu item from context menu or click on button on PNotes.NET Control Panel. When "Preferences" dialog appears, choose "Behavior" page.

Click on "Hot keys management" button. This will bring up hot keys management dialog:

2013 Andrey Gruber

40

PNotes.NET (version 1.1)

Each tab on dialog represents its own menu: Main menu - appears after right click on program icon in system notification area. Note - appears after right click on note (excluding edit area). Edit area - appears after right click on note's edit area. Groups - represents Show/Hide options for groups. When you click on Add/Modify buttons the following dialog box appears:

Enter desired hot key (e.g. Ctrl+Shift+H, F10, Shift+F9 etc) in the text box (do not type "Ctrl" or any other text, just press on desired keys combination) and press OK. Take into account that there is a number of forbidden combinations listed here.
3.4.1.1.1 Forbidden hot key

As a result of assigning hot keys to program some useable accelerators from other programs may become not available, because PNotes.NET will hook all keys combination defined as hot keys. Therefore, there are a number of keys combination forbidden by default for using as hot keys: Ctrl+S

2013 Andrey Gruber

Preferences

41

Ctrl+C Ctrl+V Ctrl+X Ctrl+Z Ctrl+Y Ctrl+A Ctrl+F Ctrl+P Ctrl+O Ctrl+G Ctrl+B Ctrl+I Ctrl+K Ctrl+L Ctrl+E Ctrl+R Ctrl+U F1 F3 F5

In addition, any combination of Shift button with letter is forbidden as well. Other keys combination are available, but use them carefully in order not to damage other programs. 3.4.1.2 Hide/show menus Right click on program icon in system notification area and choose "Preferences" menu item from context menu or click on button on PNotes.NET Control Panel. When "Preferences" dialog appears, choose "Behavior" page.

Click on "Menus management" button. This will bring up menus management dialog:

2013 Andrey Gruber

42

PNotes.NET (version 1.1)

Each tab on dialog represents its own menu: Main menu - appears after right click on program icon in system notification area. Note - appears after right click on note (excluding edit area). Edit area - appears after right click on note's edit area. Control Panel - appears after right click on notes' list on PNotes.NET Control Panel. Remove selection from appropriate menu item in order to hide it or select an item in order to show it. Note: if you choose hide/show Control Panel menus corresponding toolbar buttons will be hidden/shown as well.

2013 Andrey Gruber

Preferences

43

3.5

Network

2013 Andrey Gruber

44

PNotes.NET (version 1.1)

2013 Andrey Gruber

Preferences

45

Following options can be set on this page: Notes exchange Enable exchange - check/uncheck appropriate check box (default value is False ) Save notes before sending - check/uncheck appropriate check box (default value is False ) Do not show notification when new note arrives - check/uncheck appropriate check box (default value is False ) v Show received note after click on notification message - check/uncheck appropriate check box (default value is False ) v Show "Incoming" group after click on notification message - check/uncheck appropriate check box (default value is False ) Do not play sound when new note arrives - check/uncheck appropriate check box (default value is False ) Do not show notification when note is sending - check/uncheck appropriate check box (default value is False ) Show note after receiving - check/uncheck appropriate check box (default value is False ) Hide note after sending - check/uncheck appropriate check box (default value is False ) Do not show contacts in context menu - check/uncheck appropriate check box (default value is False ). If set to True , then no contacts name are show under "Send Via Network" menu. By default contacts names are shown along with contacts groups names Contacts details List of contacts groups List of contacts Exchange port - required (default value is 27951) Social networks List of social network plugins Count of posts to receive - the limit of messages/statuses you'll get for choice when insert message/status from one of available social network into note. Select desired value in appropriate combo box (default value is 20) Plugin's removal - removes selected plugin's directory. Requires program restart. Checking for updates/new plugins - click on "Check for updates/new plugins" button. If there is an update for some plugin or new plugin, the following dialog will appear:
2013 Andrey Gruber

46

PNotes.NET (version 1.1)

After downloading you'll be prompted to restart the program (you may restart later, if you want, but all updates will be applied only after restart). Synchronization List of available synchronization plugins Include notes from Recycle Bin in synchronization - check/uncheck appropriate check box (default value is False ) Synchronize notes on program start - check/uncheck appropriate check box (default value is False ). Be careful when check this option - synchronization may take a long amount of time. Save notes before synchronization - check/uncheck appropriate check box (default value is False ) Plugin's removal - removes selected plugin's directory. Requires program restart. Checking for updates/new plugins - same as for social networks

2013 Andrey Gruber

Preferences

47

3.6

Protection

2013 Andrey Gruber

48

PNotes.NET (version 1.1)

Following options can be set on this page: Program password (creation, changing and removing) Options only available if program password has been set Store notes as encrypted files - check/uncheck appropriate check box (default value is False ) Hide icon from system tray if program is locked - check/uncheck appropriate check box (default value is False ). Setting this option to True requires a hot key to be set on "Lock Program" item of main program menu Backup Backup notes before saving - check/uncheck appropriate check box (default value is False ). If set to True , then before any save operation backup copy of note will be stored (i.e. in its current state, before saving). You may always restore note from these saved copies Backup deepness (amount of copies for each note) - select desired amount in appropriate field (default value is 3). This option is only available if you choose to backup notes before saving Silent full backup - check/uncheck appropriate check box (default value is False ). If set to True , then full backup will be created in "backup" directory using default name without prompting to choose directory and file name (default value is False ) Automatic full backup settings - set days of week and time to perform automatic full backup Miscellaneous Do not show note's content at Control Panel if note or its group is password protected - check/uncheck appropriate check box (default value is False ). If set to True , then stars '*' will be shown at PNotes.NET Control Panel's "Content" column for password protected notes/groups Local synchronization Include notes from Recycle Bin in local synchronization List of computers to automatically synchronize with, if program is started from USB drive

3.6.1

How to (Protection)
How to: create, modify or remove program password

2013 Andrey Gruber

Preferences

49

3.6.1.1

Create, modify or remove program password Right click on program icon in system notification area and choose "Preferences" menu item from context menu or click on button on PNotes.NET Control Panel. When "Preferences" dialog appears, choose "Protection" page. The same actions may be performed by choosing "Password" button on PNotes.NET Control Panel toolbar. In order to create password, click on "Create password" button. Enter your password in dialog box and confirm it.

In order to modify password, click on "Modify password" button. Enter old password, new password and confirm new password.

In order to remove password, click on "Remove password" button. Enter your password and click "OK".

2013 Andrey Gruber

50

PNotes.NET (version 1.1)

PNotes.NET Control Panel


This is your central command point. On the left side of window there is a tree of notes' groups. The most upper node of tree is called "All Groups" and cannot be removed or modified. If this node is selected, all notes from all groups (except deleted notes from Recycle Bin) are shown in the list on the right side of window. If no groups has been created before - the default one, "General", will be created at program start and all notes will belong to this group. Next to "All Groups" there are six additional items: "Recycle Bin", "Diary", "Search results", "Backup", "Favorites" and "Incoming". These items, like "All Groups", cannot be removed or modified. The toolbar actions are described in table below: Butto Action n Creates new top-level group (group located under "All Groups"). Creates new subgroup in selected group. Modifies selected group settings (name, icon, colors, fonts etc). Deletes selected group. All notes belong to selected group and all it's subgroups will be deleted as well. You cannot delete the "General" group because it is required for normal program behavior - but you can change it's name instead. Shows all notes from selected group. Shows all notes from selected group, include subgroups. Hides all notes from selected group. Hides all notes from selected group, include subgroups. Sets password for selected group. Removes password for selected group. This toolbar has corresponding context menu with the same buttons, appears after right mouse button click on the groups' tree. You can drag any group (except "All Groups") to new location within tree and assign it a new parent group. Dragging any note to "Recycle Bin" will remove it, dragging any note from "Recycle Bin" to another group will restore it to this group. "Search results" shows all notes found with quick search. "Backup" shows all backup copies and allows to restore them. "Diary" includes all notes belong to Diary. They cannot be dragged onto any other group except "Recycle Bin" and notes from other groups cannot be dragged onto it. "Favorites" shows all your favorites notes. "Incoming" shows all notes received from other users via local network. of groups' tree deals with groups and its

On the right side of window there is a list of notes belong to selected group or all notes if "All Groups" is selected. The list will show number of columns, depending on group selected in groups' tree.
2013 Andrey Gruber

PNotes.NET Control Panel

51

Meaning of each column is self-explanatory. Some columns headers contain icon instead of text. The meaning of these columns is as follows: Icon Description High priority status. Completed note. Locked note. Note's group or note protected by password. Note is pinned to some window. Favorite note. Sent, received or sent/received note.

Right click on columns header will allow you to hide/show columns, except the very first one: "Note Name". Each note is presented in list with appropriate icon. Meaning of icons is described in table below: Description Unchanged note. Changed note. Scheduled note. Scheduled and changed note. New (unsaved) note. New (unsaved) changed note. New (unsaved) and scheduled note. New (unsaved), scheduled and changed note. (*)Icons in table refer to visible notes. Invisible notes are presented with the same icons, but in different color Icon

The main toolbar:

located at the top of window allows perform various operations with notes, as described in table below: Butto Action n Creates new note. If "All Groups" is selected, the new note is being created in default "General" group, otherwise it is being created in selected group. Loads note from .pnote file. Creates new note from clipboard content. Duplicates selected note. Shows list of Diary "pages".

2013 Andrey Gruber

52

PNotes.NET (version 1.1)

Butto Action n Saves selected note. Saves selected note with new name. Saves selected note as text file. Restores note from backup copy. Prints note's content. Shows adjust options. Deletes selected note. Saves all notes. Shows synchronization/backup options. Shows placement/visibility options. Sends content of selected note via email. Sends selected notes via email as attachment. Sends selected notes via email as zip archive. Shows various exchange options. Shows Tags dialog for selected note and Show/Hide by tags submenus. Sets note's marks: priority, protected mode, complete task. Adds/removes selected note to/from favorites. Shows external program menu. Empties Recycle Bin. Restores selected note from Recycle Bin. Shows/hides preview pane. Shows preview pane background color options. Switches between horizontal and vertical direction of preview pane. Shows/hides groups' tree view. Resets columns width and visibility. Shows hot keys dialog. Shows menus management dialog. Shows program Preferences dialog. Shows password management options. Shows search options. Performs quick search in notes. Shows program help. Navigates to PNotes.NET PayPal page. This toolbar has corresponding context menu with the same buttons, appears after right mouse button click on the notes' list.

2013 Andrey Gruber

PNotes.NET Control Panel

53

You may choose one of two types of toolbar buttons - small or big by selecting the appropriate value on Behavior page of Preferences dialog.

4.1

Preview pane
The preview pane located on PNotes.NET Control Panel allows you to preview contents of notes without opening them. You may hide or show the pane using "Preview" toolbar button or corresponding menu command. If you use skinless notes, the background color of preview pane will change accordingly to note's background color, unless you specify another one and choose the option to use user defined color (by clicking on "Preview Window Background Settings" toolbar button or corresponding menu command). If your notes are skinnable, the default background color of preview pane will be system windows background color, unless you choose your own one (by clicking on "Preview Window Background Settings" toolbar button or corresponding menu command). You also may switch between horizontal and vertical (on the right side) preview pane location by clicking on "Preview Window On The Right" toolbar button or corresponding menu command.

4.2

How to (Control Panel)


How to: change group's settings How to: hide/show columns in list view

4.2.1

Change group's settings


Any group except "All groups" is customizable. Select desired group and click on "Edit group" toolbar button (or choose a corresponding menu item from context menu). This will bring up group's edit dialog:

2013 Andrey Gruber

54

PNotes.NET (version 1.1)

At this dialog you can change group's name (not in case of "General" group), icon, default font of notes belong to group (will be applied to newly created notes). Also you may change skinless/skinnable properties which will be applied immediately to all group's notes. In order to reset custom settings - press "Standard view" button. All settings will return to their default values.

4.2.2

Hide/show columns in list view


In order to show/hide columns in PNotes.NET Control Panel list view right click elsewhere on column header and check/uncheck desired column:

2013 Andrey Gruber

PNotes.NET Control Panel

55

You may always reset columns visibility and width by click on "Reset Columns Width/Visibility" button (or corresponding menu item from context menu).

Backup
There are two different types of backup actions available in PNotes.NET, which often confuses novice users. So, let's consider them one by one. "On-the-fly" backup. If you choose to enable "Backup notes before saving" option at "Protection" page of Preferences dialog, then each time you save changes, made to your note (but before the save operation occurs) the copy of note will be saved in "backup" directory as separate file under name composed of note's ID and ordinal number and ".pnxb" extension, e.g. "121229010256598_1.pnxb". Next time you save this note the copy of it's current state will be saved with next ordinal number, i.e. "121229010256598_2.pnxb". And so on until the limit of backup copies is reached. The limit of backup copies (also named "Backup deepness") may be set at "Protection" page using "Backup deepness (amount of copies for each note)" field. The default value of backup deepness is 3. Backup copies are stored by FIFO (First In First Out) concept, i.e. if backup deepness is set, say, to 3, and you are saving note for the fourth time, the first copy will be replaced by second one, the second copy will be replaced by third one and current note's state will be saved as third copy. In order to restore note from backup click "Restore From Backup" item on note's context

2013 Andrey Gruber

56

PNotes.NET (version 1.1)

menu and choose one of available backups. Also you can see all backups under "Backup" group at PNotes.NET Control Panel and restore them by double click. Full backup. Full backup is a copy of all existing notes' files and notes' database saved as ZIP archive. You may do it manually by choosing "Create Full Backup" item under "Backup/ Synchronization" menu of program's main context menu. To restore notes from full backup, choose "Restore From Full Backup" item under "Backup/Synchronization" menu of program's main context menu. If "Silent full backup" option at "Protection" page of Preferences dialog is enabled, then manual full backup will be created in "backup" directory using default name without prompting to choose directory and file name. Otherwise you will be prompted to choose directory and file name each time you create full backup. You may also specify days of week and time to perform full backup automatically.

Synchronization
There are two types of synchronization available in PNotes.NET: local and online. 1. To synchronize notes locally Right click on program icon in system notification area and choose "Backup/Synchronization"-->"Manually Local Synchronization" menu item from context menu. You will be prompted to select notes data directory and (optional) separate directory of program database. Another way to synchronize notes locally is to allow automatic synchronization with host computer when program is started from USB drive. You may add computers and other synchronization details on "Protection" page at Preferences dialog. 2. Online synchronization is available if you have any synchronization plugin installed. Initially program ships without plugins, you may download them by click on "Search for updates/new plugins" button on either Synchronization or "Social networks" tab of "Network" page at Preferences dialog. Choose one or more of available plugins on Synchronization tab and apply your settings. Once added, the plugin will appear under "Backup/Synchronization" menu item of main context menu. Click on plugin's menu and follow service provider instructions. You may also to set up the program to synchronize online on start - just take into consideration, that synchronization process can drag on for a long time, depending on your internet connection speed and service provider capabilities.

Import from previous edition


To import notes and/or settings from previous edition of program - PNotes - choose appropriate command under Backup/Synchronization menu item of main context menu. Choosing "Import Notes From PNotes" will bring up following dialog:

2013 Andrey Gruber

Import from previous edition

57

You have to specify location of notes files. Optionally, you may specify location of notes DB file (the one with *.pnid extension). Usually it is located with notes, in the same directory. If you want to import notes groups, you have to choose notes initialization (notes.ini) file. Take into consideration that groups hierarchy and icons will not be preserved, because old settings are not compatible with new ones. You may also decide whether you want to import deleted notes from Recycle Bin or not (default is not). Choosing "Import Settings From PNotes" will bring up following dialog:

2013 Andrey Gruber

58

PNotes.NET (version 1.1)

The only thing you have to specify is notes initialization (notes.ini) file.

Diary
Diary is an exclusive feature of PNotes.NET. Strictly speaking this is ordinary notes, but joined into special group "Diary". You may consider them as diary pages. Just like with real diary, you may write down today's events, then skip a couple of days and return to diary again. When you click on "Today" item under "Diary" menu item of main context menu - new diary "page" of today will be created or existing "page" of today will be showed.

The name of Diary "page" is always the date it has been created, although format of this date can be changed at "Diary" section of "Appearance" page at Preferences dialog. Also at that section you may set various "Diary" properties. Diary "page" behaves like any other note with some restrictions: 1. It can not be renamed 2. It can not be associated with group other than "Diary" 3. It can not be added to Favorites Look of Diary group (background color, fonts, skin etc) may be customized at "Diary" section of "Appearance" page at Preferences dialog.

Docking
One yet interesting PNotes.NET feature is ability to dock notes to any side of desktop, making them look like task bar. In order to dock all visible notes choose one of available docking modes under "Docking (All Notes)"

2013 Andrey Gruber

Docking

59

menu item at main context menu. In order to dock/undock separate note choose one of available docking modes under "Dock" menu item of note's context menu. Here you can see notes docked to the bottom side of desktop:

Background color, fonts, skin and size of docked notes can be set at "Docking" section of "Appearance" page at Preferences dialog. If docked notes overflow the desktop area then, when you hover the last note, the semi-transparent arrow will appear, allowing you to shift docked notes by click on it.

If you hide ore delete note while it is on the docked "bar", remained notes will shift into necessary direction and hide resulting gap.

10

Search
There are several available search options in PNotes.NET: Enhanced search dialog which includes additional options along with standard

2013 Andrey Gruber

60

PNotes.NET (version 1.1)

Search criteria can be one of following: 1. Match entire search string - the text/title of note should include entire search string 2. Match every word in search string - the text/title of note should include every word from search string 3. Match at least one word in search string - the text/title of note should include at least one word from search string Search scope can be one of following: 1. Search in text - the search is performed in text of notes 2. Search in titles - the search is performed in titles of notes 3. Search in text and titles - the search is performed in both text and titles of notes Results of search are shown in "Search results" tree view. Double click on note's name or one of its child nodes will bring up the note, making it visible if needed Search by tags dialog

2013 Andrey Gruber

Search

61

This dialog allows to search for notes with specified tags Search by dates dialog

2013 Andrey Gruber

62

PNotes.NET (version 1.1)

This dialog allows to search for notes changed/saved/sent/received/deleted within specified dates interval

11

Show/hide options
You may show/hide notes by various criterions, i.e. show/hide notes by groups, by tags, bring all notes to front etc.

By default, only groups' names are shown under "Show Groups" and "Hide Groups" items. If you set the option "Show separate notes under each group in Show/Hide menus" to True, then notes' names will be shown under group name and you could show/hide separate note instead of entire group. Using "Last Modified Notes" you may show notes modified within one of several predefined intervals:
2013 Andrey Gruber

Show/hide options

63

To find notes modified within other intervals use "Search By Date" option.

12

Spell checking
Spell checking is performed by using Hunspell library. All your dictionaries have to be in "dictionaries" folder in the program root folder. By default program ships with English dictionary, but you may download additional dictionaries at Open Office site. These are files with .oxt extension, but you can open them with any zip archiver, because they are actually zip archives. Extract .aff and .dic files and put them into "dictionaries" folder. You may set spell checking to automatic mode by checking "Check Automatically" menu item.

In this case all typos will be underlined by wavy line (red by default, but you may change this color at "General settings" page of Preferences dialog). Right click on mistyped word will bring up context menu with suggestions to fix it or add to custom dictionary. Custom dictionaries are stored in the same directory and under the same name as other dictionaries with ".custom" extension.

2013 Andrey Gruber

64

PNotes.NET (version 1.1)

If you choose to make spell checking by demand, then after click on "Check Now" menu item the following dialog will appear.

13

Command line
There are several command line switches in PNotes.NET: 1. -x - will close running PNotes.NET instance 2. -xs - will close running PNotes.NET instance saving all unsaved notes without prompt, if appropriate option - "Save all on exit" - is selected on Preferences window (General settings page) 3. -xn - will close running PNotes.NET instance without saving 4. -c - will create new note 5. -cr - will create new note from clipboard 6. -cd - will create or show today's Diary note 7. -cn - will create new note with text specified in second parameter 8. -b - will create full backup file. Optional second parameter specifies the backup files directory. If omitted, the backup will be created in default directory
2013 Andrey Gruber

Command line

65

9. -r - will reload all notes 10.-nonetwork - will start PNotes.NET without support for notes exchange over local network 11.-nosplash - prevents splash screen appearance on program start 12.-conf, -config - allows to define a number of paths in following order: 12.1.Settings database directory path 12.2.Data database directory path 12.3.Skins files directory path 12.4.Backup files directory path 12.5.Language files directory path 12.6.Sound files directory path 12.7.Fonts files directory path 12.8.Spell checker dictionaries files directory path 12.9.Social networks plugins files directory path In case of empty string the default path will be used. If there is no such directory, the new one will be created. Usage: 13.-confnonetwork, -confignonetwork - the same as -conf or -config, but without network support Usage: "C:\PNotes.NET\PNotes.NET.exe" -xs "C:\PNotes.NET\PNotes.NET.exe" -cn "This is the text of note" "C:\PNotes.NET\PNotes.NET.exe" -b "C:\PnotesBackups" "C:\PNotes.NET\PNotes.NET.exe" -conf "C:\Documents and Settings\Configuration" "C:\PNotes.NET\PNotes.NET.exe" -conf "" "C:\Documents and Settings\PNotesData" "" "" "" "C: \Documents and Settings\PNotesFonts"

14

Plugins development
Plugins help to PNotes.NET to extend its functionality. Currently there are two types of plugins: 1. Plugins which allow to post notes' content on various social networks and receive posts (statuses, updates, twitts) from these networks with further inserting (replacing) their text into notes. 2. Plugins which allow to synchronize notes with one of available network storage providers. Plugins are developed with MEF - the Managed Extensibility Framework,which is a composition layer for .NET that improves the flexibility, maintainability and testability of large applications. MEF can be used for third-party plugin extensibility, or it can bring the benefits of a loosely-coupled plugin-like architecture to regular applications (see more details about MEF here). Each plugin represents .NET code library (DLL), written in any .NET language (C#, VB.NET etc) for .NET Framework version less or equal to 4 Client Profile - just because PNotes.NET requires .NET 4 Client Profile. You are responsible for processing authentication against network server and other plugin's logic, such as posting messages and/or retrieving them etc. Take a look at existing plugins' code here in order to learn how different plugins process authentication and other operations. You'll see that each one makes it by its own way. Also you may notice that each plugin has two XML files: [pluginname]config.xml and [pluginname] localizations.xml. In first file you store any information related to authentication - keys, secrets etc. Of course, it's strongly recommended to store this data encrypted. Although it's up to you to choose the

2013 Andrey Gruber

66

PNotes.NET (version 1.1)

way you will store this data. In second file you may store all string messages your plugin may to show to user, in different languages, allowing to users add their own translations. This file is optional and you may prefer to do without it. There are some rules though that are shared for all plugins and have to be implemented. Any plugin, for example, must implement IPostPlugin interface. In this section we'll talk about social network plugin. Synchronization plugin is very similar instead of its inner logic. Suppose you want to create a new plugin for, say, YourSpace network. Let's start a new Class Library project in Visual Studio. Name it accordingly to the network you want to interact with, e.g. "pnyourspace" (this name must be unique among other plugins). By default Class1.cs file is created in your project. Rename the "Class1" to something more sensible, e. g. "PNYourSpace". This is the class that will interact with PNotes.NET main window, so it's recommended to design it exactly as described below and leave all your own logic in another classes and forms. First of all, add reference to PluginsCore.dll. It can be downloaded here: http://sourceforge.net/projects/ pnotes/files/PNotes.NET/Plugins/PluginsCore_bin.zip/download Other reference you require is System.ComponentModel.Composition. There may be (and should be) other components to reference - such as libraries which works with OAuth 2.0 authentication protocol. You may write your own library (just like I did for LinkedIn) or use existing one (Google is your best friend). Once you have added all needed references, be sure to add the following usings: using using using using using System; System.ComponentModel.Composition; System.Reflection; System.Windows.Forms; PluginsCore;

PluginsCore.dll contains all needed classes and interfaces. While PNotes.NET main window implements IPluginsHost interface, which provides plugin with required properties from PNotes.NET, the plugin have to implement IPostPlugin interface. So add the following: [Export(typeof(IPostPlugin))] // tells to MEF which type to export public class PNYourSpace : IPostPlugin IPostPlugin interface contains 1 method, 9 properties and 3 events. So you have to implement them as shown below: public string Name { get { return "YourSpace"; } } Here you return the name of your plugin, as it will be shown in PNotes.NET menus.

2013 Andrey Gruber

Plugins development

67

public void Init(IPluginsHost host) { _Host = host; _MenuPostPartial = new ToolStripMenuItem(Name, Properties.Resources.myspc, menuClic _MenuPostFull = new ToolStripMenuItem(Name, Properties.Resources.myspc, menuClick); _MenuGetPartial = new ToolStripMenuItem(Name, Properties.Resources.myspc, menuClick _MenuGetFull = new ToolStripMenuItem(Name, Properties.Resources.myspc, menuClick); } private void menuClick(object sender, EventArgs e) { var item = sender as ToolStripMenuItem; if (item == null) return; if (item.Equals(_MenuPostPartial)) { RichTextBox edit = _Host.ActiveTextBox; if (edit != null) { var result = YourSpacePost.Post(edit.SelectedText, _Host.ActiveCulture); if (PostPerformed != null) { PostPerformed(this, new PostPerformedEventArgs(result)); } } } else if (item.Equals(_MenuPostFull)) { RichTextBox edit = _Host.ActiveTextBox; if (edit != null) { var result = YourSpacePost.Post(edit.Text, _Host.ActiveCulture); if (PostPerformed != null) { PostPerformed(this, new PostPerformedEventArgs(result)); } } } else if (item.Equals(_MenuGetPartial)) { var details = YourSpacePost.Get(_Host.LimitToGet, _Host.ActiveCulture); if (GotPostsPartial != null) { GotPostsPartial(this, new GotPostsEventArgs(details)); } } else if (item.Equals(_MenuGetFull)) { var details = YourSpacePost.Get(_Host.LimitToGet, _Host.ActiveCulture); if (GotPostsFull != null) { GotPostsFull(this, new GotPostsEventArgs(details)); } }
2013 Andrey Gruber

68

PNotes.NET (version 1.1)

} Here you initialize your plugin, storing reference to host application main window and setting up plugin's menus, which will be inserted in PNotes.NET note's menus. Properties.Resources.myspc represents a small 16x16 image (most probably the social network logo) shown on menu item. The image should be stored as resource in your dll. In case you do not want to show any image, just send null instead. menuClick is the name of procedure, which processes menus clicks. Please, pay attention, that in case of _MenuPostPartial your plugin should post the selected text of _Host.ActiveTextBox, while in case of _MenuPostFull it should post the text of entire note . _MenuGetPartial and _MenuGetFull both make the same operation and distinguish is performed in PNotes.NET accordingly to menu clicked. YourSpacePost is your own class, where you implement your inner logic. It may have another methods' names than Post and Get, but return values of these methods have to be bool for Post (success or failure of posting message) and List<PostDetails> for Get. PostDetails class is defined in PluginsCore.dll. _Host.ActiveTextBox is a text area of currently active PNotes.NET notes. _Host.LimitToGet is a count of messages to retrieve from social network. _Host.ActiveCulture is a culture currently selected in PNotes.NET as a culture of UI language. It is used for searching localized string in possible localization file. public string Author { get { return "your_name_goes_here"; } } public string Version { get { return Assembly.GetExecutingAssembly().GetName().Version.ToString(); } }

public string ProductName { get { var assembly = Assembly.GetExecutingAssembly(); var customAttributes = assembly.GetCustomAttributes(typeof(AssemblyProductAttrib return customAttributes.Length > 0 ? ((AssemblyProductAttribute)customAttributes } }

public string AdditionalInfo { get { return "Uses YourSpace.NET library by J.J.Somebody (https://yourspacenet.com } Here you return your name as author of plugin, plugin's version, plugin's product name (required for update process) and additional plugin's information.

2013 Andrey Gruber

Plugins development

69

public ToolStripMenuItem MenuPostPartial { get { return _MenuPostPartial; } } public ToolStripMenuItem MenuPostFull { get { return _MenuPostFull; } } public ToolStripMenuItem MenuGetPartial { get { return _MenuGetPartial; } } public ToolStripMenuItem MenuGetFull { get { return _MenuGetFull; } } Here you return plugin's menus. public event EventHandler<GotPostsEventArgs> GotPostsPartial; public event EventHandler<GotPostsEventArgs> GotPostsFull; public event EventHandler<PostPerformedEventArgs> PostPerformed; Here you define plugin's events. GotPostsEventArgs and PostPerformedEventArgs classes are defined in PluginsCore.dll. And here is the full example:

2013 Andrey Gruber

70

PNotes.NET (version 1.1)

using using using using using

System; System.ComponentModel.Composition; System.Reflection; System.Windows.Forms; PluginsCore;

namespace pnyourspace { public class PNYourSpace : IPostPlugin { private IPluginsHost _Host; private ToolStripMenuItem _MenuPostPartial; private ToolStripMenuItem _MenuPostFull; private ToolStripMenuItem _MenuGetPartial; private ToolStripMenuItem _MenuGetFull; #region IPostPlugin Members public string Name { get { return "YourSpace"; } }

public void Init(IPluginsHost host) { _Host = host; _MenuPostPartial = new ToolStripMenuItem(Name, Properties.Resources.myspc, _MenuPostFull = new ToolStripMenuItem(Name, Properties.Resources.myspc, me _MenuGetPartial = new ToolStripMenuItem(Name, Properties.Resources.myspc, _MenuGetFull = new ToolStripMenuItem(Name, Properties.Resources.myspc, men }

private void menuClick(object sender, EventArgs e) { var item = sender as ToolStripMenuItem; if (item == null) return; if (item.Equals(_MenuPostPartial)) { RichTextBox edit = _Host.ActiveTextBox; if (edit != null) { var result = YourSpacePost.Post(edit.SelectedText, _Host.ActiveCul if (PostPerformed != null) { PostPerformed(this, new PostPerformedEventArgs(result)); } } } else if (item.Equals(_MenuPostFull)) { RichTextBox edit = _Host.ActiveTextBox; if (edit != null) {
2013 Andrey Gruber

Plugins development

71

var result = YourSpacePost.Post(edit.Text, _Host.ActiveCulture); if (PostPerformed != null) { PostPerformed(this, new PostPerformedEventArgs(result)); }

} } else if (item.Equals(_MenuGetPartial)) { var details = YourSpacePost.Get(_Host.LimitToGet, _Host.ActiveCulture) if (GotPostsPartial != null) { GotPostsPartial(this, new GotPostsEventArgs(details)); } } else if (item.Equals(_MenuGetFull)) { var details = YourSpacePost.Get(_Host.LimitToGet, _Host.ActiveCulture) if (GotPostsFull != null) { GotPostsFull(this, new GotPostsEventArgs(details)); } } } public string Author { get { return "your_name_goes_here"; } }

public string Version { get { return Assembly.GetExecutingAssembly().GetName().Version.ToString(); }

public string ProductName { get { var assembly = Assembly.GetExecutingAssembly(); var customAttributes = assembly.GetCustomAttributes(typeof(AssemblyProd return customAttributes.Length > 0 ? ((AssemblyProductAttribute)customA } }

2013 Andrey Gruber

72

PNotes.NET (version 1.1)

public ToolStripMenuItem MenuPostPartial { get { return _MenuPostPartial; } } public ToolStripMenuItem MenuPostFull { get { return _MenuPostFull; } } public ToolStripMenuItem MenuGetPartial { get { return _MenuGetPartial; } } public ToolStripMenuItem MenuGetFull { get { return _MenuGetFull; } } public event EventHandler<GotPostsEventArgs> GotPostsPartial; public event EventHandler<GotPostsEventArgs> GotPostsFull; public event EventHandler<PostPerformedEventArgs> PostPerformed; #endregion } }

15

Credits
My thanks and gratitude for great work to: Hwaci (Hipp, Wyrick & Company, Inc.) for SQLite database engine and System.Data.SQLite library. Thomas Maierhofer for NHunspell spellchecking library. Dino Chiesa for DotNetZip library. To JetBrains for ReSharper - an outstanding tool, saved me a lot of time and learned me a lot of things. To Sacha Barber for very helpful code snippets and examples. Thanks to all over the world who tests, translates and simply uses the program.

2013 Andrey Gruber