Title: Interface Optimization Post by: MrBison on November 30, 2010, 03:38:15 PM Bitcoin is a very nice system, but the program's interface could have a little work. Here is my concept of the interface (somewhat inspired by a some proprietary payment system's Windows interface):
http://static.itmages.com/i/10/1130/h_1291130363_7144ae060d.png Instead of separate tabs for 4 kinds of transactions, we have four "filter" options": 1. All transactions / Sent or Received transactions / Sent only / Received only. These work just like the tabs above. 2. Today / Last 3 days / Last week / Last month / Last quarter / Last year / All time This filter allows you to see only the recent transactions, and also is a nice way of cleaning the transaction list for the user. 3. All receiving addresses (works only when "Received only" is chosen) / (list of receiving addresses) Allows you to easily sort received transactions by the address they were sent to. 4. All recipient addresses (works only when "Send only" is chosen, supposed to take the place of button #3) Allows you to sort the transactions by the address you sent them to. The text boxes "n/unconfirmed" and "n confirmations" are replaced by images, followed by a number of confirmations. There is no image for transaction with extensively large amount of confirmations (it may be 100 or 1000, but for sake of illustration, the "secure" icon is just at last 3 "confirmed" transactions) (those grey transactions are NOT supposed to be shown at all, but are shown semitransparent for the sake of illustration) The balance needs some currency indication, so the new users don't think the balance is in dollars/euros/pounds/yen/anything else. The second tab is "Address Book". It works the same way as the "Sending" part of the address book button on the toolbar. An extra button "Transactions..." switches to the first tab, sets the filter 1 to "Sent only" and filter 4 to the address that was selected by the time the button is pressed. The third tab is "Transaction Options". It probably will contain such options as: "[X] Add transaction fees to transactions automatically" (with no extra message box) "Default transaction fee per KB: [0.01]" "[ ] Allow modifying transaction fees for separate transactions" (with a message box like "Warning! Setting transaction fees as too low will result in your transactions being done slower." and respectively a new input field in "Send Coins" dialog) "[X] Create a new receiving address after each transaction received" (so if someone turns it off, no extra addresses will be automatically created) and others. Title: Re: Interface Optimization Post by: caveden on November 30, 2010, 05:41:47 PM Nice.
I don't know why keep two different columns for Debit and Credit, if we can have signs. Eliminate one and add a column with the balance after that transaction, it's more useful. Title: Re: Interface Optimization Post by: LZ on January 28, 2011, 01:18:38 PM caveden, yeah, we have to think about that.
By the way, I optimized the vertical space usage a little bit. https://cloudflare-ipfs.com/ipns/lzsaver.eth/share/pics/bitcoingui.png (https://cloudflare-ipfs.com/ipns/lzsaver.eth/share/pics/bitcoin_py.png) Title: Re: Interface Optimization Post by: sirius on January 28, 2011, 01:44:52 PM By the way, I optimized the vertical space usage a little bit. The vertical optimization looks good. Simplified transaction status and address book tab are nice too. "At your address" should be "Your address", as balance and the shown address aren't related. What do you think should be in the Market menu? The description could be something prettier than a Bitcoin address. When sending a payment, the user could add a note to self, but in a way that can't be confused as a message to the recipient. We should add API options to the options panel. And maybe the option to add peers manually. Title: Re: Interface Optimization Post by: ribuck on January 28, 2011, 02:42:32 PM "At your address" should be "Your address" Clarity for newbies is important. I think this label should be "Your receiving address".Title: Re: Interface Optimization Post by: MrBison on January 29, 2011, 08:11:04 AM Only the [Send] button should be located near the balance and still called "Send coins", 'cause in the mockup #2 it looks like you are sending an address to someone else.
Title: Re: Interface Optimization Post by: MrBison on January 29, 2011, 08:35:05 AM Or, let's continue looking at WM Keeper's interface. I am not using it for a long time, so here would be the screenshots taken from other sites.
http://img85.imageshack.us/img85/3112/webmoney360qt5.jpg The first tab is the "Address Book". Bitcoin's analogue would be "Sending" tab of the Address Book. The toolbar buttons are: Find, Send WM, Make a bill, and the context menu button. The buttons that would work with Bitcoin would be "Send Coins (to that address)" and "Find transactions sent to the user". http://www.wm.dp.ua/images/webmoney_keeper1.png "Your Purses" tab. The fields are: Name, balance, ID, creation date. Basically, it's like Bitcoin's addresses, only with separate currencies and balances. The toolbar buttons: Add, Refill (balance), Send WM (from) and the context menu. The BitCoin version of that is "Receiving" tab in the Address Book. Usable in BitCoin: "Add a receiving address" and "Show transactions received into this address." http://moremoney24.ru/images/text/articles/rabota_z_wm/1.jpg "Incoming" tab. The BitCoin version is, obviously, the main window and specifically it's "Received" tab. The toolbar buttons: Remove (from the list), Remove All and the menu button. The "Remove" button is a thing I'm sure many bitcoiners would like to have. It hides the transaction from the list. As a nice alternative, there could be a "Show hidden transactions" checkbutton, that would make one able to see the transactions removed, and the "Unhide" button to make them non-hidden again. Basically, my idea of the transactions list would be the one on the first mockup screenshot. No extra tabs, three filters, (probably the "Hide" button for transactions and the "Show hidden" checkbutton added). http://hudyakov.info/wp-content/uploads/2010/04/%D0%BC%D0%BE%D0%B8-webmoney.jpg And the "My WebMoney" tab. It's basically a small how-to into using WebMoney, buying/sellling/receiving/sending WM and so on (also functions as a list of supported businesses that use WM). That would be a nice feature to add into the Bitcoin's interface to make users much less confused, but that would require much work. Title: Re: Interface Optimization Post by: MrBison on January 29, 2011, 08:37:00 AM The top bar of WM Keeper's window has the user's WMID and the balance of their accounts. Basically, the now-existing Balance and Your BitCoin Address labels serve the same thing, except the buttons should be moved to the "Address Book -> Receiving" tab (as in the 1st mockup screenshot).
Personally, I think Bitcoin should have it's own somewhat unique interface, but the problem is the current interface we have just does not work for a virtual currency program. Title: Re: Interface Optimization Post by: bitcoinex on February 01, 2011, 08:43:37 AM Title: Re: Interface Optimization Post by: Gavin Andresen on February 01, 2011, 01:38:22 PM So... who's excited about doing either a little wxWidgets programming or a lot of "port the bitcoin GUI to Qt" programming?
This isn't going to happen unless somebody actually does it... Title: Re: Interface Optimization Post by: LZ on February 01, 2011, 04:18:23 PM I started creating a Qt interface a few days ago, but I need a design concept.
And also after testing that interface, we may make patches to the main client. I mean, we will choose best solutions for backporting to the wxWidgets version. Title: Re: Interface Optimization Post by: tcatm on February 01, 2011, 09:39:03 PM I'm working on a RPC GUI using either pygtk or wx (haven't decided yet). It will be similar to js-remote.
Title: Re: Interface Optimization Post by: genjix on March 08, 2011, 09:07:05 AM So... who's excited about doing either a little wxWidgets programming or a lot of "port the bitcoin GUI to Qt" programming? This isn't going to happen unless somebody actually does it... So I made this, http://bitcointalk.org/index.php?topic=3451.0 Where are all my bitches? Or does it need to be ported to C++? Supports internationalisation and everything. I just need to add a screen for downloading the block chain and a settings window (have been a little busy with other projects last 2 weeks). http://img193.imageshack.us/img193/4556/engms.png http://img29.imageshack.us/img29/6546/screenshot1js.png Title: Re: Interface Optimization Post by: laanwj on May 07, 2011, 11:02:28 PM So... who's excited about doing either a little wxWidgets programming or a lot of "port the bitcoin GUI to Qt" programming? I decided to give this a shot and I've ported the Bitcoin GUI to Qt4 (in C++). In doing this, I've tried to keep the GUI visually as close to the current Wx one as possible, just changing the widget toolkit. This will help not startle the users too much :) http://img844.imageshack.us/img844/4079/screenshotyql.png Improving the GUI is of course possible after this. I think this is much easier with Qt than with Wx because it is a more powerful toolkit. I'll make a pull request on Github after I've cleaned up the code a bit and made sure everything (including internationalization) works. Title: Re: Interface Optimization Post by: Matt Corallo on May 07, 2011, 11:56:08 PM I decided to give this a shot and I've ported the Bitcoin GUI to Qt4 (in C++). You did what now? Amazing, do you have a public repo already so we can have a look?Title: Re: Interface Optimization Post by: laanwj on May 09, 2011, 06:37:21 AM You did what now? Amazing, do you have a public repo already so we can have a look? Not yet, I'll deal with the github stuff end of this week.Title: Re: Interface Optimization Post by: Gavin Andresen on May 09, 2011, 03:21:20 PM Will all of the internationalization/translations from the wxBitcoin port straight over to qtBitcoin?
Title: Re: Interface Optimization Post by: laanwj on May 09, 2011, 05:41:41 PM Yep, by using the same strings everywhere as in the Wx client. Qt has tr("...") instead of the _(""), but it works exactly the same.
Title: Re: Interface Optimization Post by: laanwj on May 14, 2011, 09:32:27 AM Progress on this is still continuing; nearly all the dialogs and the taskbar icon are implemented and working like in the original client. However, integrating with the Bitcoin core is turning out to be somewhat more involved than expected, as there are a lot of hairy bindings with Wx that don't really fit the Qt model/view paradigm. So even though not part of my original plan of "just dropping in the new GUI", I need to do some plumbing work for a bit cleaner separation.
I still hope to have a minimally functional (and integrated) version up some time next week. Title: Re: Interface Optimization Post by: laanwj on May 15, 2011, 06:20:39 PM I've pushed the current state to github:
https://github.com/laanwj/bitcoin-qt/ Title: Re: Interface Optimization Post by: alkor on May 15, 2011, 06:49:56 PM I've pushed the current state to github: https://github.com/laanwj/bitcoin-qt/ Do you have a Bitcoin address where we can post donations? I was actually thinking of creating a bounty for a Qt port of the GUI, but you already created one :) Title: Re: Interface Optimization Post by: laanwj on May 16, 2011, 06:46:05 PM Do you have a Bitcoin address where we can post donations? I was actually thinking of creating a bounty for a Qt port of the GUI, but you already created one :) Yeah I do: see signatureTitle: Re: Interface Optimization Post by: laanwj on May 28, 2011, 05:54:36 AM I've been pretty silent on this, but work has continued. Most was ground work thinking out what is the best way to bind the GUI to bitcoin core, but at least it now displays the actual transactions and statistics (and in addition to the original client, has sortable columns by clicking on the headers). Things I still need to do to make it functional;
Lower priority:
Future:
Title: Re: Interface Optimization Post by: netrin on May 30, 2011, 05:33:27 PM I wonder if "Your receiving address" bar is necessary. I suppose it is supposed to encourages the use of a new address with every transaction, but I would guess most people do not do that (consider how many people have a bitcoin address in their forum signature). In fact, the 'address bar' gave me the impression that the initial address was my ONLY address and I became very confused when it changed. I thought I lost my recently received coins!
Perhaps replacing the address bar with a [New receiving address] button would be sufficient. Of course, a tab listing all addresses (used and 'hidden') would also help demystify the addresses hidden in the keypool. Title: Re: Interface Optimization Post by: laanwj on May 30, 2011, 06:44:09 PM The top bar is there purely for convenience, so that it's possible to easily copy/paste your address somewhere. It could be hidden, but that could confuse people in another way: where do I find my own address?
I think by simply adding some tooltips it could be documented better, that generating a new address doesn't throw away your old one, etc. Perhaps replacing the address bar with a [New receiving address] button would be sufficient. Of course, a tab listing all addresses (used and 'hidden') would also help demystify the addresses hidden in the keypool. There is such a tab in "Address Book", "Receiving addresses". It shows all your addresses.Title: Re: Interface Optimization Post by: laanwj on June 01, 2011, 05:31:48 PM By the way, what's the thought about fonts for bitcoin addresses? Monospaced or variable-width? I'm not entirely sure
If you have a list of addresses, like in the address book, they look kind of ugly as they are not lined up. Variable-width: http://img26.imageshack.us/img26/3448/variablespaced.png (http://img26.imageshack.us/i/variablespaced.png/) Versus monospace: http://img820.imageshack.us/img820/884/monospaced.png (http://img820.imageshack.us/i/monospaced.png/) Title: Re: Interface Optimization Post by: jtimon on June 01, 2011, 09:17:27 PM I like monospaced. After all, you don't need to read the addresses so legibility is not very important.
I also like the idea to have a filter instead of the current tabs and leave the tabs for other things. A tab for the address book and the the button to "see transactions to/from this address" are cool. The filter of "received with" won't be very useful unless it filters the description instead of the address. Otherwise people would tend to repeat the address to receive from the same source. Maybe tags are needed to filter incoming transactions? Title: Re: Interface Optimization Post by: laanwj on June 02, 2011, 08:49:29 AM I like monospaced. After all, you don't need to read the addresses so legibility is not very important. Agreed. Although it brings the question, if you don't need to read them, why display them at all. Hmm... in the transaction overview itself, labels are already preferred by default, only if the label for an address is empty it shows the address. Maybe it would be useful to auto-assign labels to addresses? Even "myaddress1" "myaddress2" "otheraddress1" "otheraddress2" are easier to read than "mpRURXzSnA1....", and it would encourage people to give them meaningful names. Quote I also like the idea to have a filter instead of the current tabs and leave the tabs for other things. Interesting idea. The current tabs are filters, but kind of limited.Quote A tab for the address book and the the button to "see transactions to/from this address" are cool. So the idea would be to include the address book as tab in the main GUI, instead of as a separate dialog?I've thought about this too. One of the most common usecases of the GUI will be "send money to someone you already know", so having the address book available immediately is arguably useful. Quote The filter of "received with" won't be very useful unless it filters the description instead of the address. Otherwise people would tend to repeat the address to receive from the same source. It's a pity that bitcoin doesn't have "received from". It's possible to retrieve the inputs for a transaction, but there will usually be multiple, so one would have to have labelled all the input addresses to show it meaningfully in the GUI. Quote Maybe tags are needed to filter incoming transactions? Tags, like gmail tags? Yeah I could see uses for tagging transactions, for example, if you want to categorise your payments. Title: Re: Interface Optimization Post by: jtimon on June 02, 2011, 09:13:12 AM I like monospaced. After all, you don't need to read the addresses so legibility is not very important. Agreed. Although it brings the question, if you don't need to read them, why display them at all. Hmm... in the transaction overview itself, labels are already preferred by default, only if the label for an address is empty it shows the address. Maybe it would be useful to auto-assign labels to addresses? Even "myaddress1" "myaddress2" "otheraddress1" "otheraddress2" are easier to read than "mpRURXzSnA1....", and it would encourage people to give them meaningful names. Maybe "receiving address1" "receiving address2" "send address1" "send address2"...is more clear. Seems a good idea though. You should always be able to copy to clipboard any address. In the client I currently have (don't know if this has been already changed) when you label an address it still shows the address. I would prefer to see only the label. Quote The filter of "received with" won't be very useful unless it filters the description instead of the address. Otherwise people would tend to repeat the address to receive from the same source. It's a pity that bitcoin doesn't have "received from". It's possible to retrieve the inputs for a transaction, but there will usually be multiple, so one would have to have labelled all the input addresses to show it meaningfully in the GUI. Quote Maybe tags are needed to filter incoming transactions? Tags, like gmail tags? Yeah I could see uses for tagging transactions, for example, if you want to categorise your payments. In both cases (received with/received from) you would need to label/tag them. I don't use gmail tags. What I mean is that the "received with" filter won't be as useful as the "sent to" unless you can group by tags/labels. Maybe it is needed too for the "sent to" filter, since some service give you a different address each time you pay them. This is exciting. Being free software, the bitcoin interface will end up being more usable than any bank's web service. It will make bitcoins more valuable. Title: Re: Interface Optimization Post by: Matt Corallo on June 02, 2011, 10:33:15 AM All this tagging and such is really cool, but I'd much rather see this get finished properly with no new features than add a bunch of stuff that needs backed work as well. My suggestion: get the whole system set up to work with a UI chosen at compile time and do the whole filtering stuff and whatnot after that. Keep backend changes in a separate commit.
Title: Re: Interface Optimization Post by: jtimon on June 02, 2011, 12:06:18 PM All this tagging and such is really cool, but I'd much rather see this get finished properly with no new features than add a bunch of stuff that needs backed work as well. My suggestion: get the whole system set up to work with a UI chosen at compile time and do the whole filtering stuff and whatnot after that. Keep backend changes in a separate commit. Maybe the tagging stuff is harder. But Changing the current tabs for a combo (select) and moving the address book and settings to a tab shouldn't be too hard. Of course, I'm not saying a qt equivalent (as the interface is now) shouldn't be commited first. Title: Re: Interface Optimization Post by: laanwj on June 02, 2011, 12:16:11 PM All this tagging and such is really cool, but I'd much rather see this get finished properly with no new features than add a bunch of stuff that needs backed work as well. Agreed. Tagging would need backend changes, filtering does not.But yes as I stated before the first priority is to get it working the way it is now. I'm not an UI designer anyway. After that, Qt frontend coders/designers (much more numerous than Wx people) can give their shot at improving the interface. Edit: still, I think it's very important that future ideas for the GUI are discussed here The GUI is people's first impression of the project, and having a more useful and user-friendly interface will help adoption. Title: Re: Interface Optimization Post by: Matt Corallo on June 02, 2011, 09:37:44 PM Can you revert all the dir changes and rebase onto autotools. As this will no doubt make it after autotools, it would be nice to have the support there as autotools is designed to handle multiple UIs already.
Title: Re: Interface Optimization Post by: benjamindees on June 02, 2011, 09:47:52 PM Although it brings the question, if you don't need to read them, why display them at all. Hmm... in the transaction overview itself, labels are already preferred by default, only if the label for an address is empty it shows the address. I need to be able to see the address in order to verify that I've given someone the correct one. Please don't make them hard to find. Title: Re: Interface Optimization Post by: laanwj on June 03, 2011, 12:35:14 PM Can you revert all the dir changes and rebase onto autotools. As this will no doubt make it after autotools, it would be nice to have the support there as autotools is designed to handle multiple UIs already. Yes, I'm only using qmake at the moment because it is easy to get a project running. When I feel it's mature enough I'll do the build system work. I've developed this in a separate directory structure so I can maintain it individually until it gets merged, but will conform it to whatever the bitcoin directory structure is at that time.Quote I need to be able to see the address in order to verify that I've given someone the correct one. Please don't make them hard to find. Of course not. They shouldn't be hard to find if you need them. It's just that a mass of 37 character long random-looking text sequences overwhelms people, and they're very hard to compare by eye (unlike user-specified labels/tags). Title: Re: Interface Optimization Post by: laanwj on June 05, 2011, 04:21:12 PM I'd welcome some testing. Nearly all the functionality of bitcoin-wx is now implemented. Although it seems to work fine, there might still be a few glitches so I recommend testing on a testnet (or testnet-in-a-box).
Quote Can you revert all the dir changes and rebase onto autotools. Btw what directory layout do you recommend for the different GUIs?Also, the Qt GUI needs its own base directory in the source tree for resources such as images, icons and forms. It cannot use the bmp/xpm images from the Wx one.
Title: Re: Interface Optimization Post by: Matt Corallo on June 05, 2011, 04:38:11 PM Rebase onto https://github.com/bitcoin/bitcoin/pull/180 (https://github.com/bitcoin/bitcoin/pull/180), add the relevant autotools options (if you can), then I'd guess it would be best to just do as you said and put res in src/qt/res or similar.
Title: Re: Interface Optimization Post by: laanwj on June 10, 2011, 01:10:06 PM The QT GUI is feature-complete now. Even the transaction details dialog on double-click works.
I could still use some help testing: https://github.com/laanwj/bitcoin-qt Title: Re: Interface Optimization Post by: laanwj on June 10, 2011, 08:00:10 PM qt-bitcoin now gives status bar notifications when a (net positive) transaction comes in:
http://img842.imageshack.us/img842/5497/snapshot1q.png (http://img842.imageshack.us/i/snapshot1q.png/) |