1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
|
2009-05-07 Jannis Pohlmann <jannis@xfce.org>
* gdesktopmenu/gdesktopmenu.c: Fix typo in g_desktop_menu_get_type().
2009-05-07 Jannis Pohlmann <jannis@xfce.org>
* gdesktopmenu/gdesktopmenu.{c,h}: Move _GDesktopMenu and
_GDesktopMenuClass into the header file in order for
GObject-introspection to work.
2009-05-07 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/: Improve API docs structure.
* gdesktopmenu/Makefile.am, gdesktopmenu/gdesktopmenu.{c,h},
gdesktopmenu/gdesktopmenumain.{c,h}: Move init/shutdown code into
gdesktopmenumain.{c,h}.
2009-05-07 Jannis Pohlmann <jannis@xfce.org>
* Fix compilation errors, missing "lib" prefix and set the API version
to 1 (not the libtool one).
2009-05-07 Jannis Pohlmann <jannis@xfce.org>
* Rename to gdesktopmenu. This will need a few more commits to work
again though.
2009-05-04 Travis Watkins <amaranth@ubuntu.com>
* docs/reference/libxfce4menu-sections.txt,
libxfce4menu/xfce-menu-directory.{c,h},
libxfce4menu/xfce-menu-element.{c,h},
libxfce4menu/xfce-menu-item.{c,h},
libxfce4menu/xfce-menu-separator.c,
libxfce4menu/xfce-menu.c: Add xfce_menu_element_get_no_display() and
xfce_menu_element_get_visible_in_environment() to the
XfceMenuElement interface. Implement this in XfceMenu,
XfceMenuDirectory, XfceMenuItem and XfceMenuSeparator.
2009-05-03 Travis Watkins <amaranth@ubuntu.com>
* docs/reference/libxfce4menu-sections.txt, libxfce4menu/xfce-menu.c,
libxfce4menu/xfce-menu-element.{c,h}, libxfce4menu/xfce-menu-item.c,
libxfce4menu/xfce-menu-separator.c: Add new function
xfce_menu_element_get_comment() to the XfceMenuElement interface and
implement it in XfceMenu, XfceMenuItem and XfceMenuSeparator.
2009-04-04 Jannis Pohlmann <jannis@xfce.org>
* AUTHORS: Add Travis Watkins as a contributor.
* docs/reference: Update API docs.
* libxfce4menu/xfce-menu-directory.{c,h},
libxfce4menu/xfce-menu-element.{c,h},
libxfce4menu/xfce-menu-item.c,
libxfce4menu/xfce-menu-separator.c, libxfce4menu/xfce-menu.c: Add
xfce_menu_element_get_visible() to XfceMenuElement. The
XfceMenuSeparator implementation always returns TRUE while the
XfceMenuItem implementation checks the Hidden/OnlyShowIn/NotShowIn
values of the corresponding desktop entry. XfceMenu checks the
Hidden/OnlyShowIn/NotShowIn values of its XfceMenuDirectory as well
as whether there are any visible child elements. Thanks to Travis
Watkins for the patch.
* tests/test-display-menu.c, tests/test-menu-spec.c: Update tests to
reflect the latest API changes. Thanks to Travis for updating
test-display-menu.c.
2009-03-15 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Update STATUS file.
2009-03-15 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/: Update API docs.
* libxfce4menu/libxfce4menu.c: Set path pointer to NULL after freeing
it to avoid random data in it.
* libxfce4menu/xfce-menu-merger.c: Prepend a default layout element
to the root menu so that the root menu and its children have a
layout to use as a fallback. Remove empty layout elements so that
we can fallback to the default layout.
* libxfce4menu/xfce-menu-node.{c,h}: Add new function
xfce_menu_node_tree_get_child_node(). Add
XFCE_MENU_NODE_TYPE_DEFAULT_LAYOUT to the XfceMenuNodeType enum.
* libxfce4menu/xfce-menu-parser.c: Parse <DefaultLayout> elements.
Attributes are currently ignored.
* libxfce4menu/xfce-menu.c: Properly look up the right layout or
default layout in xfce_menu_get_elements().
* tests/test-display-menu.c, tests/test-menu-spec.c: Improve error
messages.
2009-03-15 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/libxfce4menu-sections.txt,
docs/reference/libxfce4menu.types, libxfce4menu/Makefile.am,
libxfce4menu/libxfce4menu.h, libxfce4menu/xfce-menu.{c,h},
libxfce4menu/xfce-menu-layout.{c,h}: Remove XfceMenuLayout class.
Also remove xfce_menu_get_items() and rename
xfce_menu_get_layout_elements() to xfce_menu_get_elements(). Make
menu layouts work again with the GNode trees we have instead of
XfceMenuLayout now.
* tests/test-display-menu.c, tests/test-menu-spec.c: Update tests to
the latest API.
2009-03-15 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-node.c: Really fix the typo this time.
* libxfce4menu/xfce-menu-parser.c: Remove break inside an if statement
and thereby fix the parsing of <Layout> child elements.
2009-03-15 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-node.c: Fix type macro typo in
xfce_menu_node_tree_get_layout_merge_type().
2009-03-15 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-merger.c: Remove duplicate layout nodes and
only keep the last one.
2009-03-14 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/*.h: Remove trailing semicolons after G_BEGIN_DECLS and
G_END_DECLS because it makes gobject-introspection freak out and its
also a bit of a syntax error. Reported by Travis Watkins.
2009-03-14 Jannis Pohlmann <jannis@xfce.org>
* INSTALL: Update the install information.
* configure.in.in, libxfce4menu/libxfce4menu-0.1.pc.in,
libxfce4menu/xfce-menu-directory.c,
libxfce4menu/xfce-menu-item-cache.c, libxfce4menu/xfce-menu-item.c,
libxfce4menu/xfce-menu-merger.c, libxfce4menu/xfce-menu-parser.c: Get
rid of libxfce4util and related code like xfce_resource_dirs(). Use
GKeyFile instead of XfceRc. A lot of this code comes from Travis
Watkins <amaranth@ubuntu.com> who was kind enough to provide a
patch.
* docs/reference/libxfce4menu-sections.txt: Update sections.
* libxfce4menu/libxfce4menu.{c,h}: Rename xfce_menu_init() and
xfce_menu_shutdown() to libxfce4menu_init() and
libxfce4menu_shutdown(). Add new function
xfce_menu_config_lookup().
* libxfce4menu/xfce-menu.{c,h}: Use xfce_menu_config_lookup() instead
of xfce_resource_lookup(). Remove xfce_menu_init() and
xfce_menu_shutdown() declaration in the header file.
* tdb/: Remove TDB entirely.
* tests/test-display-menu.c, tests/test-menu-parser.c,
tests/test-menu-spec.c: Update to new API and get rid of
libxfce4util code.
2009-03-12 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.h, libxfce4menu/libxfce4menu.c:
Something is wrong with the API docs. Another try to fix them.
2009-03-12 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.h, libxfce4menu/xfce-menu.c: Try to
fix broken API docs syntax and add docs for the
XfceMenuMonitorVTable members.
2009-03-12 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-directory.{c,h}: Add function
xfce_menu_directory_equal() which compares two XfceMenuDirectory
objects based on their GFile members.
* libxfce4menu/xfce-menu-layout.{c,h}: Use GList instead of GSList
everywhere.
* libxfce4menu/xfce-menu-merger.{c,h}: Never access GNode data
directly. Instead always use the xfce_menu_node_tree*() functions.
* libxfce4menu/xfce-menu-node.{c,h}: Add functions
xfce_menu_node_tree_get_child_nodes(),
xfce_menu_node_tree_get_string_children(),
xfce_menu_node_tree_get_boolean_child() and
xfce_menu_node_tree_get_string_child() to collect the values of
immediate children of a GNode tree. Add new functions
xfce_menu_node_tree_set_string() and
xfce_menu_node_tree_set_merge_file_filename() so that GNode data
needs to be accessed less often. Fix assertions in a few other
functions.
* libxfce4menu/xfce-menu-parser.c: Fix segmentation fault due to an
uninitialized GError in GIO.
* libxfce4menu/xfce-menu.{c,h}: Use GList instead of GSList everywhere.
Improve API docs for a few public functions. Change xfce_menu_new()
again to expect a filename as the first parameter. Add a separate
function xfce_menu_new_for_file() to create an XfceMenu from a
GFile. Rename xfce_menu_get_root() to xfce_menu_new_applications().
Replace a lot of traversing code with the new
xfce_menu_node_tree_get*() functions.
* tests/test-display-menu.c, tests/test-menu-parser.c,
tests/test-menu-spec.c: Update to new libxfce4menu API.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/libxfce4menu.c: Add missing source file.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/: Try to get the damn docs right.
* libxfce4menu/libxfce4menu.{c,h}, libxfce4menu/xfce-menu.c: Move
xfce_menu_init() and xfce_menu_shutdown() into libxfce4menu.{c,h}.
Fix #undef LIBXFCE4MENU_INSIDE_LIBXFCE4MENU_H.
* libxfce4menu/xfce-menu-node.{c,h}: Make XfceMenuNodeType enum code
private.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/: Remove tmpl/ subdir.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/: Update API docs.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-node.h: Add missing declaration for
xfce_menu_node_type_get_type().
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/: Update API docs section and stuff.
* libxfce4menu/xfce-menu-move.{c,h}: Remove unused source files.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* libfxce4menu/Makefile.am: Remove non-existent files and missing
ones.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-gio.{c,h}: Add missing source files for a few
GIO/GFile utility functions.
2009-02-24 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Big status update.
* TODO: Create a TODO list.
* configure.in.in, Makefile.am, tdb/: Remove TDB entirely.
* libxfce4menu/libxfce4menu.h: Clean up.
* libxfce4menu/xfce-menu-and-rules.{c,h},
libxfce4menu/xfce-menu-not-rules.{c,h},
libxfce4menu/xfce-menu-or-rules.{c,h},
libxfce4menu/xfce-menu-standard-rules.{c,h},
libxfce4menu/xfce-menu-rules.{c,h}: Remove all the XfceMenu*Rules
classes. Replace them with one very simple XfceMenuNode function.
* libxfce4menu/xfce-menu-directory.{c,h}: Replace the filename string
property with a GFile file property. Replace
xfce_menu_directory_get_filename() with
xfce_menu_directory_get_file() and remove
xfce_menu_directory_set_filename(). Fix typos in the signal
installation code.
* libxfce4menu/xfce-menu-item-cache.c: Remove all TDB related code.
Avoid memory leaks when creating new items (same patch as went into
the old trunk a while ago, bug #3812).
* libxfce4menu/xfce-menu-item-pool.{c,h}: Update
xfce_menu_item_pool_apply_exclude_rule() and
xfce_menu_item_pool_filter_exclude() to use a GNode instead of an
XfceMenuRuleStandardRules.
* libxfce4menu/xfce-menu-item.{c,h}: Accept URIs as input to
xfce_menu_item_new() and convert them to paths using GFile.
* libxfce4menu/xfce-menu-merger.{c,h}: Implement the missing merging
and moving code. Fix a lot of bugs in the code. Never access
XfceMenuNodes directly, always use xfce_menu_node_tree_*()
functions.
* libxfce4menu/xfce-menu-node.{c,h}: Add more xfce_menu_node_tree*()
functions. Simplify the code. Add support for matching
Include/Exclude/And/Or/etc. rules against XfceMenuItems.
* libxfce4menu/xfce-menu-parser.{c,h}: Minor cleanups.
* libxfce4menu/xfce-menu.{c,h}: Change the first parameter of
xfce_menu_new() to GFile. Remove all the parsing code. Use
XfceMenuParser and XfceMenuMerger in xfce_menu_load(). Update all
the menu loading code to use GNode DOM trees. Replace the filename
property with a GFile file property. Still waiting to be implemented
again is the layout stuff. Remove functions like
xfce_menu_get_directory_dirs() which were not meant for public use
anyway.
* tests/test-display-menu.c, tests/test-menu-parser.c,
tests/test-menu-spec.c: Update to the new API. Cleanups.
2009-02-22 Jannis Pohlmann <jannis@xfce.org>
* configure.in.in: Depend on GTK+ 2.12 and GLib 2.14. Add dependency
on GIO 2.14 as well.
* libxfce4menu/Makefile.am: Add new source and header files.
* libxfce4menu/libxfce4menu.h: Add new header files.
* libxfce4menu/xfce-menu-node.{c,h}: Add new class XfceMenuNode which
holds the information for one element in the menu DOM tree, e.g.
<MergeFile>, <Name> or <Menu>
* libxfce4menu/xfce-menu-tree-provider.{c,h}: Add new interface
XfceMenuTreeProvider for classes which hold a GNode DOM
representation for .menu files.
* libxfce4menu/xfce-menu-parser.{c,h}: Add new parser for .menu XML
files. It builds a GNode DOM representation for the XML data. Each
GNode in the tree (except for the menu nodes) contains one
XfceMenuNode for the XML element information. The parser implements
XfceMenuTreeProvider.
* libxfce4menu/xfce-menu-merger.{c,h}: Add new class XfceMenuMerger
which takes the DOM tree from the parser or any other
XfceMenuTreeProvider and resolves duplicates, relative paths and,
most importantly, merges and deletes menus according to the
information in the DOM tree. It implements XfceMenuTreeProvider. It
is not complete yet because it doesn't implement <Move> elements
and is not capable of consolidating child menus with the same name
at the moment.
* tests/Makefile.am, tests/test-menu-parser.c: Add a small test
program which parses a menu file using XfceMenuParser and then runs
an XfceMenuMerger and prints the output of both.
2009-02-04 Jannis Pohlmann <jannis@xfce.org>
* NEWS: Update NEWS.
2009-02-04 Jannis Pohlmann <jannis@xfce.org>
* COPYING: Add "no invariant sections" hint to the GFDL.
* configure.in.in: Post-release version bump.
* libxfce4mixer/xfce-menu.c: Fix crash when reading invalid menu files
with characters outside the root <Menu> element. Of course this even
works with documents which have no <Menu> element at all.
2009-01-25 Jannis Pohlmann <jannis@xfce.org>
* == 4.5.99.1 released! ==
* NEWS: Update NEWS for the release.
* configure.in.in: Bump version and dependencies and remove 'svn'
version tag.
2009-01-23 Jannis Pohlmann <jannis@xfce.org>
* COPYING: Add GFDL 1.1 as requested by Michael Casadevall from
Xubuntu.
2009-01-14 Jannis Pohlmann <jannis@xfce.org>
* configure.in.in: Post-release version bump.
2009-01-11 Jannis Pohlmann <jannis@xfce.org>
* == 4.5.93 released! ==
* configure.in.in: Bump version and dependencies and remove 'svn'
version tag.
2009-01-10 Jannis Pohlmann <jannis@xfce.org>
* NEWS: Update NEWS for the upcoming 4.5.93 (Xfce 4.6 beta3) release.
2009-01-06 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.c, libxfce4menu/xfce-menu-item-cache.c:
Review strings.
2009-01-02 Nick Schermer <nick@xfce.org>
* libxfce4menu/xfce-menu-item-cache.c,
libxfce4menu/xfce-menu-separator.c: Add weak pointer to
XfceMenuItemCache and XfceMenuSeparator so you can init and shutdown
the library multiple times without running into trouble.
* NEWS: Update.
2008-12-06 Jannis Pohlmann <jannis@xfce.org>
* configure.in.in: Re-add svn version tag.
2008-12-04 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.c: Always use xfce_menu_get_element() when
comparing two menu elements instead of handling menus and items
in different ways.
* libxfce4menu/xfce-menu-item.c: Minor cleanup of the
XfceMenuElement functions.
* tests/test-display-menu.c: Always use xfce_menu_get_element(), never
use xfce_menu_item_get_name() directly.
2008-11-11 Jannis Pohlmann <jannis@xfce.org>
* == 4.5.92 released ==
* configure.in.in: Bump version and update dependencies.
* NEWS: Update NEWS file.
2008-10-29 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/libxfce4menu-config.h.in,
libxfce4menu/xfce-menu-item.c: Fix copyright header.
2008-10-14 Stephan Arts <stephan@xfce.org>
* NEWS: Updated for the beta1 release.
2008-09-12 Jannis Pohlmann <jannis@xfce.org>
* NEWS, TODO: Updated for the alpha release.
2008-09-07 Stephan Arts <stephan@xfce.org>
* configure.in.in: Bump libxfce4util dependency to 4.5.90, so people
won't use it with earlier versions. Remove -svn tag.
2008-09-02 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-item-cache.c: Properly release the mutex at
the end of xfce_menu_item_cache_foreach(). Calling g_mutex_lock()
won't unlock the mutex ...
2008-08-31 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-item.{c,h}: Add
xfce_menu_item_only_show_in_environment() function which checks
whether the current environment is present in the OnlyShowIn key of
a menu item. This should close bug #3741.
2008-08-31 Jannis Pohlmann <jannis@xfce.org>
* autogen.sh: Don't print errors when trying to detect the
revision of a git svn repository.
2008-08-17 Brian Tarricone <bjt23@cornell.edu>
* configure.in.in: Set LIBXFCE4MENU_VERSION_API independently
of the package version.
* docs/reference/Makefile.am: use the correct API version when
linking with the library
2008-07-15 Jannis Pohlmann <jannis@xfce.org>
* autogen.sh: Change @REVISION@ substitution for git svn
repositories again.
2008-07-10 Jannis Pohlmann <jannis@xfce.org>
* autogen.sh: Fix @REVISION@ substitution when using git svn.
2008-07-06 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.c: Add #if 0 around
xfce_menu_resolve_legacy_menus() and
xfce_menu_resolve_legacy_menu(). Avoids build errors on some
systems.
2008-02-06 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Status file updated, mainly to reflect the progress made
with filesystem monitoring.
2008-01-02 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-item.{c,h}: Add support for the Comment field
via xfce_menu_item_get_comment().
2007-12-29 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.{c,h}: Add support for defining what
kind of files/directories are monitored (XfceMenuMonitorFlags,
xfce_menu_monitor_set_flags(), xfce_menu_monitor_get_flags(),
xfce_menu_monitor_has_flags()).
* libxfce4menu/xfce-menu.c: Check monitor flags before adding
files/directories to the monitoring system.
* tests/test-display-menu.c: Center window on screen.
2007-12-27 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.c: Use the KEY, not the VALUE pointer
to remove items from the shared handle hash table. In this case, use
the directory string instead of the shared handle. This should fix
the issue we've had with monitoring directories only.
2007-12-23 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-item.{c,h}: Add support for "GenericName" as
requested by Brian. Also add a convenience function
xfce_menu_item_has_category (XfceMenuItem *, const char *).
* libxfce4menu/xfce-menu-item-cache.c: Re-add caching features, but now
also allow the cache to be invalidated using _item_cache_invalidate().
This can be used in combination with file monitoring: Once something
has changed a) destroy the current menu, b) invalidate the cache and
c) create the menu again.
2007-10-21 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-item.{c,h}: Add support for the "Path"
key of the .desktop entries. This makes it possible to start
menu items in a special working directory. Will make fixing
bug #3472 easier.
2007-10-20 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.c: No, let's do it
differently: You can now redefine the vtable. You can also
clear it by passing NULL. Whenever you want to change the
user_data, just pass the same vtable as before.
* libxfce4menu/xfce-menu-item-cache.c: Deactivate the cache
for now. Perhaps we can add it later, together with fast
checksum support to detect filesystem changes.
2007-10-20 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.c: Add vtable != NULL check
to xfce_menu_monitor_set_vtable. Avoids crashes when passing
a NULL pointer and makes other developers aware of what they
might be doing wrong.
2007-10-12 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Updated the status file to reflect the
current implementation status.
2007-09-25 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-layout.c: As a follow-up to
the last commit, fix the disabled code. There is no
parameter named 'layout'.
2007-09-25 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-layout.c: Fix bug #3568 which
was caused by the layout variable not being used in
_set_property and _get_property. Thanks to Tomasz Mon
for the hint.
2007-09-20 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.c: Use g_str_hash and
g_str_equal for the file/directory to monitor handle
hash table, rather than comparing the pointers directly.
* libxfce4menu/xfce-menu.c: Create submenu monitors after
parsing by traversing the XfceMenu tree but remove them
in xfce_menu_finalize (so creating the monitors happens
in the root menu, removing is handled inside the
submenus). Now all monitors are properly removed when
the root menu is destroyed.
* tests/test-display-root-menu.c: Print the pseudo monitor
handle ID in monitor_file and monitor_directory.
2007-09-20 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.{c,h}: Added methods to
monitor files and directories. That way we can now add
monitors for the main menu file as well as menu .directory
files and the application directories - I think that's
all we need. Since there may be several XfceMenu's monotoring
the same application directories and menu files, those
are managed using a reference counting mechanism, so that
the monitor is only removed when all menus have asked
to remove the monitor on them.
* libxfce4menu/xfce-menu.c: Monitor the main menu file as
well as .directory files and application directories. And
of course remove the monitors when the menu is destroyed.
2007-05-22 Benedikt Meurer <benny@xfce.org>
* libxfce4menu/Makefile.am: Fix typo.
2007-05-20 Jannis Pohlmann <jannis@xfce.org>
* configure.in.in: Disable empty AC_CHECK_FUNCS([]) call for
now. Fixes syntax error on IRIX (bug #3251, reported by
Daichi).
2007-03-25 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-monitor.c: Use if statement
rather than g_return_(val_)if_fail to check whether vtable
functions have been set.
2007-03-25 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.c: Fix weird typo as noted by
Jens Luedicke.
2007-03-24 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/Makefile.am, libxfce4menu/xfce-menu.c,
libxfce4menu/xfce-menu-monitor.{c,h}: Add monitoring support
by making it possible for library clients to define a vtable
with functions to be called whenever monitoring a file or
directory becomes necessary. This way Thunar and xfdesktop
can use ThunarVFS for monitoring and I don't need to care
about how they do it. Note: xfce_menu_monitor_notify_change()
is missing but will be adedd as soon as possible.
Add a missing NULL to g_strjoin() in xfce-menu.c as reported
by Jens Luedicke.
* tests/test-display-menu.c: Add some dummy code for testing
the monitoring system.
* docs/reference/: Updated and reorganized API docs.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/*.c: Remove gettext calls for strings
we don't really need to translate. Add gettext calls
were it makes sense. Remove several debug messages.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/libxfce4menu.h, libxfce4menu/Makefile.am,
libxfce4menu/xfce-menu-element.{c,h}: XfceMenuElement
interface with methods xfce_menu_element_get_name() and
xfce_menu_element_get_icon_name() added.
* libxfce4menu/xfce-menu.c, libxfce4menu/xfce-menu-item.c,
libxfce4menu/xfce-menu-separator.c: Add XfceMenuElementIface
to XfceMenu, XfceMenuItem and XfceMenuSeparator. Rename
xfce_menu_get_layout_items() to
xfce_menu_get_layout_elements().
* tests/test-display-menu.c: Use XfceMenuElement methods
where possible.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* tests/Makefile.am, tests/test-display-menu.c: Test program
for displaying a menu added again.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/tmpl/: Remove tdb related files from
SVN. They won't be installed to the system anyway.
* tests/Makefile.am, tests/test-menu-spec.c: Test program for
the menu specification test suite added again.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/libxfce4menu-0.1.pc.in: Update pkg-config
information to point to the new header file location.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/Makefile.am: Install header files to
$includedir/xfce4/libxfce4menu-<version>/libxfce4menu/.
2007-03-23 Jannis Pohlmann <jannis@xfce.org>
* Move to libxfce4menu.
2007-03-21 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.{c,h}: Improve set methods a little. Add
support for TryExec as requested by Brian.
2007-03-20 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Fix several memory leaks, among them a huge
310k bomb. You don't believe me? Well, see
http://rafb.net/p/WPbFZy97.html for the numbers. All
menus (except the root menu) were ref'd twice and thus, their
data never got free'd anywhere.
2007-03-19 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Initialize threading before anything else - this
seems to be a new requirement in GLib. Initialize node_type
of the parse context properly. Close directory handle at the
end of frap_menu_collect_files_from_path() to avoid mem leaks.
* frap-menu-item-cache.c: Disable g_object_ref() calls on new
menu items. They're already created with a refcount of 1 ...
* tests/test-display-root-menu.c: Initialize FrapMenu before
GTK+ so that threading is initialized earlier.
* tests/test-root-menu.c: Catch possible GErrors when calling
frap_menu_get_root().
2007-03-19 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c, docs/reference/tmpl/frap-menu.sgml: Improve
API docs a little bit. There's soooo much more to be
documented.
2007-03-19 Jannis Pohlmann <jannis@xfce.org>
* docs/reference/libfrapmenu-docs.sgml: Remove the xmlns:xi
attribute from <book>.
2007-03-19 Jannis Pohlmann <jannis@xfce.org>
* configure.in.in, Makefile.am, docs/: Initial import of
gtk-doc support. Still needs some tweaking though.
2007-03-19 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Avoid sorting items and submenus twice if
possible in frap_menu_get_layout_items().
2007-03-19 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.{c,h}: Add frap_menu_has_layout(). Return NULL
from frap_menu_get_layout_nodes() if a menu has no layout.
Disable crappy submenu consolidation code for now as it
didn't preserve menu layouts.
Sort submenus in frap_menu_get_menus() and items in
frap_menu_get_items(), so API users don't have to do this.
* tests/test-display-root-menu.c: Update test program to be
in sync with the latest API changes.
2007-03-18 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.c: Replace g_return_val_if_fail() calls in
frap_menu_item_new() with a less verbose if statement.
2007-03-18 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Fix list returned by frap_menu_get_layout_items()
when no layout is used (submenus were not included).
2007-03-18 Jannis Pohlmann <jannis@xfce.org>
* tests/test-display-root-menu.c: Do not skip menus without
menu directory, use the menu name as display name in this
case.
* frap-menu.c, frap-menu-layout.{c,h}: Add methods for a
simplified <Menuname> support. I don't want to deal with XML
attributes right now, we can add support for them later.
Don't return menus/items already used in the menu layout
elsewhere. Sort menus/items before returning them - no need
for the clients to implement that by themselves anymore.
* STATUS: Status updated.
2007-03-18 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-layout.{c,h}: FrapMenuLayout added. It only supports
<Filename>, <Separator> and <Merge> elements currently.
* frap-menu-separator.{c,h}: FrapMenuSeparator added. This is a
singleton to be inserted into the GSList returned by
frap_menu_get_layout_items() whenever a separator is required.
* frap-menu.{c,h}: Implement parsing of <Layout>, <Separator>
and <Merge> elements. Add layout member to the FrapMenu struct.
Add method to fetch all items based on the layout:
frap_menu_get_layout_items(). Call _frap_menu_separator_init()
in frap_menu_init() and _frap_menu_separator_shutdown() in
frap_menu_shutdown(). Check filename != NULL in
frap_menu_new().
* libfrapmenu.h: Add separator and layout to the main header.
* tests/test-display-root-menu.c: Use
frap_menu_get_layout_items() instead of frap_menu_get_items().
* Makefile.am: Add separator and layout sources.
* STATUS: Status updated.
2007-02-14 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Menu spec test suite results added.
* tests/test-display-root-menu.c: Fix warning caused by copying
a string into a const gchar*.
2007-02-14 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-cache.h: Fix typo - it's
frap_menu_item_cache_get_default(), not
frap_menu_item_pool_get_default().
2007-02-14 Jannis Pohlmann <jannis@xfce.org>
* STATUS: <Move>, <Old> and <New> are not working yet, so mark them
as not implemented yet. According to the menu test suite, everything
is completely supported now, except moving/merging menus and menu
layouts!
2007-02-14 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.{c,h}: Don't ignore items which don't match the
current desktop environment. Parse OnlyShowIn/NotShowIn and add
method frap_menu_item_show_in_environment() which returns whether the
item should be displayed in the defined desktop environment or not.
Remove frap_menu_item_matches_environment(). Don't check for != NULL
before free'ing strings (g_free won't complain anyway).
* frap-menu-directory.{c,h}: Don't check for != NULL before calling
g_free(). Add frap_menu_directory_show_in_environment() (see notes on
frap-menu-item.c for how it works).
* tests/test-display-root-menu.c: Update to the new FrapMenu API.
2007-02-13 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Add frap_menu_collect_files() and
frap_menu_collect_files_from_path() in order to collect potential
desktop entry filenames for each menu prior to resolving the menu
items. In these methods, desktop name collisions are handled by using
a (desktop-file id => absolute filename) mapping. After all filenames
are collected, we can simply iterate over them in order to resolve
the menu items. All in all, this mechanism adds some memory overhead
but reduces filesystem I/O at the same time.
* ./, tdb/, tests/, tests/data/: Add better svn:ignore properties for
the subdirectories.
2007-02-08 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.c: Must have accidently reverted this file before
commiting the last changes. Do not decrement the allocation counter
in frap_menu_item_unref(), so excluded items won't be moved from
one menu to another.
2007-02-08 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-pool.{c,h}: Remove frap_menu_item_cache_apply_rules()
and frap_menu_item_cache_remove_allocated() as include/exclude rules
are handled differently now. Instead, add
frap_menu_item_cache_apply_exclude_rule().
* frap-menu.c: Remove frap_menu_resolve_items_from_path in favour of
frap_menu_resolve_items_by_rule() and
frap_menu_resolve_items_from_path_by_rule(), so items are only added
to the pool if they match one of the include rules (instead of
removing them later if they match no include rule). Update
frap_menu_resolve_items() according to this. Call
frap_menu_resolve_deleted() after resolving the items to preserve the
allocation state of items allocated by the menu.
2007-02-06 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-directory.{c,h}: Add support for NoDisplay, Hidden and
partial support for OnlyShowIn/NotShowIn to menu directories. Fix
memory leaks when the filename of a FrapMenuDirectory is redefined
and the menu directory has to be reloaded (note: Hidden attributes
won't be recognized by the related menu after reloading).
* frap-menu.c: Handle Hidden attribute of menu directories in
frap_menu_resolve_deleted() to delete menus if necessary (gives us
another passed test in the fd.o test suite).
* tests/test-menu-spec.c: Handle NoDisplay attributes of menu
directories when printing the menus.
2007-02-06 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-cache.c: Also acquire mutex lock in
frap_menu_item_cache_foreach() as the item cache hash table could
be modified by other threads during this call otherwise.
2007-02-06 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-cache.c: Add GMutex variable to the item cache and
lock the item cache in frap_menu_item_cache_lookup() which is the
only public function where the contents of the item cache may be
modified.
* frap-menu.c: Initialize GThread system in frap_menu_init ().
2007-02-05 Jannis Pohlmann <jannis@xfce.org>
* tests/Makefile.am, tests/test-menu-spec.c: Test program for
the fd.o menu spec test suite added.
* frap-menu-item.{c,h}: Replce "hidden" property with "no-display" as
hidden desktop entries won't even be parsed. Also replace all
accessor functions with _get_no_display(), _set_no_display()
equivalents. Ignore hidden desktop entries. Don't check TryExec for
now (as this causes errors when testing with the fd.o menu spec
test suite). Let frap_menu_item_get_allocated() return gint instead
of gboolean as we need to check at least two states (allocation
counter > 1 and > 2) in FrapMenu and FrapMenuItemPool.
* frap-menu-item-pool.{c,h}: Implement functions for removing already
allocated items (for menus with <OnlyUnallocated/>). Fix several
issues related to <Include>/<Exclude> rules, which did not work
properly until now.
* frap-menu.c: Cleanup app dir related code. Remove allocated items
from menus with <OnlyUnallocated/> in the second pass of
frap_menu_resolve_items(). Only set the menu directory if there is
one. Don't try to load item files not ending with .desktop.
* tests/test-menu-item.c: Use frap_menu_item_get_no_display() instead
of _is_hidden().
2007-01-16 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Update documentation.
* *.c, tests/*.c: Update copyright years.
2007-01-16 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-environment.{c,h}, libfrapmenu.h, Makefile.am: Add
functions for defining the name of the desktop environment in
order to ignore menu items belonging to other environments.
* frap-menu.{c,h}: Add desktop environment name parameter to
frap_menu_init().
* tests/*.c: Sync with new API.
* frap-menu-item.c: Add frap_menu_item_rc_matches_environment() to check
whether a desktop file should be displayed in the current environment
or not. Call this method in frap_menu_new() before anything else is
parsed.
2007-01-15 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.c: Free TryExec argument list. Remove old code. Don't
copy the Exec string unnecessarily. Close the XfceRc file properly
at the end of the function.
2007-01-14 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.{c,h}: Add frap_menu_get_items() method as a convenience
wrapper around frap_menu_item_pool_foreach. Thanks to Benny again.
2007-01-14 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.{c,h}, frap-menu-rules.h, frap-menu-standard-rules.h,
frap-menu-{standard,or,and,not}-rules.{c}, tests/test-root-menu.c,
tests/test-display-root-menu.c, Makefile.am, STATUS: Incorporate Benny's
patch which he wrote for the xfce4-appbrowser mockup. This patch
includes a lot of changes:
- Adds <All> support to all include/exclude rules
- Makes parsing include/exclude rules more sane if markup is malformed
- Adds kde-applications.menu and gnome-applications.menu to the list
of root menu files to search
- Adds GError support to menu loading functions
- Fixes <DirectoryDir> elements accidently being skipped
- Fixes use of g_access usage
And some other small fixes. Huge thanks to Benny for this.
2007-01-11 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.{c,h}: Remove "allocated" property and replace it
with a kind of reference counter. Add frap_menu_item_ref/unref
methods to be used instead of frap_menu_item_set_allocated() which
has been removed. Use "guint ... : 1" notation for boolean values
in the structs belonging to FrapMenuItem.
* frap-menu-item-pool.c: Call frap_menu_item_ref when adding an item
to the pool of a menu (instead of setting the allocated value
directly).
* frap-menu.c: Use "guint ... : 1" notation for boolean values in
structs. Fix frap_menu_set_filename to make free'ing the filename
possible. Implement recursive (bottom -> top) collecting of
directory and legacy dirs (might be wrong for legacy dirs, I need
to verify this during the next days). Implement two-pass mechanism
to resolve menu items (in order to be able to handle
<OnlyUnallocated> elements). Only set menu parse state to
_STATE_ROOT if there are no other menus left on the stack.
* STATUS: Update implementation STATUS.
2006-11-07 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-pool.c: Fix backwards compatibility by passing
frap_menu_item_pool_remove to the hash table remove loop function
instead of g_object_unref (we need a function returning TRUE here).
* frap-menu.c: Initial import of legacy menu support by adding
frap_menu_resolve_menu, frap_menu_resolve_menus methods. It's not
complete yet (only FrapMenu's and FrapMenuDirectory's are created and
added to the menu structure; desktop entries are not parsed yet). In
addition to this, I added a workaround for distributions not
installing KDE properly, by adding $KDEDIR/share/desktop-directories/
to <DefaultDirectoryDirs>.
Also fixed some segfaults and warnings.
2006-11-06 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c, frap-menu-standard-rules.c, frap-menu-item-pool.c,
frap-menu-item-cache.c: Apply patch by Jannis Pohlmann which makes
FrapMenu compatible with GLib < 2.12.
2006-11-03 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.{c,h}, frap-menu-move.{c,h}, Makefile.am, STATUS:
frap_menu_get_menu_with_name() added. Implemented <Move>, <New>
and <Old> elements (also added error handling for incomplete move
instructions). A move instruction is a FrapMenuMove with properties
"old" and "new", which refers to the source and target menu names.
2006-10-31 Jannis Pohlmann <jannis@xfce.org>
* Makefile.am, tdb/: tdb added.
* tests/test-root-menu.c: Return type fixed (EXIT_SUCCESS).
* frap-menu-item-cache.{c,h}: Prepare for reading cached items from
a tdb. This needs a carefully written memory management
implementation of which I don't know yet how it might look like.
Change the signature of frap_menu_item_cache_lookup - the desktop id
is now passed as a third parameter. Add a _get_default method, so
other classes can take a reference on the singleton object.
* frap-menu.c: Make use of the new frap_menu_item_cache_lookup method.
Update FrapMenu to keep a reference on the frap menu item cache.
2006-10-15 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-pool.c: Fix item filter method in order to respect the
order of <Include>/<Exclude> elements.
* frap-menu.c: Rename methods related to FrapMenuParseInfo. Don't load
the menu in frap_menu_set_filename (). Instead, just set the filename
and use the frap_menu_new (const gchar*) method to actually load the
menu file. A method to react on filename changes may be added later,
when I'm working on the filesystem monitor.
Merge submenus with the same name and consolidate app and directory
dirs. This is another step towards proper merging of menus according
to the spec and it increases the parsing speed.
2006-10-04 Jannis Pohlmann <jannis@xfce.org>
* tests/test-display-root-menu.c: Add option to load a different menu
than the default applications menu.
2006-10-04 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.c: Revert parts of the previous commit because of
useless checks.
* frap-menu.c: Remove <Deleted /> menus and add notes for other
merge actions to be implemented.
2006-10-04 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item.c: Make property assignment more clean.
2006-10-04 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.c: Err, this fixes the <OnlyUnallocated /> check when
resolving items.
2006-10-04 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-item-pool.c: Add frap_menu_item_pool_get_empty function.
* tests/Makefile.am, tests/test-display-root-menu.c: Link against
libxfcegui4. Do not display empty menus. Improve icon loading again
and execute item command when menu items are clicked.
* frap-menu-item.c: Leave Exec/TryExec command as is (do not modify the
url(s)/file(s) parameter.
* frap-menu.c: Respect <OnlyUnallocated /> item when resolve menu items.
2006-10-03 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Updated the implementation status.
* tests/test-display-root-menu.c: Improved loading / displaying of
application icons. It's still not perfect, but much better than
before.
2006-10-01 Jannis Pohlmann <jannis@xfce.org>
* frap-menu-or-rules.c, frap-menu-and-rules.c, frap-menu-not-rules.c:
Improve match functions and implement desktop file id matching.
* Fix several compiler warnings in some of the files.
2006-09-30 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Status updated.
2006-09-30 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.h, frap-menu.c: Make get_rules and add_rule static methods
in frap-menu.c. Implemented parsing of all include/exclude rule
elements. get_app_dirs returns all application directories from the
bottom up to the root menu now. Added methods to resolve the items of
a menu. This is at the moment done by 1) including all items into
the pool by scanning the app dirs recursively and 2) removing them
according to the include/exclude rules afterwards.
* frap-menu-or-rules.c, frap-menu-and-rules.c, frap-menu-not-rules.c,
frap-menu-rules.{c,h}, frap-menu-standard-rules.{c,h}: Fix and improve
the rules classes. The "include" interface still needs to be moved
into FrapMenuRules - Jannis, don't forget about it.
* frap-menu-item-pool.{c,h}: Implemented several insert, lookup and
foreach methods as well as methods for applying the include/exclude
rules to the item pool.
* tests/test-display-root-menu.c: Displays menu items now.
* frap-menu-item.{c,h}: Added "desktop-id" and "allocated" properties.
Free private data in finalize. Don't parse/load MIME types.
* Makefile.am, frap-menu-item-cache.{c,h}: Cache for menu items added.
This cache currently does not save anything on your harddrives. It
just seaches for an absolute menu item path in a hash table and if
it doesn't exist, it reads the file, creates a menu item, adds it to
the hash table and passes it to the menu asking for it. That's it.
tdb stuff will be implemented later.
2006-09-28 Jannis Pohlmann <jannis@xfce.org>
* Makefile.am, frap-menu-not-rules.{c,h}, frap-menu.c: FrapMenuNotRules
for handling <Not> elements implemented.
* tests/Makefile.am, tests/test-not-rules.c: Test program for the
<Not> rules added.
2006-09-28 Jannis Pohlmann <jannis@xfce.org>
* Makefile.am, frap-menu-and-rules.{c,h}, frap-menu.c: FrapMenuAndRules
for handling <And> elements implemented.
* tests/Makefile.am, tests/test-and-rules.c: Test program for the
<And> rules added.
2006-09-28 Jannis Pohlmann <jannis@xfce.org>
* tests/Makefile.am, tests/test-or-rules.c,
tests/test-display-root-menu.c: Added two additional test programs,
one for testing <Or> rules and one for displaying the root menu.
* frap-menu-rules.{c,h}: Make methods for adding rules to a
FrapMenuRules object public. Add G_TYPE_OBJECT prerequisite to the
FrapMenuRules interface.
* frap-menu-standard-rules.{c,h}: Add "include" property. This will
probably be moved to the FrapMenuRules interface later. Fix abstract
->match method.
* frap-menu-or-rules.{c,h}: Add frap_menu_or_rules_new method. Make
FrapMenuOrRules a FRAP_TYPE_MENU_STANDARD_RULES type. Implement match
method (does not yet check the desktop file id, because it's not clear
how that is going to be handled).
* frap-menu-item.c: Implement frap_menu_item_add_categories method.
* frap-menu.c: Implement parsing of <Include>, <Exclude>, <Or>,
<Filename> and <Category> elements. <And> and <Not> are still missing.
2006-09-28 Jannis Pohlmann <jannis@xfce.org>
* tests/data/Makefile.am: Update desktop entry filename. I'm using
xfmedia.desktop as it provides everything I need to test (positively).
2006-09-27 Jannis Pohlmann <jannis@xfce.org>
* frap-menu.{c,h}: Add frap_menu_new method to create a menu structure
from a filename.
* frap-menu-item.{c,h}: Implement first parts of the FrapMenuItem class.
This class acts as a wrapper for .desktop entries and represents one
application/command.
* frap-menu-item-pool.{c,h}: First code for FrapMenuItemPool added.
Please note that this class has no real use yet. It will probably act
as a (Desktop-File Id => FrapMenuItem) mapping. Every menu will have
such a pool and whenever the menu needs to access it's menu items, the
pool will be queried. The pool itself doesn't store the
FrapMenuItem's. They will be kept in cached FrapMenuItemDatabase and
be shared among all pools.
* tests/, test/data/, tests/test-root-menu.c, tests/test-menu-item.c,
tests/Makefile.am, tests/data/Makefile.am, tests/data/xfmedia.desktop:
Test environment added. All programs in this directory will test small
parts of the menu framework. The first two (one for testing
FrapMenuItem and one for loading the root menu) were also added.
* libfrapmenu.h: Missing headers added.
* frap-menu-standard-rules.c: This one is currently broken. I'll
implement the properties tomorrow.
2006-09-26 Jannis Pohlmann <jannis@xfce.org>
* Makefile.am, frap-menu-rules.{c.h}: FrapMenuRulesIface interface added.
This interface will be used for the <And>, <Or> and <Not> elements.
It provides virtual methods to add filename and category rules as
well as FrapMenuRules objects (as the mentioned elements may be
nested). It also provides a virtual method for matching menu items
(essentially, desktop entries) against these rules.
* Makefile.am, frap-menu-standard-rules.{c,h}: Implemented a base
class for all rule sets (<And>, <Or>, <Not>). It implements the add
methods of FrapMenuRulesIface. The responsibility of implementing the
match method is forwarded to subclasses of FrapMenuStandardRules.
* Makefile.am, frap-menu-or-rules.{c,h}: This first implementation of
the FrapMenuRulesIface will be used for matching items against <Or>,
<Include> and <Exclude> elements. The match method is not implemented
yet, though.
2006-07-28 Jannis Pohlmann <jannis@xfce.org>
* Import as libfrapmenu into the newly created libfrap development
library. Makefile.am probably still needs some tweaking and I need to
figure out how to link test programs in libfrap/ to this library, but
apart from that, everything has been renamed and should work.
2006-07-27 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Implementation status updated. Directory names are now
resolved properly (and in reverse order).
2006-07-27 Jannis Pohlmann <jannis@xfce.org>
* tests/display-menu.c: Removed debug statement and tooltips allocation.
* libxfce4menu/xfce-menu.c: Use list for possible directory names and
try to load them in reverse order when resolving the menu directory of
an XfceMenu object. Free string lists properly.
2006-07-21 Jannis Pohlmann <jannis@xfce.org>
* STATUS: Detailled information about the implementation status added.
2006-07-21 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.c: Destroy the menu parse info in
xfce_menu_finalize, not directly after parsing the menu. Free
old parse info directory name when the menu directory name has
changed and the menu is parsed again.
* tests/CMakeLists.txt, tests/display-menu.c: Added a test program to
display the menu structure. At the moment, it only contains menus
listed in the root menu file, no merged menus or menu items (as
these features have not been implemented yet).
2006-07-20 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu-directory.{c,h}: Remove the
xfce_menu_directory_lookup method, as the lookup is performed by the
menu by using its search paths.
* libxfce4menu/xfce-menu.{c,h}: Recursively resolve menu directories
after the parsing process. xfce_menu_get_parent method added.
* tests/load-root-menu-test.c: Print menu directory information.
2006-07-17 Jannis Pohlmann <jannis@xfce.org>
* tests/load-root-menu.c: Cleanup the test program. Print legacy
and app dirs.
2006-07-17 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.{c,h}: Implement recursive <Menu> parsing.
There is no support for merging menus across files and also,
directory and desktop entry lookup is still missing.
* tests/load-root-menu.c: Extend test program to print the complete
menu hierarchy.
2006-07-17 Jannis Pohlmann <jannis@xfce.org>
* libxfce4menu/xfce-menu.{c,h}: Implemented the following elements:
elements: <DirectoryDir>, <DefaultDirectoryDirs>,
<OnlyUnallocated>, <NotOnlyUnallocated>, <Deleted>, <NotDeleted>.
Handle <Directory> differently, as we need to parse the whole menu
before we can lookup the directory file - therefor XfceMenuParseInfo
has been added, which will be used to store temporary information
in order to resolve things after parsing the menu.
Abort setting properties if new values are equal to the old ones.
* tests/load-root-menu-test.c: Display only_unallocated, delete and
directory_dirs information.
vim:set sw=8 sts=8 ts=8 noexpandtab:
|