Compare commits
	
		
			2 Commits
		
	
	
		
			master
			...
			wip-gpg-he
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3ef29f1b98 | |||
| 94bd96fb66 | 
| @ -1,32 +1,37 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <!-- Generated with glade 3.22.1 --> | <!-- Generated with glade 3.38.2 --> | ||||||
| <interface> | <interface> | ||||||
|   <requires lib="gtk+" version="3.20"/> |   <requires lib="gtk+" version="3.20"/> | ||||||
|   <object class="GtkTextBuffer" id="entryTextBuffer"/> |   <object class="GtkTextBuffer" id="entryTextBuffer"/> | ||||||
|   <object class="GtkImage" id="imageDecrypt"> |   <object class="GtkImage" id="imageDecrypt"> | ||||||
|     <property name="visible">True</property> |     <property name="visible">True</property> | ||||||
|     <property name="can_focus">False</property> |     <property name="can-focus">False</property> | ||||||
|     <property name="icon_name">changes-prevent-symbolic.symbolic</property> |     <property name="icon-name">changes-prevent-symbolic.symbolic</property> | ||||||
|  |   </object> | ||||||
|  |   <object class="GtkImage" id="imageUpdateGpg"> | ||||||
|  |     <property name="visible">True</property> | ||||||
|  |     <property name="can-focus">False</property> | ||||||
|  |     <property name="icon-name">edit-copy</property> | ||||||
|   </object> |   </object> | ||||||
|   <object class="GtkPopover" id="popoverWorkspace"> |   <object class="GtkPopover" id="popoverWorkspace"> | ||||||
|     <property name="can_focus">False</property> |     <property name="can-focus">False</property> | ||||||
|     <child> |     <child> | ||||||
|       <object class="GtkBox"> |       <object class="GtkBox"> | ||||||
|         <property name="visible">True</property> |         <property name="visible">True</property> | ||||||
|         <property name="can_focus">False</property> |         <property name="can-focus">False</property> | ||||||
|         <property name="margin_left">8</property> |         <property name="margin-left">8</property> | ||||||
|         <property name="margin_right">8</property> |         <property name="margin-right">8</property> | ||||||
|         <property name="margin_top">8</property> |         <property name="margin-top">8</property> | ||||||
|         <property name="margin_bottom">8</property> |         <property name="margin-bottom">8</property> | ||||||
|         <property name="orientation">vertical</property> |         <property name="orientation">vertical</property> | ||||||
|         <property name="spacing">8</property> |         <property name="spacing">8</property> | ||||||
|         <child> |         <child> | ||||||
|           <object class="GtkSearchEntry" id="searchWorkspace"> |           <object class="GtkSearchEntry" id="searchWorkspace"> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">True</property> |             <property name="can-focus">True</property> | ||||||
|             <property name="primary_icon_name">edit-find-symbolic</property> |             <property name="primary-icon-name">edit-find-symbolic</property> | ||||||
|             <property name="primary_icon_activatable">False</property> |             <property name="primary-icon-activatable">False</property> | ||||||
|             <property name="primary_icon_sensitive">False</property> |             <property name="primary-icon-sensitive">False</property> | ||||||
|           </object> |           </object> | ||||||
|           <packing> |           <packing> | ||||||
|             <property name="expand">False</property> |             <property name="expand">False</property> | ||||||
| @ -37,16 +42,16 @@ | |||||||
|         <child> |         <child> | ||||||
|           <object class="GtkTreeView" id="treeWorkspace"> |           <object class="GtkTreeView" id="treeWorkspace"> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">True</property> |             <property name="can-focus">True</property> | ||||||
|             <property name="hscroll_policy">natural</property> |             <property name="hscroll-policy">natural</property> | ||||||
|             <property name="vscroll_policy">natural</property> |             <property name="vscroll-policy">natural</property> | ||||||
|             <property name="headers_visible">False</property> |             <property name="headers-visible">False</property> | ||||||
|             <property name="enable_search">False</property> |             <property name="enable-search">False</property> | ||||||
|             <property name="fixed_height_mode">True</property> |             <property name="fixed-height-mode">True</property> | ||||||
|             <property name="hover_selection">True</property> |             <property name="hover-selection">True</property> | ||||||
|             <property name="show_expanders">False</property> |             <property name="show-expanders">False</property> | ||||||
|             <property name="enable_grid_lines">horizontal</property> |             <property name="enable-grid-lines">horizontal</property> | ||||||
|             <property name="activate_on_single_click">True</property> |             <property name="activate-on-single-click">True</property> | ||||||
|             <child internal-child="selection"> |             <child internal-child="selection"> | ||||||
|               <object class="GtkTreeSelection" id="treeWorkspaceSelection"/> |               <object class="GtkTreeSelection" id="treeWorkspaceSelection"/> | ||||||
|             </child> |             </child> | ||||||
| @ -61,8 +66,8 @@ | |||||||
|           <object class="GtkButton" id="buttonOtherWorkspace"> |           <object class="GtkButton" id="buttonOtherWorkspace"> | ||||||
|             <property name="label" translatable="yes">Other Workspaces ...</property> |             <property name="label" translatable="yes">Other Workspaces ...</property> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">True</property> |             <property name="can-focus">True</property> | ||||||
|             <property name="receives_default">True</property> |             <property name="receives-default">True</property> | ||||||
|           </object> |           </object> | ||||||
|           <packing> |           <packing> | ||||||
|             <property name="expand">False</property> |             <property name="expand">False</property> | ||||||
| @ -75,122 +80,35 @@ | |||||||
|   </object> |   </object> | ||||||
|   <object class="GtkEntryCompletion" id="searchEntryCompletion"/> |   <object class="GtkEntryCompletion" id="searchEntryCompletion"/> | ||||||
|   <object class="GtkApplicationWindow" id="mainWindow"> |   <object class="GtkApplicationWindow" id="mainWindow"> | ||||||
|     <property name="width_request">720</property> |     <property name="width-request">720</property> | ||||||
|     <property name="height_request">405</property> |     <property name="height-request">405</property> | ||||||
|     <property name="can_focus">False</property> |     <property name="can-focus">False</property> | ||||||
|     <child type="titlebar"> |  | ||||||
|       <object class="GtkHeaderBar" id="headerBar"> |  | ||||||
|         <property name="visible">True</property> |  | ||||||
|         <property name="can_focus">False</property> |  | ||||||
|         <property name="title">MDiary</property> |  | ||||||
|         <property name="subtitle">No workspace opened.</property> |  | ||||||
|         <property name="show_close_button">True</property> |  | ||||||
|         <child> |  | ||||||
|           <object class="GtkBox"> |  | ||||||
|             <property name="visible">True</property> |  | ||||||
|             <property name="can_focus">False</property> |  | ||||||
|             <property name="spacing">6</property> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkMenuButton"> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">True</property> |  | ||||||
|                 <property name="receives_default">True</property> |  | ||||||
|                 <property name="popover">popoverWorkspace</property> |  | ||||||
|                 <child> |  | ||||||
|                   <object class="GtkBox"> |  | ||||||
|                     <property name="visible">True</property> |  | ||||||
|                     <property name="can_focus">False</property> |  | ||||||
|                     <property name="spacing">2</property> |  | ||||||
|                     <child> |  | ||||||
|                       <object class="GtkLabel"> |  | ||||||
|                         <property name="visible">True</property> |  | ||||||
|                         <property name="can_focus">False</property> |  | ||||||
|                         <property name="label" translatable="yes">Choose Workspace</property> |  | ||||||
|                       </object> |  | ||||||
|                       <packing> |  | ||||||
|                         <property name="expand">False</property> |  | ||||||
|                         <property name="fill">True</property> |  | ||||||
|                         <property name="position">0</property> |  | ||||||
|                       </packing> |  | ||||||
|                     </child> |  | ||||||
|                     <child> |  | ||||||
|                       <object class="GtkImage"> |  | ||||||
|                         <property name="visible">True</property> |  | ||||||
|                         <property name="can_focus">False</property> |  | ||||||
|                         <property name="icon_name">pan-down-symbolic</property> |  | ||||||
|                       </object> |  | ||||||
|                       <packing> |  | ||||||
|                         <property name="expand">False</property> |  | ||||||
|                         <property name="fill">True</property> |  | ||||||
|                         <property name="position">1</property> |  | ||||||
|                       </packing> |  | ||||||
|                     </child> |  | ||||||
|                   </object> |  | ||||||
|                 </child> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="expand">False</property> |  | ||||||
|                 <property name="fill">True</property> |  | ||||||
|                 <property name="position">0</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkButton" id="buttonNew"> |  | ||||||
|                 <property name="label" translatable="yes">New Entry</property> |  | ||||||
|                 <property name="visible">True</property> |  | ||||||
|                 <property name="can_focus">True</property> |  | ||||||
|                 <property name="receives_default">True</property> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="expand">False</property> |  | ||||||
|                 <property name="fill">True</property> |  | ||||||
|                 <property name="position">1</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|             <child> |  | ||||||
|               <object class="GtkButton" id="buttonDecrypt"> |  | ||||||
|                 <property name="label" translatable="yes">Decrypt GPG</property> |  | ||||||
|                 <property name="can_focus">True</property> |  | ||||||
|                 <property name="receives_default">True</property> |  | ||||||
|                 <property name="image">imageDecrypt</property> |  | ||||||
|                 <property name="always_show_image">True</property> |  | ||||||
|               </object> |  | ||||||
|               <packing> |  | ||||||
|                 <property name="expand">False</property> |  | ||||||
|                 <property name="fill">True</property> |  | ||||||
|                 <property name="position">1</property> |  | ||||||
|               </packing> |  | ||||||
|             </child> |  | ||||||
|           </object> |  | ||||||
|         </child> |  | ||||||
|       </object> |  | ||||||
|     </child> |  | ||||||
|     <child> |     <child> | ||||||
|       <object class="GtkPaned" id="mainPane"> |       <object class="GtkPaned" id="mainPane"> | ||||||
|         <property name="visible">True</property> |         <property name="visible">True</property> | ||||||
|         <property name="can_focus">True</property> |         <property name="can-focus">True</property> | ||||||
|         <property name="margin_left">2</property> |         <property name="margin-left">2</property> | ||||||
|         <property name="margin_right">2</property> |         <property name="margin-right">2</property> | ||||||
|         <property name="margin_top">2</property> |         <property name="margin-top">2</property> | ||||||
|         <property name="margin_bottom">2</property> |         <property name="margin-bottom">2</property> | ||||||
|         <property name="wide_handle">True</property> |         <property name="wide-handle">True</property> | ||||||
|         <child> |         <child> | ||||||
|           <object class="GtkBox" id="leftPaneBox"> |           <object class="GtkBox" id="leftPaneBox"> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">False</property> |             <property name="can-focus">False</property> | ||||||
|             <property name="margin_left">2</property> |             <property name="margin-left">2</property> | ||||||
|             <property name="margin_right">2</property> |             <property name="margin-right">2</property> | ||||||
|             <property name="margin_top">2</property> |             <property name="margin-top">2</property> | ||||||
|             <property name="margin_bottom">2</property> |             <property name="margin-bottom">2</property> | ||||||
|             <property name="orientation">vertical</property> |             <property name="orientation">vertical</property> | ||||||
|             <property name="spacing">4</property> |             <property name="spacing">4</property> | ||||||
|             <child> |             <child> | ||||||
|               <object class="GtkSearchEntry" id="searchEntry"> |               <object class="GtkSearchEntry" id="searchEntry"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">True</property> |                 <property name="can-focus">True</property> | ||||||
|                 <property name="primary_icon_name">edit-find-symbolic</property> |                 <property name="primary-icon-name">edit-find-symbolic</property> | ||||||
|                 <property name="primary_icon_activatable">False</property> |                 <property name="primary-icon-activatable">False</property> | ||||||
|                 <property name="primary_icon_sensitive">False</property> |                 <property name="primary-icon-sensitive">False</property> | ||||||
|                 <property name="completion">searchEntryCompletion</property> |                 <property name="completion">searchEntryCompletion</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
| @ -202,14 +120,14 @@ | |||||||
|             <child> |             <child> | ||||||
|               <object class="GtkBox" id="searchInBox"> |               <object class="GtkBox" id="searchInBox"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkCheckButton" id="checkSearchTitle"> |                   <object class="GtkCheckButton" id="checkSearchTitle"> | ||||||
|                     <property name="label" translatable="yes">Title</property> |                     <property name="label" translatable="yes">Title</property> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="receives_default">False</property> |                     <property name="receives-default">False</property> | ||||||
|                     <property name="draw_indicator">True</property> |                     <property name="draw-indicator">True</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -221,9 +139,9 @@ | |||||||
|                   <object class="GtkCheckButton" id="checkSearchSummary"> |                   <object class="GtkCheckButton" id="checkSearchSummary"> | ||||||
|                     <property name="label" translatable="yes">Summary</property> |                     <property name="label" translatable="yes">Summary</property> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="receives_default">False</property> |                     <property name="receives-default">False</property> | ||||||
|                     <property name="draw_indicator">True</property> |                     <property name="draw-indicator">True</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -235,9 +153,9 @@ | |||||||
|                   <object class="GtkCheckButton" id="checkSearchTags"> |                   <object class="GtkCheckButton" id="checkSearchTags"> | ||||||
|                     <property name="label" translatable="yes">Tags</property> |                     <property name="label" translatable="yes">Tags</property> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="receives_default">False</property> |                     <property name="receives-default">False</property> | ||||||
|                     <property name="draw_indicator">True</property> |                     <property name="draw-indicator">True</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -249,9 +167,9 @@ | |||||||
|                   <object class="GtkCheckButton" id="checkSearchText"> |                   <object class="GtkCheckButton" id="checkSearchText"> | ||||||
|                     <property name="label" translatable="yes">Text</property> |                     <property name="label" translatable="yes">Text</property> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="receives_default">False</property> |                     <property name="receives-default">False</property> | ||||||
|                     <property name="draw_indicator">True</property> |                     <property name="draw-indicator">True</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -269,7 +187,7 @@ | |||||||
|             <child> |             <child> | ||||||
|               <object class="GtkSeparator"> |               <object class="GtkSeparator"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="expand">False</property> |                 <property name="expand">False</property> | ||||||
| @ -280,15 +198,15 @@ | |||||||
|             <child> |             <child> | ||||||
|               <object class="GtkBox" id="boxDateEntry"> |               <object class="GtkBox" id="boxDateEntry"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|                 <property name="spacing">4</property> |                 <property name="spacing">4</property> | ||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkEntry" id="dateStart"> |                   <object class="GtkEntry" id="dateStart"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="max_length">10</property> |                     <property name="max-length">10</property> | ||||||
|                     <property name="width_chars">10</property> |                     <property name="width-chars">10</property> | ||||||
|                     <property name="secondary_icon_tooltip_text" translatable="yes">fg</property> |                     <property name="secondary-icon-tooltip-text" translatable="yes">fg</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">True</property> |                     <property name="expand">True</property> | ||||||
| @ -299,9 +217,9 @@ | |||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkLabel" id="label_date_to_date"> |                   <object class="GtkLabel" id="label_date_to_date"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">False</property> |                     <property name="can-focus">False</property> | ||||||
|                     <property name="label" translatable="yes"><a href="">to</a></property> |                     <property name="label" translatable="yes"><a href="">to</a></property> | ||||||
|                     <property name="use_markup">True</property> |                     <property name="use-markup">True</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -312,9 +230,9 @@ | |||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkEntry" id="dateEnd"> |                   <object class="GtkEntry" id="dateEnd"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="max_length">10</property> |                     <property name="max-length">10</property> | ||||||
|                     <property name="width_chars">10</property> |                     <property name="width-chars">10</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">True</property> |                     <property name="expand">True</property> | ||||||
| @ -332,7 +250,7 @@ | |||||||
|             <child> |             <child> | ||||||
|               <object class="GtkSeparator"> |               <object class="GtkSeparator"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="expand">False</property> |                 <property name="expand">False</property> | ||||||
| @ -344,8 +262,8 @@ | |||||||
|               <object class="GtkButton" id="buttonClearSearch"> |               <object class="GtkButton" id="buttonClearSearch"> | ||||||
|                 <property name="label" translatable="yes">View all</property> |                 <property name="label" translatable="yes">View all</property> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">True</property> |                 <property name="can-focus">True</property> | ||||||
|                 <property name="receives_default">True</property> |                 <property name="receives-default">True</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="expand">False</property> |                 <property name="expand">False</property> | ||||||
| @ -362,24 +280,24 @@ | |||||||
|         <child> |         <child> | ||||||
|           <object class="GtkPaned" id="rightPane"> |           <object class="GtkPaned" id="rightPane"> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">True</property> |             <property name="can-focus">True</property> | ||||||
|             <property name="margin_left">2</property> |             <property name="margin-left">2</property> | ||||||
|             <property name="margin_right">2</property> |             <property name="margin-right">2</property> | ||||||
|             <property name="margin_top">2</property> |             <property name="margin-top">2</property> | ||||||
|             <property name="margin_bottom">2</property> |             <property name="margin-bottom">2</property> | ||||||
|             <property name="orientation">vertical</property> |             <property name="orientation">vertical</property> | ||||||
|             <property name="wide_handle">True</property> |             <property name="wide-handle">True</property> | ||||||
|             <child> |             <child> | ||||||
|               <object class="GtkScrolledWindow"> |               <object class="GtkScrolledWindow"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">True</property> |                 <property name="can-focus">True</property> | ||||||
|                 <property name="shadow_type">in</property> |                 <property name="shadow-type">in</property> | ||||||
|                 <property name="propagate_natural_height">True</property> |                 <property name="propagate-natural-height">True</property> | ||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkTreeView" id="entryListView"> |                   <object class="GtkTreeView" id="entryListView"> | ||||||
|                     <property name="height_request">300</property> |                     <property name="height-request">300</property> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <child internal-child="selection"> |                     <child internal-child="selection"> | ||||||
|                       <object class="GtkTreeSelection" id="entryListSelection"/> |                       <object class="GtkTreeSelection" id="entryListSelection"/> | ||||||
|                     </child> |                     </child> | ||||||
| @ -394,24 +312,24 @@ | |||||||
|             <child> |             <child> | ||||||
|               <object class="GtkBox"> |               <object class="GtkBox"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|                 <property name="orientation">vertical</property> |                 <property name="orientation">vertical</property> | ||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkBox"> |                   <object class="GtkBox"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">False</property> |                     <property name="can-focus">False</property> | ||||||
|                     <property name="margin_left">4</property> |                     <property name="margin-left">4</property> | ||||||
|                     <property name="margin_right">4</property> |                     <property name="margin-right">4</property> | ||||||
|                     <property name="margin_top">2</property> |                     <property name="margin-top">2</property> | ||||||
|                     <property name="margin_bottom">2</property> |                     <property name="margin-bottom">2</property> | ||||||
|                     <child> |                     <child> | ||||||
|                       <object class="GtkEventBox" id="summaryEventBox"> |                       <object class="GtkEventBox" id="summaryEventBox"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
|                         <property name="can_focus">False</property> |                         <property name="can-focus">False</property> | ||||||
|                         <child> |                         <child> | ||||||
|                           <object class="GtkLabel" id="labelSummary"> |                           <object class="GtkLabel" id="labelSummary"> | ||||||
|                             <property name="visible">True</property> |                             <property name="visible">True</property> | ||||||
|                             <property name="can_focus">False</property> |                             <property name="can-focus">False</property> | ||||||
|                             <property name="label" translatable="yes">Please select an entry in the list above.</property> |                             <property name="label" translatable="yes">Please select an entry in the list above.</property> | ||||||
|                             <property name="wrap">True</property> |                             <property name="wrap">True</property> | ||||||
|                             <attributes> |                             <attributes> | ||||||
| @ -439,7 +357,7 @@ | |||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkSeparator"> |                   <object class="GtkSeparator"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">False</property> |                     <property name="can-focus">False</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -450,22 +368,22 @@ | |||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkStack" id="stackRenderMode"> |                   <object class="GtkStack" id="stackRenderMode"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">False</property> |                     <property name="can-focus">False</property> | ||||||
|                     <child> |                     <child> | ||||||
|                       <object class="GtkScrolledWindow" id="entryTextScrollArea"> |                       <object class="GtkScrolledWindow" id="entryTextScrollArea"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
|                         <property name="can_focus">True</property> |                         <property name="can-focus">True</property> | ||||||
|                         <property name="shadow_type">in</property> |                         <property name="shadow-type">in</property> | ||||||
|                         <child> |                         <child> | ||||||
|                           <object class="GtkTextView" id="entryText"> |                           <object class="GtkTextView" id="entryText"> | ||||||
|                             <property name="visible">True</property> |                             <property name="visible">True</property> | ||||||
|                             <property name="can_focus">True</property> |                             <property name="can-focus">True</property> | ||||||
|                             <property name="editable">False</property> |                             <property name="editable">False</property> | ||||||
|                             <property name="wrap_mode">word-char</property> |                             <property name="wrap-mode">word-char</property> | ||||||
|                             <property name="left_margin">4</property> |                             <property name="left-margin">4</property> | ||||||
|                             <property name="right_margin">4</property> |                             <property name="right-margin">4</property> | ||||||
|                             <property name="top_margin">4</property> |                             <property name="top-margin">4</property> | ||||||
|                             <property name="bottom_margin">4</property> |                             <property name="bottom-margin">4</property> | ||||||
|                             <property name="buffer">entryTextBuffer</property> |                             <property name="buffer">entryTextBuffer</property> | ||||||
|                           </object> |                           </object> | ||||||
|                         </child> |                         </child> | ||||||
| @ -496,14 +414,118 @@ | |||||||
|         </child> |         </child> | ||||||
|       </object> |       </object> | ||||||
|     </child> |     </child> | ||||||
|  |     <child type="titlebar"> | ||||||
|  |       <object class="GtkHeaderBar" id="headerBar"> | ||||||
|  |         <property name="visible">True</property> | ||||||
|  |         <property name="can-focus">False</property> | ||||||
|  |         <property name="title">MDiary</property> | ||||||
|  |         <property name="subtitle">No workspace opened.</property> | ||||||
|  |         <property name="show-close-button">True</property> | ||||||
|  |         <child> | ||||||
|  |           <object class="GtkBox"> | ||||||
|  |             <property name="visible">True</property> | ||||||
|  |             <property name="can-focus">False</property> | ||||||
|  |             <property name="spacing">6</property> | ||||||
|  |             <child> | ||||||
|  |               <object class="GtkMenuButton"> | ||||||
|  |                 <property name="visible">True</property> | ||||||
|  |                 <property name="can-focus">True</property> | ||||||
|  |                 <property name="receives-default">True</property> | ||||||
|  |                 <property name="popover">popoverWorkspace</property> | ||||||
|  |                 <child> | ||||||
|  |                   <object class="GtkBox"> | ||||||
|  |                     <property name="visible">True</property> | ||||||
|  |                     <property name="can-focus">False</property> | ||||||
|  |                     <property name="spacing">2</property> | ||||||
|  |                     <child> | ||||||
|  |                       <object class="GtkLabel"> | ||||||
|  |                         <property name="visible">True</property> | ||||||
|  |                         <property name="can-focus">False</property> | ||||||
|  |                         <property name="label" translatable="yes">Choose Workspace</property> | ||||||
|  |                       </object> | ||||||
|  |                       <packing> | ||||||
|  |                         <property name="expand">False</property> | ||||||
|  |                         <property name="fill">True</property> | ||||||
|  |                         <property name="position">0</property> | ||||||
|  |                       </packing> | ||||||
|  |                     </child> | ||||||
|  |                     <child> | ||||||
|  |                       <object class="GtkImage"> | ||||||
|  |                         <property name="visible">True</property> | ||||||
|  |                         <property name="can-focus">False</property> | ||||||
|  |                         <property name="icon-name">pan-down-symbolic</property> | ||||||
|  |                       </object> | ||||||
|  |                       <packing> | ||||||
|  |                         <property name="expand">False</property> | ||||||
|  |                         <property name="fill">True</property> | ||||||
|  |                         <property name="position">1</property> | ||||||
|  |                       </packing> | ||||||
|  |                     </child> | ||||||
|  |                   </object> | ||||||
|  |                 </child> | ||||||
|  |               </object> | ||||||
|  |               <packing> | ||||||
|  |                 <property name="expand">False</property> | ||||||
|  |                 <property name="fill">True</property> | ||||||
|  |                 <property name="position">0</property> | ||||||
|  |               </packing> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <object class="GtkButton" id="buttonDecrypt"> | ||||||
|  |                 <property name="label" translatable="yes">Decrypt GPG</property> | ||||||
|  |                 <property name="can-focus">True</property> | ||||||
|  |                 <property name="receives-default">True</property> | ||||||
|  |                 <property name="image">imageDecrypt</property> | ||||||
|  |                 <property name="always-show-image">True</property> | ||||||
|  |               </object> | ||||||
|  |               <packing> | ||||||
|  |                 <property name="expand">False</property> | ||||||
|  |                 <property name="fill">True</property> | ||||||
|  |                 <property name="position">1</property> | ||||||
|  |               </packing> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <object class="GtkButton" id="buttonNew"> | ||||||
|  |                 <property name="label" translatable="yes">New Entry</property> | ||||||
|  |                 <property name="visible">True</property> | ||||||
|  |                 <property name="can-focus">True</property> | ||||||
|  |                 <property name="receives-default">True</property> | ||||||
|  |               </object> | ||||||
|  |               <packing> | ||||||
|  |                 <property name="expand">False</property> | ||||||
|  |                 <property name="fill">True</property> | ||||||
|  |                 <property name="position">1</property> | ||||||
|  |               </packing> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <object class="GtkButton" id="buttonUpdateGpg"> | ||||||
|  |                 <property name="label" translatable="yes">Update GPG</property> | ||||||
|  |                 <property name="can-focus">True</property> | ||||||
|  |                 <property name="receives-default">True</property> | ||||||
|  |                 <property name="image">imageUpdateGpg</property> | ||||||
|  |                 <property name="always-show-image">True</property> | ||||||
|  |                 <style> | ||||||
|  |                   <class name="suggested-action"/> | ||||||
|  |                 </style> | ||||||
|  |               </object> | ||||||
|  |               <packing> | ||||||
|  |                 <property name="expand">False</property> | ||||||
|  |                 <property name="fill">True</property> | ||||||
|  |                 <property name="position">3</property> | ||||||
|  |               </packing> | ||||||
|  |             </child> | ||||||
|  |           </object> | ||||||
|  |         </child> | ||||||
|  |       </object> | ||||||
|  |     </child> | ||||||
|   </object> |   </object> | ||||||
|   <object class="GtkPopover" id="popoverDate"> |   <object class="GtkPopover" id="popoverDate"> | ||||||
|     <property name="can_focus">False</property> |     <property name="can-focus">False</property> | ||||||
|     <property name="relative_to">dateStart</property> |     <property name="relative-to">dateStart</property> | ||||||
|     <child> |     <child> | ||||||
|       <object class="GtkCalendar" id="calendarRange"> |       <object class="GtkCalendar" id="calendarRange"> | ||||||
|         <property name="visible">True</property> |         <property name="visible">True</property> | ||||||
|         <property name="can_focus">True</property> |         <property name="can-focus">True</property> | ||||||
|         <property name="year">2017</property> |         <property name="year">2017</property> | ||||||
|         <property name="month">1</property> |         <property name="month">1</property> | ||||||
|         <property name="day">1</property> |         <property name="day">1</property> | ||||||
| @ -511,84 +533,72 @@ | |||||||
|     </child> |     </child> | ||||||
|   </object> |   </object> | ||||||
|   <object class="GtkWindow" id="settingsDialog"> |   <object class="GtkWindow" id="settingsDialog"> | ||||||
|     <property name="can_focus">False</property> |     <property name="can-focus">False</property> | ||||||
|     <property name="window_position">center</property> |     <property name="window-position">center</property> | ||||||
|     <property name="destroy_with_parent">True</property> |     <property name="destroy-with-parent">True</property> | ||||||
|     <child type="titlebar"> |  | ||||||
|       <object class="GtkHeaderBar"> |  | ||||||
|         <property name="visible">True</property> |  | ||||||
|         <property name="can_focus">False</property> |  | ||||||
|         <property name="title">Preferences</property> |  | ||||||
|         <property name="has_subtitle">False</property> |  | ||||||
|         <property name="show_close_button">True</property> |  | ||||||
|         <property name="decoration_layout">close:</property> |  | ||||||
|         <child> |  | ||||||
|           <placeholder/> |  | ||||||
|         </child> |  | ||||||
|       </object> |  | ||||||
|     </child> |  | ||||||
|     <child> |     <child> | ||||||
|       <object class="GtkBox"> |       <object class="GtkBox"> | ||||||
|         <property name="visible">True</property> |         <property name="visible">True</property> | ||||||
|         <property name="can_focus">False</property> |         <property name="can-focus">False</property> | ||||||
|         <property name="margin_left">4</property> |         <property name="margin-left">4</property> | ||||||
|         <property name="margin_right">4</property> |         <property name="margin-right">4</property> | ||||||
|         <property name="margin_top">4</property> |         <property name="margin-top">4</property> | ||||||
|         <property name="margin_bottom">4</property> |         <property name="margin-bottom">4</property> | ||||||
|         <property name="orientation">vertical</property> |         <property name="orientation">vertical</property> | ||||||
|         <property name="spacing">4</property> |         <property name="spacing">4</property> | ||||||
|         <child> |         <child> | ||||||
|  |           <!-- n-columns=3 n-rows=3 --> | ||||||
|           <object class="GtkGrid"> |           <object class="GtkGrid"> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">False</property> |             <property name="can-focus">False</property> | ||||||
|             <property name="row_spacing">4</property> |             <property name="row-spacing">4</property> | ||||||
|             <property name="column_spacing">4</property> |             <property name="column-spacing">4</property> | ||||||
|             <child> |             <child> | ||||||
|               <object class="GtkLabel"> |               <object class="GtkLabel"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|                 <property name="halign">end</property> |                 <property name="halign">end</property> | ||||||
|                 <property name="label" translatable="yes">Entry display mode:</property> |                 <property name="label" translatable="yes">Entry display mode:</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="left_attach">0</property> |                 <property name="left-attach">0</property> | ||||||
|                 <property name="top_attach">0</property> |                 <property name="top-attach">0</property> | ||||||
|               </packing> |               </packing> | ||||||
|             </child> |             </child> | ||||||
|             <child> |             <child> | ||||||
|               <object class="GtkComboBoxText" id="comboDisplayMode"> |               <object class="GtkComboBoxText" id="comboDisplayMode"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="left_attach">1</property> |                 <property name="left-attach">1</property> | ||||||
|                 <property name="top_attach">0</property> |                 <property name="top-attach">0</property> | ||||||
|               </packing> |               </packing> | ||||||
|             </child> |             </child> | ||||||
|             <child> |             <child> | ||||||
|               <object class="GtkLabel"> |               <object class="GtkLabel"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|                 <property name="halign">end</property> |                 <property name="halign">end</property> | ||||||
|                 <property name="label" translatable="yes">New entry date format:</property> |                 <property name="label" translatable="yes">New entry date format:</property> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="left_attach">0</property> |                 <property name="left-attach">0</property> | ||||||
|                 <property name="top_attach">1</property> |                 <property name="top-attach">1</property> | ||||||
|               </packing> |               </packing> | ||||||
|             </child> |             </child> | ||||||
|             <child> |             <child> | ||||||
|               <object class="GtkBox"> |               <object class="GtkBox"> | ||||||
|                 <property name="visible">True</property> |                 <property name="visible">True</property> | ||||||
|                 <property name="can_focus">False</property> |                 <property name="can-focus">False</property> | ||||||
|                 <child> |                 <child> | ||||||
|                   <object class="GtkStack" id="stackNewDateFormat"> |                   <object class="GtkStack" id="stackNewDateFormat"> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">False</property> |                     <property name="can-focus">False</property> | ||||||
|                     <child> |                     <child> | ||||||
|                       <object class="GtkComboBoxText" id="comboNewDateFormat"> |                       <object class="GtkComboBoxText" id="comboNewDateFormat"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
|                         <property name="can_focus">False</property> |                         <property name="can-focus">False</property> | ||||||
|                       </object> |                       </object> | ||||||
|                       <packing> |                       <packing> | ||||||
|                         <property name="name">page0</property> |                         <property name="name">page0</property> | ||||||
| @ -598,7 +608,7 @@ | |||||||
|                     <child> |                     <child> | ||||||
|                       <object class="GtkEntry" id="entryNewDateFormat"> |                       <object class="GtkEntry" id="entryNewDateFormat"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
|                         <property name="can_focus">True</property> |                         <property name="can-focus">True</property> | ||||||
|                       </object> |                       </object> | ||||||
|                       <packing> |                       <packing> | ||||||
|                         <property name="name">page1</property> |                         <property name="name">page1</property> | ||||||
| @ -617,9 +627,9 @@ | |||||||
|                   <object class="GtkButton" id="buttonCustomNewFileDateFormat"> |                   <object class="GtkButton" id="buttonCustomNewFileDateFormat"> | ||||||
|                     <property name="label" translatable="yes">...</property> |                     <property name="label" translatable="yes">...</property> | ||||||
|                     <property name="visible">True</property> |                     <property name="visible">True</property> | ||||||
|                     <property name="can_focus">True</property> |                     <property name="can-focus">True</property> | ||||||
|                     <property name="receives_default">True</property> |                     <property name="receives-default">True</property> | ||||||
|                     <property name="tooltip_text" translatable="yes">Use custom format</property> |                     <property name="tooltip-text" translatable="yes">Use custom format</property> | ||||||
|                   </object> |                   </object> | ||||||
|                   <packing> |                   <packing> | ||||||
|                     <property name="expand">False</property> |                     <property name="expand">False</property> | ||||||
| @ -629,10 +639,25 @@ | |||||||
|                 </child> |                 </child> | ||||||
|               </object> |               </object> | ||||||
|               <packing> |               <packing> | ||||||
|                 <property name="left_attach">1</property> |                 <property name="left-attach">1</property> | ||||||
|                 <property name="top_attach">1</property> |                 <property name="top-attach">1</property> | ||||||
|               </packing> |               </packing> | ||||||
|             </child> |             </child> | ||||||
|  |             <child> | ||||||
|  |               <placeholder/> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <placeholder/> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <placeholder/> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <placeholder/> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <placeholder/> | ||||||
|  |             </child> | ||||||
|           </object> |           </object> | ||||||
|           <packing> |           <packing> | ||||||
|             <property name="expand">False</property> |             <property name="expand">False</property> | ||||||
| @ -644,8 +669,8 @@ | |||||||
|           <object class="GtkButton" id="buttonOpenWorkspaceFolder"> |           <object class="GtkButton" id="buttonOpenWorkspaceFolder"> | ||||||
|             <property name="label" translatable="yes">Open Workspace in File Browser</property> |             <property name="label" translatable="yes">Open Workspace in File Browser</property> | ||||||
|             <property name="visible">True</property> |             <property name="visible">True</property> | ||||||
|             <property name="can_focus">True</property> |             <property name="can-focus">True</property> | ||||||
|             <property name="receives_default">True</property> |             <property name="receives-default">True</property> | ||||||
|           </object> |           </object> | ||||||
|           <packing> |           <packing> | ||||||
|             <property name="expand">False</property> |             <property name="expand">False</property> | ||||||
| @ -655,5 +680,18 @@ | |||||||
|         </child> |         </child> | ||||||
|       </object> |       </object> | ||||||
|     </child> |     </child> | ||||||
|  |     <child type="titlebar"> | ||||||
|  |       <object class="GtkHeaderBar"> | ||||||
|  |         <property name="visible">True</property> | ||||||
|  |         <property name="can-focus">False</property> | ||||||
|  |         <property name="title">Preferences</property> | ||||||
|  |         <property name="has-subtitle">False</property> | ||||||
|  |         <property name="show-close-button">True</property> | ||||||
|  |         <property name="decoration-layout">close:</property> | ||||||
|  |         <child> | ||||||
|  |           <placeholder/> | ||||||
|  |         </child> | ||||||
|  |       </object> | ||||||
|  |     </child> | ||||||
|   </object> |   </object> | ||||||
| </interface> | </interface> | ||||||
|  | |||||||
| @ -250,6 +250,8 @@ static void mainWindow_configure_treeView(struct mainWindow *mainWindow) | |||||||
| 							G_TYPE_POINTER, | 							G_TYPE_POINTER, | ||||||
| 							G_TYPE_STRING, | 							G_TYPE_STRING, | ||||||
| 							G_TYPE_STRING, | 							G_TYPE_STRING, | ||||||
|  | 							G_TYPE_STRING, | ||||||
|  | 							G_TYPE_STRING, | ||||||
| 							G_TYPE_STRING); | 							G_TYPE_STRING); | ||||||
| 	mainWindow->entryListFiltered = GTK_TREE_MODEL_FILTER(gtk_tree_model_filter_new( | 	mainWindow->entryListFiltered = GTK_TREE_MODEL_FILTER(gtk_tree_model_filter_new( | ||||||
| 								      GTK_TREE_MODEL(mainWindow->entryListStore), | 								      GTK_TREE_MODEL(mainWindow->entryListStore), | ||||||
| @ -425,6 +427,10 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow) | |||||||
| 			 "clicked", | 			 "clicked", | ||||||
| 			 (GCallback) mainWindow_decrypt_gpg_clicked, | 			 (GCallback) mainWindow_decrypt_gpg_clicked, | ||||||
| 			 mainWindow); | 			 mainWindow); | ||||||
|  | 	g_signal_connect(mainWindow->buttonUpdateGpg, | ||||||
|  | 			 "clicked", | ||||||
|  | 			 (GCallback) mainWindow_update_gpg_clicked, | ||||||
|  | 			 mainWindow); | ||||||
| 
 | 
 | ||||||
| 	g_signal_connect(mainWindow->summaryEventBox, | 	g_signal_connect(mainWindow->summaryEventBox, | ||||||
| 			 "button-press-event", | 			 "button-press-event", | ||||||
| @ -655,6 +661,7 @@ struct mainWindow *mainWindow_new() | |||||||
| 	mainWindow->labelDateToDate	  = GTK_WIDGET(gtk_builder_get_object(builder, "label_date_to_date")); | 	mainWindow->labelDateToDate	  = GTK_WIDGET(gtk_builder_get_object(builder, "label_date_to_date")); | ||||||
| 	mainWindow->buttonNew		  = GTK_WIDGET(gtk_builder_get_object(builder, "buttonNew")); | 	mainWindow->buttonNew		  = GTK_WIDGET(gtk_builder_get_object(builder, "buttonNew")); | ||||||
| 	mainWindow->buttonDecrypt	  = GTK_WIDGET(gtk_builder_get_object(builder, "buttonDecrypt")); | 	mainWindow->buttonDecrypt	  = GTK_WIDGET(gtk_builder_get_object(builder, "buttonDecrypt")); | ||||||
|  | 	mainWindow->buttonUpdateGpg	  = GTK_WIDGET(gtk_builder_get_object(builder, "buttonUpdateGpg")); | ||||||
| 	mainWindow->stackRenderMode	  = GTK_WIDGET(gtk_builder_get_object(builder, "stackRenderMode")); | 	mainWindow->stackRenderMode	  = GTK_WIDGET(gtk_builder_get_object(builder, "stackRenderMode")); | ||||||
| 	mainWindow->entryListView         = GTK_TREE_VIEW(gtk_builder_get_object(builder, "entryListView")); | 	mainWindow->entryListView         = GTK_TREE_VIEW(gtk_builder_get_object(builder, "entryListView")); | ||||||
| 	mainWindow->entryListSelection    = GTK_TREE_SELECTION(gtk_builder_get_object(builder, "entryListSelection")); | 	mainWindow->entryListSelection    = GTK_TREE_SELECTION(gtk_builder_get_object(builder, "entryListSelection")); | ||||||
| @ -854,6 +861,23 @@ static void mainWindow_set_text(struct mainWindow *mainWindow, gchar *text, gcha | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * @brief mainWindow_getTempFile returns the path to the temporary file (may not exist) for the entry generated from its UUID | ||||||
|  |  * @param uuid the UUID | ||||||
|  |  * @return the full path th | ||||||
|  |  */ | ||||||
|  | gchar *mainWindow_getTempFile(gchar *uuid) | ||||||
|  | { | ||||||
|  | 	GString *tempfile = NULL; | ||||||
|  | 	gchar *str = NULL; | ||||||
|  | 
 | ||||||
|  | 	tempfile = g_string_new(""); | ||||||
|  | 	g_string_printf(tempfile, "/tmp/%s.mdiary", uuid); | ||||||
|  | 	str = tempfile->str; | ||||||
|  | 	g_string_free(tempfile, false); | ||||||
|  | 	return str; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * @brief mainWindow_entrySelected is the callback when the user selects a diary entry. |  * @brief mainWindow_entrySelected is the callback when the user selects a diary entry. | ||||||
|  * @param widget N/A |  * @param widget N/A | ||||||
| @ -870,6 +894,7 @@ void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data) | |||||||
| 	gchar *title; | 	gchar *title; | ||||||
| 	gchar *summary; | 	gchar *summary; | ||||||
| 	gchar *temp; | 	gchar *temp; | ||||||
|  | 	gchar *tempfile; | ||||||
| 
 | 
 | ||||||
| 	selection = gtk_tree_view_get_selection(mainWindow->entryListView); | 	selection = gtk_tree_view_get_selection(mainWindow->entryListView); | ||||||
| 	if (gtk_tree_selection_get_selected(selection, &model, &iter)) { | 	if (gtk_tree_selection_get_selected(selection, &model, &iter)) { | ||||||
| @ -887,6 +912,14 @@ void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data) | |||||||
| 		g_free(title); | 		g_free(title); | ||||||
| 		g_free(summary); | 		g_free(summary); | ||||||
| 		g_free(temp); | 		g_free(temp); | ||||||
|  | 
 | ||||||
|  | 		/* Check for GPG update */ | ||||||
|  | 		gtk_tree_model_get(model, &iter, COL_UUID, &temp, -1); | ||||||
|  | 		tempfile = mainWindow_getTempFile(temp); | ||||||
|  | 		gtk_widget_set_visible(mainWindow->buttonUpdateGpg, | ||||||
|  | 				       (g_file_test(tempfile, G_FILE_TEST_EXISTS))); | ||||||
|  | 		g_free(tempfile); | ||||||
|  | 		g_free(temp); | ||||||
| 	} else { | 	} else { | ||||||
| 		mainWindow_set_text(mainWindow, "", ""); | 		mainWindow_set_text(mainWindow, "", ""); | ||||||
| 		gtk_label_set_text(GTK_LABEL(mainWindow->labelSummary), "Please select an entry in the list above."); | 		gtk_label_set_text(GTK_LABEL(mainWindow->labelSummary), "Please select an entry in the list above."); | ||||||
| @ -904,7 +937,7 @@ void mainWindow_openExternalEditor(gchar *path) | |||||||
| 	GAppInfo *info; | 	GAppInfo *info; | ||||||
| 	GList *files = NULL; | 	GList *files = NULL; | ||||||
| 
 | 
 | ||||||
| 	g_info("Opening entry in external editor."); | 	g_warning("Opening entry %s in external editor.", path); | ||||||
| 	file = g_file_new_for_path(path); | 	file = g_file_new_for_path(path); | ||||||
| 	info = g_file_query_default_handler(file, NULL, NULL); | 	info = g_file_query_default_handler(file, NULL, NULL); | ||||||
| 	files = g_list_append(files, (gpointer) file); | 	files = g_list_append(files, (gpointer) file); | ||||||
| @ -926,12 +959,54 @@ void mainWindow_entryActivated(GtkWidget *widget, GtkTreePath *path, GtkTreeView | |||||||
| 	GtkTreeIter iter; | 	GtkTreeIter iter; | ||||||
| 	GtkTreeView *treeview = (GtkTreeView*) widget; | 	GtkTreeView *treeview = (GtkTreeView*) widget; | ||||||
| 	gchar *name; | 	gchar *name; | ||||||
|  | 	gchar *ext; | ||||||
|  | 	gchar *tempfile; | ||||||
|  | 	gchar *uuid; | ||||||
|  | 	gchar *content; | ||||||
|  | 	FILE *fd; | ||||||
| 
 | 
 | ||||||
| 	model = gtk_tree_view_get_model(treeview); | 	model = gtk_tree_view_get_model(treeview); | ||||||
| 
 | 
 | ||||||
| 	if (gtk_tree_model_get_iter(model, &iter, path)) { | 	if (gtk_tree_model_get_iter(model, &iter, path)) { | ||||||
| 		gtk_tree_model_get(model, &iter, COL_URL, &name, -1); | 		gtk_tree_model_get(model, &iter, COL_URL, &name, -1); | ||||||
| 		mainWindow_openExternalEditor(name); | 		if (!name) | ||||||
|  | 			return; | ||||||
|  | 
 | ||||||
|  | 		ext = strrchr(name, '.'); | ||||||
|  | 		if (!strcmp(ext, ".gpg")) { /* Encrypted file -> Create decrypted copy in /tmp */ | ||||||
|  | 			gtk_tree_model_get(model, &iter, COL_UUID, &uuid, -1); | ||||||
|  | 			if (uuid) { | ||||||
|  | 				tempfile = mainWindow_getTempFile(uuid); | ||||||
|  | 				fd = fopen(tempfile, "r"); | ||||||
|  | 				if (false) { | ||||||
|  | 					g_warning("Decryption target already exists. Leaving as is and opening."); | ||||||
|  | 					fclose(fd); | ||||||
|  | 				} else { | ||||||
|  | 					fd = fopen(tempfile, "w"); | ||||||
|  | 					if (fd) { | ||||||
|  | 						gtk_tree_model_get(model, &iter, COL_HEADER, &content, -1); | ||||||
|  | 						fputs(content, fd); | ||||||
|  | 						fputs("\n", fd); | ||||||
|  | 						g_free(content); | ||||||
|  | 
 | ||||||
|  | 						gtk_tree_model_get(model, &iter, COL_TEXT, &content, -1); | ||||||
|  | 						fputs(content, fd); | ||||||
|  | 						g_free(content); | ||||||
|  | 
 | ||||||
|  | 						fclose(fd); | ||||||
|  | 					} else { | ||||||
|  | 						g_error("Could not open decryption target."); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				mainWindow_openExternalEditor(tempfile); | ||||||
|  | 				g_free(tempfile); | ||||||
|  | 				g_free(uuid); | ||||||
|  | 			} | ||||||
|  | 		} else { /* Regular file -> Open directly */ | ||||||
|  | 			mainWindow_openExternalEditor(name); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		g_free(name); | 		g_free(name); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @ -1283,6 +1358,17 @@ void mainWindow_decrypt_gpg_clicked(GtkWidget *widget, gpointer user_data) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void mainWindow_update_gpg_clicked(GtkWidget *widget, gpointer user_data) | ||||||
|  | { | ||||||
|  | 	struct mainWindow *mainWindow = (struct mainWindow *)user_data; | ||||||
|  | 	gtk_widget_set_visible(mainWindow->buttonUpdateGpg, false); | ||||||
|  | 	g_print("Not yet implemented."); | ||||||
|  | 
 | ||||||
|  | 	// Delete <old name>.bak if exists
 | ||||||
|  | 	// Move existing GPG to <old name>.bak
 | ||||||
|  | 	// encrypt tmp/uuid file to <old name>
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * @brief mainWindow_toggleSummaryWrap toggles line-wrapping and ellipsize on the summary |  * @brief mainWindow_toggleSummaryWrap toggles line-wrapping and ellipsize on the summary | ||||||
|  * @param widget |  * @param widget | ||||||
|  | |||||||
| @ -47,6 +47,7 @@ struct mainWindow { | |||||||
| 	GtkWidget *labelDateToDate; | 	GtkWidget *labelDateToDate; | ||||||
| 	GtkWidget *buttonNew; | 	GtkWidget *buttonNew; | ||||||
| 	GtkWidget *buttonDecrypt; | 	GtkWidget *buttonDecrypt; | ||||||
|  | 	GtkWidget *buttonUpdateGpg; | ||||||
| 	GtkWidget *webkitView; | 	GtkWidget *webkitView; | ||||||
| 	GtkWidget *webkitScrollArea; | 	GtkWidget *webkitScrollArea; | ||||||
| 	GtkWidget *stackRenderMode; | 	GtkWidget *stackRenderMode; | ||||||
| @ -122,6 +123,7 @@ void mainWindow_add_recent_workspace(struct mainWindow *mainWindow, gchar *path, | |||||||
| void mainWindow_switch_workspace(struct mainWindow *mainWindow, gchar *path, gboolean gpg_enabled); | void mainWindow_switch_workspace(struct mainWindow *mainWindow, gchar *path, gboolean gpg_enabled); | ||||||
| void mainWindow_new_entry_clicked(GtkWidget *widget, gpointer user_data); | void mainWindow_new_entry_clicked(GtkWidget *widget, gpointer user_data); | ||||||
| void mainWindow_decrypt_gpg_clicked(GtkWidget *widget, gpointer user_data); | void mainWindow_decrypt_gpg_clicked(GtkWidget *widget, gpointer user_data); | ||||||
|  | void mainWindow_update_gpg_clicked(GtkWidget *widget, gpointer user_data); | ||||||
| void mainWindow_renderer_set(struct mainWindow *mainWindow, enum renderer_mode state); | void mainWindow_renderer_set(struct mainWindow *mainWindow, enum renderer_mode state); | ||||||
| void mainWindow_settings_show(struct mainWindow *mainWindow); | void mainWindow_settings_show(struct mainWindow *mainWindow); | ||||||
| gboolean mainWindow_toggleSummaryWrap(GtkWidget *widget, GdkEvent *event, gpointer user_data); | gboolean mainWindow_toggleSummaryWrap(GtkWidget *widget, GdkEvent *event, gpointer user_data); | ||||||
|  | |||||||
							
								
								
									
										22
									
								
								src/mdiary.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/mdiary.c
									
									
									
									
									
								
							| @ -261,6 +261,7 @@ static void mdiary_add_file_to_store(struct mdiary_scanner *mdiary_scanner, | |||||||
| 	GList *tagList = NULL; | 	GList *tagList = NULL; | ||||||
| 	gchar *summary = NULL; | 	gchar *summary = NULL; | ||||||
| 	GString *text  = NULL; | 	GString *text  = NULL; | ||||||
|  | 	GString *header = NULL; | ||||||
| 	guint header_state = 0; | 	guint header_state = 0; | ||||||
| 
 | 
 | ||||||
| 	GList *l; | 	GList *l; | ||||||
| @ -284,6 +285,13 @@ static void mdiary_add_file_to_store(struct mdiary_scanner *mdiary_scanner, | |||||||
| 	while (line = (content ? mdiary_get_line_from_string(&content_ptr) : | 	while (line = (content ? mdiary_get_line_from_string(&content_ptr) : | ||||||
| 		       g_data_input_stream_read_line(G_DATA_INPUT_STREAM(dstream), NULL, NULL, NULL))) { | 		       g_data_input_stream_read_line(G_DATA_INPUT_STREAM(dstream), NULL, NULL, NULL))) { | ||||||
| 		if (header_state == 0) { | 		if (header_state == 0) { | ||||||
|  | 			if (header) { | ||||||
|  | 				header = g_string_append(header, "\n"); | ||||||
|  | 				header = g_string_append(header, line); | ||||||
|  | 			} else { | ||||||
|  | 				header = g_string_new(line); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			if (!datetime) { | 			if (!datetime) { | ||||||
| 				datetime = mdiary_get_date_from_string_ext(line, "Date: ", ""); | 				datetime = mdiary_get_date_from_string_ext(line, "Date: ", ""); | ||||||
| 				if (datetime) | 				if (datetime) | ||||||
| @ -331,6 +339,10 @@ static void mdiary_add_file_to_store(struct mdiary_scanner *mdiary_scanner, | |||||||
| 		g_warning("PARSER: Could not find any text in file!\n"); | 		g_warning("PARSER: Could not find any text in file!\n"); | ||||||
| 		text = g_string_new("No content found."); | 		text = g_string_new("No content found."); | ||||||
| 	} | 	} | ||||||
|  | 	if (!header) { | ||||||
|  | 		g_warning("PARSER: Could not find any header in file!\n"); | ||||||
|  | 		text = g_string_new("No header found."); | ||||||
|  | 	} | ||||||
| 	if (!summary) { | 	if (!summary) { | ||||||
| 		g_warning("PARSER: Could not detect summary in file!\n"); | 		g_warning("PARSER: Could not detect summary in file!\n"); | ||||||
| 		summary = g_strdup("No summary found."); | 		summary = g_strdup("No summary found."); | ||||||
| @ -354,6 +366,7 @@ static void mdiary_add_file_to_store(struct mdiary_scanner *mdiary_scanner, | |||||||
| 				  tagList, | 				  tagList, | ||||||
| 				  summary, | 				  summary, | ||||||
| 				  text->str, | 				  text->str, | ||||||
|  | 				  header->str, | ||||||
| 				  filename); | 				  filename); | ||||||
| 
 | 
 | ||||||
| 	if (g_date_time_to_unix(datetime) > mdiary_scanner->time_latest) | 	if (g_date_time_to_unix(datetime) > mdiary_scanner->time_latest) | ||||||
| @ -368,7 +381,8 @@ static void mdiary_add_file_to_store(struct mdiary_scanner *mdiary_scanner, | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	g_list_free_full(tagList, *g_free); | 	g_list_free_full(tagList, *g_free); | ||||||
| 	g_string_free(text, 0); | 	g_string_free(text, 1); | ||||||
|  | 	g_string_free(header, 1); | ||||||
| 	g_free(summary); | 	g_free(summary); | ||||||
| 	g_free(title); | 	g_free(title); | ||||||
| 	g_date_time_unref(datetime); | 	g_date_time_unref(datetime); | ||||||
| @ -578,6 +592,7 @@ void mdiary_add_entry_to_store(GtkListStore *entryListStore, | |||||||
| 			       GList *tags, | 			       GList *tags, | ||||||
| 			       gchar *summary, | 			       gchar *summary, | ||||||
| 			       gchar *text, | 			       gchar *text, | ||||||
|  | 			       gchar *header, | ||||||
| 			       gchar *file_url) | 			       gchar *file_url) | ||||||
| { | { | ||||||
| 	GtkTreeIter iter; | 	GtkTreeIter iter; | ||||||
| @ -585,6 +600,7 @@ void mdiary_add_entry_to_store(GtkListStore *entryListStore, | |||||||
| 	GList *taglist_copy; | 	GList *taglist_copy; | ||||||
| 	gchar *date_text; | 	gchar *date_text; | ||||||
| 	gchar *taglistString; | 	gchar *taglistString; | ||||||
|  | 	gchar *uuid; | ||||||
| 
 | 
 | ||||||
| 	GList *l; | 	GList *l; | ||||||
| 	struct tag_compare_struct tag_compare_struct = { .text = "", .result = FALSE }; | 	struct tag_compare_struct tag_compare_struct = { .text = "", .result = FALSE }; | ||||||
| @ -593,6 +609,7 @@ void mdiary_add_entry_to_store(GtkListStore *entryListStore, | |||||||
| 	date_text     = g_date_time_format(datetime_copy, "%A, %e %B %Y %R"); | 	date_text     = g_date_time_format(datetime_copy, "%A, %e %B %Y %R"); | ||||||
| 	taglist_copy  = g_list_copy_deep(tags, (GCopyFunc) g_strdup, NULL); | 	taglist_copy  = g_list_copy_deep(tags, (GCopyFunc) g_strdup, NULL); | ||||||
| 	taglistString = mdiary_taglist_to_string(taglist_copy); | 	taglistString = mdiary_taglist_to_string(taglist_copy); | ||||||
|  | 	uuid = g_compute_checksum_for_data(G_CHECKSUM_SHA256, (guchar *) file_url, strlen(file_url)); | ||||||
| 
 | 
 | ||||||
| 	gtk_list_store_append(entryListStore, &iter); | 	gtk_list_store_append(entryListStore, &iter); | ||||||
| 	gtk_list_store_set(entryListStore, &iter, | 	gtk_list_store_set(entryListStore, &iter, | ||||||
| @ -603,9 +620,12 @@ void mdiary_add_entry_to_store(GtkListStore *entryListStore, | |||||||
| 			   COL_TAGLIST, taglist_copy, /* TODO: Verify that the duplication worked! */ | 			   COL_TAGLIST, taglist_copy, /* TODO: Verify that the duplication worked! */ | ||||||
| 			   COL_SUMMARY, summary, /* Automatically strdupd */ | 			   COL_SUMMARY, summary, /* Automatically strdupd */ | ||||||
| 			   COL_TEXT, text, /* Automatically strdupd */ | 			   COL_TEXT, text, /* Automatically strdupd */ | ||||||
|  | 			   COL_HEADER, header, /* Automatically strdupd */ | ||||||
| 			   COL_URL, file_url, /* Automatically strdupd */ | 			   COL_URL, file_url, /* Automatically strdupd */ | ||||||
|  | 			   COL_UUID, uuid, /* Automatically strdupd */ | ||||||
| 			   -1); | 			   -1); | ||||||
| 	g_free(date_text); | 	g_free(date_text); | ||||||
|  | 	g_free(uuid); | ||||||
| 
 | 
 | ||||||
| 	for (l = tags; l != NULL; l = l->next) { | 	for (l = tags; l != NULL; l = l->next) { | ||||||
| 		tag_compare_struct.text = l->data; | 		tag_compare_struct.text = l->data; | ||||||
|  | |||||||
| @ -16,7 +16,9 @@ enum { | |||||||
| 	COL_TAGLIST,    /* GList<gchar *> of the tags */ | 	COL_TAGLIST,    /* GList<gchar *> of the tags */ | ||||||
| 	COL_SUMMARY,	/* Summary of the entry */ | 	COL_SUMMARY,	/* Summary of the entry */ | ||||||
| 	COL_TEXT,	/* Raw text from the file */ | 	COL_TEXT,	/* Raw text from the file */ | ||||||
|  | 	COL_HEADER,	/* Raw header from the file */ | ||||||
| 	COL_URL,	/* Path to the file */ | 	COL_URL,	/* Path to the file */ | ||||||
|  | 	COL_UUID,	/* UUID of the file */ | ||||||
| 	COL_COUNT | 	COL_COUNT | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -42,6 +44,7 @@ void mdiary_add_entry_to_store(GtkListStore *entryListStore, | |||||||
| 			       GList *tags, | 			       GList *tags, | ||||||
| 			       gchar *summary, | 			       gchar *summary, | ||||||
| 			       gchar *text, | 			       gchar *text, | ||||||
|  | 			       gchar *header, | ||||||
| 			       gchar *file_url); | 			       gchar *file_url); | ||||||
| GDateTime *mdiary_get_date_from_string_ext(gchar *string, gchar *prefix, gchar *suffix); | GDateTime *mdiary_get_date_from_string_ext(gchar *string, gchar *prefix, gchar *suffix); | ||||||
| GDateTime *mdiary_get_date_from_string(gchar *string); | GDateTime *mdiary_get_date_from_string(gchar *string); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user