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 1192 1193 1194 1195
|
Change log:
-----------
Version 2.0.8 (2013-02-18):
Bugs fixed:
1. Nr : 1011307
Title : pfm refuses to start on Tcl/Tk 8.6
Description :
The problem comes from the statement 'package require Itcl 3.4'.
Tcl/Tk 8.6 has version 4.0 instead of 3.4.
I thought that 'package require Itcl 3.4' means 'version 3.4
or higher', but, looking at the Tcl documentation now, I
must admit that this is wrong. What it actually means is
'version 3.4 or higher, but not as high as 4.0'. So, 3.5 and
3.7.11 would be OK, but 4.0, 4.2.7 or 5.0 are not OK. See
Tcl documentation for package require and package
vsatisfies. Especially, look at rule 3:
'A "min-bounded" requirement is a "bounded" requirement in
disguise, with the max part implicitly specified as the next
higher major version number of the min part. A version
satisfies it per the rules above.'
In my opinion, this makes it impractical to specify version
numbers with the 'package require' statements. The best way
forward is probably to remove all version specifications
from the package require statements.
2. Nr : 1011308
Title : Reports with paramaters fails if parameter name
consists of more than 1 word
Description:
Reports with paramater(s) fails if parameter name consists
of more than 1 word.
This is caused by a bug in Itcl (see
http://sourceforge.net/p/incrtcl/bugs/211/ and
http://sourceforge.net/p/incrtcl/bugs/238/).
I have worked around this bug by introducing a translation
table for the variables bound to entry widgets in class
ParmObject in source report.tcl.
A similar solution was already introduced for forms (see bug
http://pgfoundry.org/tracker/index.php?func=detail&aid=1011062&group_id=1000236&atid=1662).
Version 2.0.7 (2011-09-27):
New version of pgintcl: 3.4.0
Bugs fixed:
1. Nr : 1071
Title : Tables in schemas other than public
Description : Tables in schemas other than the 'public' schema cannot be accessed by pfm forms.
This is caused by the way pfm encloses tablenames in double quotes when
constructing SQL statements.
If the form definition has myschema.mytable as tablename, pfm uses
"myschema.mytable" in the SQL statements it constructs.
This should be "myschema"."mytable" instead.
Type : error
Priority : medium
Against : 2.0.6
Promised : 2.0.7
Status : reported
Solution : The way pfm quotes tablenames is modified as follows.
If the tablename in pfm_form already contains double quotes, pfm does not touch it.
If the tablename in pfm_form does not contain double quotes, pfm encloses every dot
in double quotes and puts double quotes around the whole tablename.
Example 1:
tablename in pfm_form: "first.last"
The tablename in pfm_form contains double quotes. So pfm does not touch it.
SQL statement generated in update statement
UPDATE "first.last" SET "Name" = 'Jones'
WHERE "Nr" = 5
Example 2:
tablename in pfm_form: myschema.mytable
The tablename in pfm_from does not contain double quotes. So, pfm considers
the dot as a word separator.
SQL statement genereated in update statement
UPDATE "myschema"."mytable" SET "phoneNumber" = '06 874 89 90'
WHERE ("id" = 1072)
Originator : Martin Hoffmann
Date : 2011-09-27
2. Nr : 1072
Title : pfm ignores the orderby attribute in pfm_link
Description : pfm ignores the orderby attribute in pfm_link.
Type : error
Priority : medium
Against : 2.0.6
Promised : 2.0.7
Status : reported
Solution : method 'followLink' of class 'FormTab' is corrected.
Originator : wim
Date : 2011-09-27
3. Nr : 1073
Title : Tcl run time error when opening empty listbox
Description : Class ListBox in source misc.tcl causes a Tcl run time error when displaying
an empty ListBox.
Type : error
Priority : medium
Against : 2.0.6
Promised : 2.0.7
Status : reported
Solution : Constructor of class ListBox tests for empty valuelist.
If valuelist empty, pfm does not attempt to set focus to a list item.
Originator : wim
Date : 2011-09-27
Version 2.0.6 (2011-07-03):
- Bugfix:
Nr : 1070
Title : Attribute names with more than one word
Description : If a table has a column name consisting of more than one word,
the corresponding values are not displayed on the form and they
cannot be modified.
Type : error
Priority : medium
Against : 2.0.5
Promised : 2.0.6
Status : reported
Solution : This is caused by a bug in Itcl (Version 3.4b1, patchLevel 3.4.0).
If an object instance variable is an array element with a name
consisting of two words and if that variable is bound to an entry
widget, the array element's value is not displayed in the entry widget.
If a global variable is an array element with a name consisting of two
words and if that variable is bound to an entry widget, the array
element's value is displayed allright in the entry widget.
A work around is implemented in pfm.
Instead of binding record($attrib) directly to the form's entry widgets,
record($recordIdx($attrib)) is bound to the form's entry widgets where
recordIdx acts as a conversion table which maps the attribute names ($attrib)
to integers.
Originator : Mike Ashworth
Date : 2011-07-03
Version 2.0.5 (2010-11-21):
- The aggregate function STDDEV has been modified to be in line with
the definition used by PostgreSQL. In previous versions, pfm used
the "population standard deviation"
SQRT (SUM( (value_i - AVG(value))**2 ) / N )
whereas PostgreSQL used the "sample standard deviation"
SQRT (SUM( (value_i - AVG(value))**2 ) / (N - 1) )
From now on pfm also uses the "sample standard deviation"
- The default printcmd option has been slightly modified on Linux
systems: the option "-sPAPERSIZE=a4" has been added to the ps2pdf
subcommand. This is necessary on some systems where ghostscript
implicitly assumes papersize "letter".
- The included Tclkit and Pgintcl have been upgraded to versions
8.5.9 and 3.2.1 respectively.
- Since version 2.0.5, I don't include binaries for the 64-bit
architectures anymore. The reason is that the 64-bit binaries of the
Tclkit for linux are not published by the Equi4 anymore. Also, I
don't have a 64-bit computer to test the 64-bit binaries. I am
reasonably confident that the 32-bit binaries work without problem
on a 64 bit machine. If you insist on running a 64-bit version, you
can easily replace the 32-bit binaries of tclkit with their 64-bit
variants, AFTER installation. To do so:
- On Linux replace the installed 32 bit binary tclkit in the pfm
installation directory with its 64 bit variant. Make sure
that it is still called tclkit and that it is executable.
- On Windows replace the installed 32 bit binaries tclkit.exe and
tclkitsh.exe in the pfm installation directory with their 64 bit
variants. Make sure that they are still called tclkit.exe
and tcklkitsh.exe.
Version 2.0.4 (2008-10-09):
Bugfix:
Nr : 1069
Title : Run time error in get parameters for report
Description : If a report has more than one parameter that has to be provided
at run time, a fatal error occurs at run time.
Type : error
Priority : high
Against : 2.0.3
Promised : 2.0.4
Status : promised
Solution : This is caused by an error in the constructor for class ParmObject
in source report.tcl.
There is a loop which defines a label and an entry for each parameter,
but this loop lacks an "incr idx", which causes all labels and entries to
be defined with the same name. Adding an "incr idx" ate the end of the
loop, solves this problem.
Originator : wim
Date : 2008-10-09
Version 2.0.3 (2008-05-04):
Bugfixes:
Nr : 1067
Title : Connection with psql fails on PostgreSQL 8.3
Description : The connection with 'psql' fails on the Windows version with
PostgreSQL 8.3.
Since version 8.3, psql no longer accepts the command line
option '--user'. It has to be '--username'.
Type : error
Priority : high
Against : 2.0.2
Promised : 2.0.3
Status : promised
Solution : This error is corrected in method 'connect_sql' in postgresql.tcl.
Originator : Peter ZhaoKai
Date : 2008-05-04
Nr : 1068
Title : Background colours wrong on some systems
Description : On Ubuntu Linux 8.04, the background colours of entry and text widgets
are gray instead of white.
Type : error
Priority : low
Against : 2.0.2
Promised : 2.0.3
Status : promised
Solution : This is corrected in procedure installTheme by adding:
option add *Entry.background {White}
option add *Text.background {White}
Originator : wim
Date : 2008-05-04
Version 2.0.2 (2008-04-28):
Enhancement:
Nr : 1065
Title : Navigation buttons on form
Description : It would be nice to have buttons on the form for navigating
through the internal buffer. The current solution with the
"Go to" menu is not so obvious.
Type : enhancement
Priority : low
Against : 2.0.1
Promised : 2.0.2
Status : promised
Solution : Introduce arrow-buttons on the statusbar left and right of
the record number indication.
Originator : Gerd Knig
Date : 2008-04-24
Bugfixes:
Nr : 1063
Title : No error message when report query fails
Description : If the user runs a report and the report's query has an SQL syntax
error, nothing is printed: no report header and no error message.
Type : error
Priority : medium
Against : 2.0.1
Promised : 2.0.2
Status : promised
Solution : The runQuery method of class Report should also return the errMsg.
If runQuery fails, the constructor of class Report should print
the report header and the errMsg returned by runQuery.
Originator : wim
Date : 2008-04-22
Nr : 1064
Title : An error occurs when a report query is succesfull
but returns no data
Description : If the user runs a report and the report's query is
syntactically OK but returns no data, an error occurs.
This situation must be more clearly communicated to the user.
Type : error
Priority : medium
Against : 2.0.1
Promised : 2.0.2
Status : promised
Solution : The runQuery method of class Report should not return success when
the query does not return any data.
It should return an error message that can be printed following the
report header.
Originator : wim
Date : 2008-04-22
Nr : 1066
Title : Problem with "AltUnderlined" keyboard shortcuts
Description : The keyboard shortcuts <Alt-x> and <Alt-s> on the forms
window for the Expand and Select buttons let Tk completely
derail on the Windows version: it goes in an endless
loop with high processor load. It is not clear what
causes this problem. It does not occur on the Linux
version.
Type : error
Priority : medium
Against : 2.0.1
Promised : 2.0.2
Status : promised
Solution : Replacing the "after idle" with "after 200" in the
bind statement of defineButton proc seems to solve
the problem.
Removing the "after" statement altogether also solves
the problem, but introduces another problem which
only occurs on the Linux version: a keyboard shortcut
that destroys a text widget causes Tcl/Tk to raise
an error because it still tries to do something with
the text widget after it has already been destroyed.
Originator : wim
Date : 2008-04-28
Version 2.0.1 (2008-04-20):
Bugfixes:
- 1061: Help file for non-English locales
If the "Help -> Help file" menu is invoked from a non-English
locale and if no translation for that locale exists the
"doc/index.html" page is displayed.
The expected behaviour is that the English version is displayed
as fallback: "doc/en/index.html".
- 1062: Error when pressing open or run on empty listbox of main
window
If "Open" is pressed on a the "Forms" or "Design" tab of the
main window when thare are no forms in the listbox, an error
occurs.
If "Run" is pressed on a the "Reports" tab of the main window
when thare are no reports in the listbox, an error occurs.
The "Open" and "Run" buttons should be disabled in these cases.
Version 2.0.0 (2008-04-18):
- Complete redesign: pfm now requires Tcl/Tk version 8.5 and Itcl,
the extension for object oriented programming. The version
of the pfm_tables remains 1.5.0, i.e. no database conversion
is required when upgrading from a 1.5.* version.
- New features: Most new features have to do with an improved look
of the application, but internally the changes are much
more extensive.
- New widgets such as notebook, combobox and treeview
- Themes (choosable under options)
- Antialiased instead of bitmapped fonts under Linux
- It is now possible to have more than 1 form open
simultaneously.
- When following a link to another form, a new tab is
created on the form window such that the form and record
from which the link originates, remains available by
activating its tab.
- The psql function is more convenient now. There is less
need to press the Run button:
- if you press the Return key just after a ';',
the command is automatically sent to psql
- if you press the Return key when the first character
in the SQL statement area is a '\' the command is
automatically sent to psql.
- All user interface texts are now controlled by the
Tcls's msgcat package. This makes it easier to translate
pfm to other languages. No translations have been done
yet.
- The printcmd option has changed. It is now a list of
commands and printing now always uses a temporary file,
instead of a command pipe.
- The options file has a new structure and is renamed
to .pfm2 on UNIX paltforms and to APPDATA\pfm\pfm2.conf
on Windows platforms.
- A new, much more advanced installer script for the Linux
variant which can also install a menu entry and a desktop
icon if the xdg-utils package is installed.
- A new NSIS installer for the Windows variant
(see http://nsis.sourceforge.net for more details). It
also installs a desktop icon and a Start Menu entry
under 'Programs'.
- Dropped features:
- It is no longer possible to change the fonts used for
the application, but it is possible to increase (decrease)
the font size.
- pgintcl version 1.5.0 is no longer included. This was
only necessary for PostgreSQL versions before 7.4.
Version 1.5.4 (2007-10-29):
- Bug 1060:
Nr : 1060
Title : Run time error in aggregate functions
Description : A run time error in the aggregate functions of the report
generator like SUM, AVG and STDDEV occurs in the following
situation:
- the report is based on a LEFT OUTER JOIN;
- there is no record for the right table, i.e. nulls
are returned for the right table;
- the aggregate function is applied to an attribute of the
right table.
Type : error
Priority : medium
Against : 1.5.3
Promised : 1.5.4
Solution : Modification on aggregate functions SUM, AVG and STDDEV
such that null-values are ignored. So, for AVG and STDDEV
they are also ignored for counting the number of values.
Originator : wim
Date : 2007-10-29
Version 1.5.3 (2007-09-22):
- Feature request 1059:
Nr : 1059
Title : Readonly attribute with default initial value
Description : It would be nice to have the possibility to set an atrribute
"tgReadOnly" and still have it assigned the initial default
value defined in the form definition. At the moment that is
not possible because "tgReadOnly" attributes are not
considered attributes of the form's main table.
Type : enhancement
Priority : medium
Against : 1.5.2
Promised : 1.5.3
Solution : Change 1 statement in proc getAttributes:
statement in 1.5.2:
if { ![string equal $typeofget {tgReadOnly}] } then {
lappend tableAttribList $attribute
}
statement in 1.5.3:
if { ($typeofget ne {tgReadOnly}) || ($defVal ne {}) } then
{
lappend tableAttribList $attribute
}
Originator : Mark Hindley
Date : 2007-09-18
- Correction: In the ::gen:: module there where a number of
statements with "upvar 0". Although I have never seen the
procedures ListBox or TextEdit fail in pfm, I think now, after
reading the tcl documentation again, that it should be "upvar #0"
instead of "upvar 0".
- New feature: The TextEdit window now also has a "Find string" function.
- tclkit 8.4.13 has been upgraded to version 8.4.15
Version 1.5.2 (2007-08-21):
- Bug 1057: convert_from_1.2.0.sql script fails on PostgreSQL 7.4
The convert_from_1.2.0.sql script fails on PostgreSQL version
7.4. on two statements:
1. UPDATE pfm_form SET help = E'The data returned by the
report''s SQL SELECT statement may be considered as a
table with a column for each ''field'' specified after
the ....'
2. ALTER TABLE ONLY pfm_form
ADD COLUMN sqlorderby text,
ADD COLUMN sqllimit text;
Solution:
1. Instead of using the E'....' syntax, convert_from_1.2.0
now uses the standard SQL syntax: string is delimited by
single quotes, single quotes within the string are doubled
and strings of more than 1 line are also written as
several lines instead of using "\n". Example:
UPDATE test
SET poem = 'Wee, sleekit, cow''rin, tim''rous beastie,
O, what a panic''s in thy breastie!';
This makes it necessary to change the ConvertToUTF-8
procedure in pfm.tcl as well.
When pfm runs the convert_from_1.2.0.sql script, it
creates a temporary file which is the result of converting
the character encoding to UTF-8. This temporary file is
made using the standard tcl procedures "open" and "puts".
These procedures normally use the platform specific
conventions for creating text files. Hence, on Windows the
temporary file uses CR LF as line endings. When this
temporary file is offered to psql with "i", psql
recognizes the LF as line ending, but interprets the CR as
an extra character of the string.
To avoid this problem, the procedure "ConvertToUTF-8" in
pfm.tcl is changed. The statement
fconfigure $outFile -encoding utf-8
is changed to
fconfigure $outFile -encoding utf-8 -translation lf
2. Make two statements:
ALTER TABLE ONLY pfm_form ADD COLUMN sqlorderby text;
ALTER TABLE ONLY pfm_form ADD COLUMN sqllimit text;
- Bug 1058:
If the user switches mode (normal / design) while a form is open
and the user then does any operation on the open form, a run
time error occurs.
This is caused by the fact that the global variable formsArray
is only filled with the forms that also appear in the listbox on
the main window.
To avoid this problem, the procedure refreshFormsList is
modified such that formsArray is filled with all the forms,
regardless of the mode (normal/design).
Version 1.5.1 (2007-02-27):
- Bug 1054: Error in locateRecord:
When returning from a link and when there are no records
left in the form that is about to be opened, "locateRecord"
fails because "match" is a non-existent variable when
executing "if {$match}" just after the for loop.
A "set match 0" has been added before the for loop.
- Bug 1055: Focus not visible in Windows version:
In the Windows version, it is not clear which entry has the
input focus.
This makes it impossible to to use the form without using
the mouse.
The option "highlightThickness" has been set to 1.
This was the default on UNIX platforms, but not on Windows.
- Bug 1056: Run time error when closing Reports window.
Sometimes closing the "Reports" window causes a run time
error at
set ::report::windowSize(.report) \
[string map {{+0+0} {}} [wm geometry .report]]
in proc cmdReportSQL.
It is not reproducable.
I assume that it is caused by the fact that this statement,
which is bound to the <Configure> event on toplevel .report, is
executed sometimes after .report has already been destroyed.
Therefore a "catch" has been added, to avoid raising a run time
error.
The same has been done for all statements boud to <Configure>
events.
Version 1.5.0 (2007-02-13):
- The designer of a form can define a default ORDER BY clause
which is displayed in teh "Open form" window when the user opens
a form.
- The designer of a form can limit the number of records loaded
into the form's internal buffer. This makes it possible to
handle large tables without using a lot of memory.
- When working with forms, it is possible to open several "Expand"
windows simultaneously.
- The options editor has been made more user friendly.
- The report generator can now handle mult-line data in a table
layout also.
- You can specify a maximum line length for data displayed in a
report. When data exceed that maximum, one or more line breaks
are inserted before printing the report. This feature, together
with the previous one makes the report generator much more
usable.
- There is an automatic update on the pfm_tables when you start
using version 1.5.0 on a database that has already been used
with a previous version of pfm.
- Many windows have resizable panes now.
- You can use the mouse wheel to scroll the form canvas now.
Version 1.4.3 (2007-01-10):
- Bug 1052 solved: pfm hangs when quiting, in some versions of
Tcl/Tk.
- Version 3.0.1 of pgintcl replaces version 3.0.0
- Version 8.4.13 of Tclkit replaces version 8.4.11
- The pfm project has moved to pgFoundry at
http://pgfoundry.org/projects/pfm/
- There is a new option, called 'fontstyle', which determines
whether the fonts for menus, buttons, labels and listboxes are
'bold' or 'normal'. The default is 'normal'. So, UNIX users will
notice a difference with respect to earlier versions. They can
go back to bold fonts by setting this option to 'bold'.
- The options editor now has a font chooser, which makes it easier
to modify the 'fontmonospace' and 'fontproportional' options.
Version 1.4.2 (2006-07-05):
- Bug 1049 solved: When the form for a view is displayed,
the Record menu is disabled now.
- Feature request 1050: When pressing [Update] or [Add] on a form,
the input focus should stay on the same attribute entry.
Similarly, when pressing [OK] or [Cancel] when updating or
adding a record, the input focus should stay on the same
attribute entry.
- Feature request 1051: The open form window should also have a
Form -> Close menu.
- The "relief" of the attribute name labels on the form window has
been changed to "sunken".
- I have finally discovered how to get a meaningful result from
the canvas "bbox" command. First call "update" before calling
the canvas "bbox" command. That has been used to get the correct
size for the canvas scrollregion in displayAttribLabels and
displayAttribEntries.
- The scrollForm procedure has been reworked. The attribute with
input focus now stays nicely in the visible part of the canvas.
Version 1.4.1 (2006-07-01):
- The user interface has been modified to make it possible to
operate pfm without using the mouse. See text file
mouseless-operation.txt in the doc sub-directory.
Acknowledgement: I hereby thank Mark Hindley, who has suggested
--------------- to improve pfm in this area. Many of his ideas
have found their way into this version.
- The window that used to be called "Query mode" of form, has been
renamed to "Open form" window, and the so called "Paste buttons"
have been moved to 2 menus which can be invoked by 2 buttons:
o paste attribute Names; and
o paste attribute Valuse.
- The help file has been updated accordingly.
- The help file's layout and structure has been reworked. It now
uses a less poor html. On browsers that support frames, the
table of contents is displayed in the left frame and the body of
the document is displayed in the right frame.
Version 1.4.0 (2006-06-13):
- This a preliminary version for evaluation and testing.
- The user interface has been modified such that there is less
need for to user to use the mouse. See text file
mouseless-operation.txt in the doc sub-directory.
- The help file has not been updated yet.
- This version is only available for UNIX platforms.
Version 1.3.0 (2006-05-29):
- On UNIX and Linux systems, pfm now uses the UNIX "cat" utility
instead of the "cat.tcl" script. This removes the necessity to
have the tclkit installed on UNIX systems on which pfm runs in
the system's native Tcl/Tk environment. The README.txt file has
been updated accordingly.
- On UNIX and Linux systems, pfm now has a configuration file
named pfm.conf which defines values for some configuration
parameters. It resides either in pfm's installations directory
or in /etc.
- The files in the distribution have been moved to other
subdirectories to ease the derivation of a Debian package.
- There are 2 new menu items in the Tools menu:
o install pfm_* tables
o install example database.
- The user is no longer asked whether to install the pfm_* tables
when a database is opened that does not contains them yet.
Instead, a warrning that the pfm_* tables are not installed is
issued and a hint is given to use the "Tools -> Install pfm_*
tables" or the "Tools -> Install example database" menu.
- The Tools -> Install example database menu eases the
installation of the example databases.
- When importing an SQL-script in the RunSQL window, the user can
now also select the character encoding with which the SQL-script
was made.
- The help text has been enhanced and corrected on several
locations:
o help text for pfm_form was corrected, also the help text
inside pfm_form. In particular, the statement that a form
has a one-to-one relation with just one table was wrong. A
form can only administer the data of one table, but it is
possible that there are more forms for the same table.
o Modifications to document the new features.
- Some menu items have become context aware:
o Database -> Close is disabled when no database is open.
o Database -> Open ... is disabled when a database is open.
o Install Tools -> Install pfm_* tables and Tools -> Install
example database are disabled when a database that already
contains the pfm_* tables is open.
- pfm no longer touches the pfm_* tables when it finds an older,
compatible version. In this way older, compatible versions of
pfm can continue accessing databases that have been accessed by
this version of pfm. Similarly, when installing the pfm_tables
or an example database and when converting a database of
versions before 1.2.0, pfm marks the pfm_tables as belonging to
version 1.2.0 (the earliest compatible version). In this way,
older, compatible versions of pfm can access databases that have
been made with this version of pfm.
- E-mail address for sending bug reports has been changed in
README.txt and it has also been added in the 'Help -> About'
response.
Version 1.2.5 (2006-01-04):
- Bugfix: The layout of a multi-section report was wrong if 2
consecutive records have the same values for the fields of a
higher numbered section but different values for the fields of a
lower numbered section.
Version 1.2.4 (2005-12-28):
- The default value for the option "browser" has been modified to
"firefox %s" in the case of UNIX.
- On UNIX, the browser command is now implicitly run in the
background so that the pfm user interface is not blocked by
calling the browser. So, it is no longer necessary to end the
browser command with a "&". On Windows, that was already the
case before.
- Version 8.4.9 of the tclkit has been replaced with version 8.4.11.
- The ".gif" files of the on-line help have been converted to
".png" format.
Version 1.2.3 (2005-04-18):
- Version 2.2.0 of pgintcl has been replaced with version 3.0.0.
This new version of pgintcl allows the use of database character
encodings other than LATIN1.
Version 1.2.2 (2005-02-06):
- Bug solved: Application error when trying to scroll the text
widget of the SELECT statement in the open form window.
Version 1.2.1 (2005-01-22):
- Corrections in help text.
- Modification in database conversion from 1.2.0 to 1.2.1 such
that it does not use the keyword "DEFAULT" as value for INSERT
... INTO. This to be compatible with older versions of
PostgreSQL.
- On Windows platforms the ~/.pgpass file is moved and renamed to
%APPDATA%\postgresql\pgpass.conf
where APPDATA is the environment variable which points to the
user's application data. Usually that is
C:\Documents and Settings\<username>\Application Data
- Similarly on Windows platforms, the ~/.pfmrc file is moved and
renamed to:
%APPDATA%\pfm\pfm.conf
Version 1.2.0 (2005-01-10):
- Previous versions of pfm relied upon the 'oid' for updating
records. However, according to the PostgreSQL documentation the
uniqueness of the 'oid' is not guaranteed, even not within a
table. To solve this problem, a new attribute 'pkey' is
introduced in pfm_form. This attribute should be filled with the
space separated list of primary key attributes of the form's
main table. If that table does not have a primary key, then the
table cannot be modified.
For databases already managed with a previous version of pfm,
the database conversion script fills 'pkey' with 'oid'. This
means that pfm continues to work with the oid if you do not
change it manually. You can continue to use the oid as pkey, but
then it is recommended to add a UNIQUE constraint on the oid.
- In the previous versions of pfm you could assign the default
value to an attribute when adding a record by typing an '=' sign
for the attribute value. This feature has been replaced by
another, more advanced feature. You can now define a default
value for an attribute in pfm_attribute. If that value begins
with an '=' sign, it must be an SQL SELECT statement that
returns exactly one value. This replacement was done, because
the old one did not work properly with attributes that were
mentioned in the 'pkey' list.
Note: The automatic conversion script does not automatically
fill the 'default' attribute of pfm_attribute. You may
need to fill out this attribute manually after the
conversion script has run.
- Enhancement of the report generator. It is now possible to print
summaries at the end of the report or report sections. These
summaries are calculated by means of aggregate operators COUNT,
SUM, AVG, STDDEV, MIN, or MAX applied on the fields of the
report.
- The "Import SQL" feature can now also use the psql '\i'
command. This was necessary because the SQL script for
converting to the new format of the pfm_* tables turned out to
be too long to run from the SQL text window.
- There are a few new options:
o 'tempdir' defines a directory where pfm can write
temporary files. The default value is '\tmp'.
o 'psql' defines where pfm can find the 'psql' executable.
o 'fontmonospace' defines the monospace font famlily and size
o 'fontproportional' defines the proportional font family
and size.
- There is a context menu which pops up when the right mouse
button is clicked. It has the classic 'Copy', 'Cut' and 'Paste'
menu items and can be used to move/copy text to/from the
clipboard.
- pfm now fully supports the ./pgpass file, including the '\:' and
the '\\' escapes.
- the buttons on the left of the form, labeled with the attribute
names, can be used to search the internal buffer for records
with a particular value for the corresponding attribute;
Note: Only the internal buffer is searched. If the record you
are looking for exists in the database but is not loaded
in the internal buffer, it cannot be found in this way.
Version 1.1.1 (2004-11-24):
- Wrong status of "After Last" after adding a record
After adding a record the status of the dummy record after the
last one is put to "After last". However, all the cases in which
pfm checks for the status of a record, it only checks for "After
Last". The result is that the "Update" button is not disabled
when the dummy "After Last" record is displayed. If that button
is pressed, a run-time error occurs.
Solution:
The spelling of the statuses has been reviewed. They are now
all with only the first word capitalised. They are :
Not modified
Updated
Added
Not added
Deleted
After last
Adding
Updating
The last 2 ones have been added to remind the user what he
is doing after having pressed [Add] or [Updated]
respectively.
- Links are still enabled when in Updating or Adding mode:
When updating or adding a record, the link buttons are still
enabled. Although nothing wrong seems to result from it, it
would be cleaner if they were disbaled.
- Problem with pfm.kit when glibc has version 2.2.5:
The pfm.kit included in pfm 1.1.0. does not work with glibc
2.2.5. It requires glibc 2.3.
Solution:
pfm has been reworked such that it does not require Iwidgets
anymore.
pfm used Iwidgets mainly for getting scrollable text and listbox
widgets. These can be made, with a little extra effort, in pure
Tcl/Tk. A workaround has been implemented for simulating a
scrollable frame which is absent in pure Tcl/Tk. The on-line
help which used the scrolledhtml widget has been replaced with a
call to an external html-browser. There is a new option, which
allows the user to choose the external browser.
The advantage is that pfm.kit no longer contains binary files,
which enhances its portatbility.
Version 1.1.0 (2004-11-11):
- Option "usePGPASSWORD" has been added. It determines whether pfm
uses the environment variable PGPASSWORD to store the password
entered by the user during the short time between clicking 'OK'
on the 'Open database' window and the actual opening of the
database. If this option is 'no', the user is not prompted for a
password when opening a database, but then a properly configured
~/.pgpass file is required.
Notes:
o This option was added because, according to the postgreSQL
documentation, the use of the PGPASSWORD environment
variable is deprecated for security reasons.
o The default value for this options is still 'yes', for
backwards compatibilty and for getting started more
easily. Consider changing this option to 'no'.
o For connecting to postgreSQL via the Tcl interfaces Pgtcl
or pgin.tcl, pfm reads the .pgpass file and supplies the
password to postgreSQL via the "password" connection
parameter. This was necessary because pgin.tcl ignores the
pgpass file.
o pfm supports the "\:" escape sequence in ~/.pgpass, but
not the "\\" escape sequence.
- The connection parameter and option "hostaddr" have been dropped
because psql does not have a matching "--hostaddr" option, which
led to a behaviour that was difficult to understand and which
was unnecessary complicated.
- Behaviour of 'Run SQL' command history was improved again. In
particular, the input screen is cleared automatically after
pressing 'Run'. This saves the user pressing 'Clear' after every
'Run'. In the case that he wants to see and reuse the command,
he can do so by pressing 'Back'.
- It has been reported (see bug 935) that pfm does not work with
older versions of postgreSQL. The problem is probably only
install_pfm.sql, which has been generated by pg_dump of 7.3.2.,
but which is not understood by older versions of postgreSQL.
install_pfm has been modified such that it probably also works
with version 7.2.1. of postgreSQL.
Note: I cannot test this myself, because I don't have access to
a version 7.2.1. I would be quite happy to receive
feedback on this.
The views pfm_table, pfm_table_def and pfm_table_report have
been dropped.
- The help file has been improved on serveral points.
- The report definition has changed significantly. The attributes
'table_or_view', 'sqlwhere', and 'orderby' of pfm_report have
been combined into one attribute 'sqlselect' which may contain
parameters that are entered by the user at run-time. This
enhances the user's possibilty to introduce run-time parameters
for the report, and there is no need anymore to create a view
for designing a report.
- The menu-item "Tools -> Install pfm-* tables" has been
dropped. Instead, the user is prompted to install the pfm_*
tables when opening a database that does not contain them yet.
- When opening a database containing the pfm_tables generated by
an older version of pfm, the user is prompted to convert them to
the new format.
- An addressbook sample database has been added. The sample
database of version 1.0.4. has been renamed to customerdb.
- The groupby_having attribute of pfm_form has been renamed to
groupby. The reason is that no HAVING CLAUSE should be specified
in the definition of the form. The WHERE clause specified by the
user when opening the form is automatically converted to a
HAVING clause if there is a GROUP BY clause in the form
definition.
- pgintcl versions 2.1.0 and 1.5.0 have been included in the
distribution.
- Tclkit for linux on PC is included in the distribution.
- A GUI install script is included in the distribution (only for
Linux on PC).
- Bug 1048 Encoding problems:
When pfm uses pgintcl to communicate with postgreSQL, the
special characters like , , etc., typed on the Run SQL input
screen are not correctly entered in the database.
This is the situation in version 1.0.4:
If Pgtcl is loaded, it sets the environment variable
PGCLIENTENCODING to "UNICODE". When pfm subsequently calls
'psql' for the 'Run SQL' feature of pfm, 'psql' also assumes
client_encoding "UNICODE". Therefore, pfm sends data with
encoding UTF-8 to 'psql'.
If pgintcl is loaded, the environment variable
PGCLIENTENCODING is not set. When pfm subsequently calls
'psql' for the 'Run SQL' feature of pfm, 'psql' assumes the
same encoding as the database, e.g. LATIN1, but since pfm
still sends the data with encoding UTF-8, there is an
encoding mismatch between pfm and psql.
Solution in version 1.1.0:
After loading pgintcl, pfm also sets the environment
variable PGCLIENTENCODING to "UNICODE".
Version 1.0.4. (2004-02-19):
- Bugs solved:
o 690: pfm hangs when psql exits
o 691: The' Run SQL' command history behaves strangely
sometimes
o 692: Printing fails if title contains several words
- Feature request implemented:
o 693: Character encoding for sending text to print command
Version 1.0.3. (2004-02-16):
- Bug 686 solved: Connecting to psql fails in some cases:
Database name, host or hostaddr, port, user and password
specified by the user at database open are reused for invoking
psql.
- psql is invoked in a different way now: it is invoked when a
database is opened and it is closed when the database is
closed. The result is that the state of psql is no longer
cleared after each command sent to psql.
- The 'dblist' option is no longer read from the pg_database table
when the options are reset to their default values. The default
is now a list containing only the database with the same name as
the user's logon name.
- When opening a database, the user can either type the database
name directly or select it from the 'dblist' option. When the
database is successfully opened, the name is added to the
'dblist' option if it was not already in it. The name of the
last opened database becomes the default database for the next
'open database'.
Version 1.0.2. (2004-02-12)
- Bug 679 solved: Transaction kept open for too long.
- Bug 680 solved: Updating a record already deleted by another
user.
- Contact information in copy right notices changed.
Version 1.0.1. (2004-02-06)
- E-mail address in copy right notices changed back to personal
E-mail because pfm-comments mailing list was out of order.
Version 1.0.0. (2004-02-05)
- First published version
|