Bug 142728 - when you click x10^y you cannot change the sign of y until the number y is inserted
Summary: when you click x10^y you cannot change the sign of y until the number y is i...
Status: RESOLVED FIXED
Alias: None
Product: kcalc
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR wishlist
Target Milestone: ---
Assignee: Gabriel Barrantes
URL:
Keywords:
: 396514 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-03-09 13:14 UTC by pier andre
Modified: 2024-01-25 17:27 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description pier andre 2007-03-09 13:14:32 UTC
Version:           2.0.5 (using KDE 3.5.5 "release 45.1" , openSUSE )
Compiler:          Target: i586-suse-linux
OS:                Linux (i686) release 2.6.16.21-0.25-default

insert 2 then press x 10^y then press change sign then press 4, i obtain 2 10^4 but i expect 2 10^-4, the sign of exponent should change.
insert 2 then press x 10^y then press 4 then press change sign, now it is ok i obtain 2 10^-4 but it is more natural the first procedure instead of the second, and and 2 10^0 or 2 10^-0 doesn't change anything in the meaning
Comment 1 Philip Rodrigues 2007-03-10 14:20:33 UTC
Well, it's consistent, I guess: if you press "plus/minus" then 4, you get 4 (and not -4), so the behaviour with the exponent is the same. I'll change this to a wish then
Comment 2 David Johnson 2008-12-17 05:48:32 UTC
You're right in that the goal is consistancy. But a survey of other calculators shows that your method is more common. Keeping on wishlist.
Comment 3 Justin Zobel 2021-03-09 03:53:42 UTC
Thank you for the bug report.

As this report hasn't seen any changes in 5 years or more, we ask if you can please confirm that the issue still persists.

If this bug is no longer persisting or relevant please change the status to resolved.
Comment 4 Peter Ped Helcmanovsky 2021-09-15 10:28:57 UTC
(In reply to Justin Zobel from comment #3)
> As this report hasn't seen any changes in 5 years or more, we ask if you can
> please confirm that the issue still persists.

KCalc 21.08.1 (current KDE Neon user package at this time), the OP issue is still present:

press: 5, 5, +/-,  get -55, another press +/- leads to 55
press: 5, +/-, 5,  get -55, another press +/- leads to 55
press: +/-, 5, 5,  get 55, another press +/- leads to -55 (topic of this report)

Seems the "+/-" is already capable to operate on incomplete value and could undo/redo the effect when pressed multiple times during entering value.

It works even with zero value with decimal dot (press: "dot", +/-, get "-0.").

So the only situation when it doesn't work is before any non-zero-digit or dot is pressed. From UI and expression-Math point of view I can't right now figure out any issue with enabling it, the only "catch" is to distinguish between +/- pressed after or before value, i.e. 5, +/-, +, +/-, 5 should result in expression "-5+-5", with the operation "+" creating boundary between first/second value.

TLDR: still valid wish as far as I can tell.
Comment 5 Bug Janitor Service 2023-11-03 02:25:33 UTC
A possibly relevant merge request was started @ https://invent.kde.org/utilities/kcalc/-/merge_requests/67
Comment 6 Gabriel Barrantes 2023-11-09 01:49:08 UTC
*** Bug 396514 has been marked as a duplicate of this bug. ***
Comment 7 Carl Schwan 2024-01-25 17:27:52 UTC
Git commit c7864e9547b2ef2e9e318a88c78ba51f10fbc5e3 by Carl Schwan, on behalf of Gabriel Barrantes.
Committed on 25/01/2024 at 18:27.
Pushed by carlschwan into branch 'master'.

Add display for user's input

Add display to keep the user's entries visible during the whole calculation process, this allows editing the expression at any point to make any correction the user considers opportune. This display allows coping/pasting an expression to be calculated, that can also be edited as required.

All currently implemented functions are supported and also was added support for 0x, 0b and 0 as prefixes for hex, binary and octal numbers.

Before:![image.png](/uploads/bfd53d4ddb462c995181547c24f3ecbc/image.png){width="225" height="211"}

After:

![image.png](/uploads/0b1e83cff41409c5d925e8014cf6f988/image.png){width="258" height="258"}![image.png](/uploads/e6cb88f4492ca0b98f9ebb08e669bc9f/image.png){width=262 height=262}

New classes added:

* KCalcToken: contains a given valid token such as an operation (+, -, ...), a function (cos, ln, ...), a parenthesis or a number.
* KCalcParser: provides an API to convert a given string (for example "1+cos(4.5)") to a Queue of KCalcToken objects.
* KCalcInputDisplay: this is a customized QLineEdit widget, it holds the user's input.
* KCalcDisplayFrame: holds the input display, result display and some labels.
* CalcEngine_p: encapsulates the functionality that used to be available in CalcEngine class, to be only visible for KCalcToken objects.

Modified classes:

* CalcEngine: added the main algorithm to process the calculation, based on common Operator-precedence parsers.

@teams/qa @teams/vdg @teams/usability
Related: bug 461010, bug 470371, bug 470591, bug 459999, bug 443276, bug 447347, bug 454835

M  +17   -1    CMakeLists.txt
A  +20   -0    autotests/CMakeLists.txt
A  +239  -0    autotests/kcalc_parser_core_test.cpp     [License: GPL(v2.0+)]
M  +352  -363  kcalc.cpp
M  +39   -19   kcalc.h
M  +600  -300  kcalc.ui
M  +1    -19   kcalc_const_menu.cpp
M  +2    -1    kcalc_const_menu.h
M  +411  -828  kcalc_core.cpp
M  +24   -107  kcalc_core.h
A  +713  -0    kcalc_core_p.cpp     [License: GPL(v2.0+)]
A  +92   -0    kcalc_core_p.h     [License: GPL(v2.0+)]
A  +57   -0    kcalc_display_frame.cpp     [License: GPL(v2.0+)]
A  +24   -0    kcalc_display_frame.h     [License: GPL(v2.0+)]
A  +101  -0    kcalc_input_display.cpp     [License: GPL(v2.0+)]
A  +36   -0    kcalc_input_display.h     [License: GPL(v2.0+)]
A  +776  -0    kcalc_parser.cpp     [License: GPL(v2.0+)]
A  +155  -0    kcalc_parser.h     [License: GPL(v2.0+)]
A  +64   -0    kcalc_priority_levels_p.h     [License: GPL(v2.0+)]
A  +412  -0    kcalc_token.cpp     [License: GPL(v2.0+)]
A  +175  -0    kcalc_token.h     [License: GPL(v2.0+)]
M  +3    -72   kcalcdisplay.cpp
M  +0    -1    kcalcdisplay.h
M  +1    -42   kcalchistory.cpp
M  +0    -3    kcalchistory.h
M  +9    -1    knumber/knumber.cpp
M  +2    -0    knumber/knumber.h
M  +4    -4    scienceconstants.xml

https://invent.kde.org/utilities/kcalc/-/commit/c7864e9547b2ef2e9e318a88c78ba51f10fbc5e3