Skip to content

new splash screen#2495

Closed
jonasschnelli wants to merge 5 commits intobitcoin:masterfrom
jonasschnelli:new_splash_screen
Closed

new splash screen#2495
jonasschnelli wants to merge 5 commits intobitcoin:masterfrom
jonasschnelli:new_splash_screen

Conversation

@jonasschnelli
Copy link
Copy Markdown
Contributor

why:

  • the current splash-screen has no referring to official images on https://en.bitcoin.it/wiki/Promotional_graphics
  • the current splash screen only exists in a low res jpg
  • current splash screen looks dark and "hackish"
  • new splash screen should generate positive, "trust-emotions".
  • new splash screen gives the user infos about the running client.
  • new splash screen can handle long messages (in a lot of languages the text is cropped in current release)
  • example: https://dl.dropbox.com/u/7383846/new_bitcoin_splash.png
  • new size (x2) 400x312
  • contains textual information about the client
  • textinfos are dynamicly written to the image
  • when -testnet is switch on, the splashscreen will show the bitcoin logo in testnet-color (as well as a text [testnet])

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

If the new splash screen will be accepted, i will update the build process so that the splash.png text (version, copyright) gets automatically "written" with imagemagick like the gui about screen.

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 9, 2013

I like the splash screen. However we should add the version and copyright
information text programmatically from qt. It does not need to be in the
image. Otherwise there's yet another place to update copyright and version
numbers.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't remove that tag.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops. was auto-removed by Qt Creator. Now readded in d33ff50.

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 9, 2013

@laanwj ACK, I thought the same. We don't want to update that screen with every new year or relase.

@jonasschnelli Looks very nice, I like it.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@laanwj @Diapolo as a coder, i would also recommend the option of placing the text on the splashscreen by code. As a designer i would avoid this. Why: text placed by Qt will look much more sharp and somehow crispy. Text placed as image on a template image by imagemagick (or other command-line capable gfx tool) will look much better and can use non-standard fonts.

It might sounds crazy for you (coders), but in my eyes, the splash screen is the first contact with the enduser and when it come to the point where the Bitcoin-Qt client gets "mainstream", first contact is very important. That's why i would go with the pre-generated png in the build process with imagemagick.

It's more work for us, but more quality for the enduser. And i kind of like this.

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 9, 2013

Qt supports various text rendering options as well. And TBH it's our time that is very limited at the moment, I really don't mind text quality to be somewhat less for that.

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 9, 2013

Maybe there's another option: make building the image part of Bitcoin-Qt's build process. That makes it automatic, which is fine with me as well.
Non-standard fonts be a problem in any case though: everyone needs to be able to build the image, so it can't rely on certain fonts to be installed.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@laanwj yes. Include into bitcoin-qt's build process.
Font: i would just place a ttf or otf file (open source fonts) into the qt/src folder. The font must not be installed on the build-system.

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 9, 2013

@Diapolo would calling imagemagick in the build process work on windows? I suppose it'd be more difficult...

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@laanwj i thought the same. Imagemagick is probably a overkill. Has also huge dependencies (Ghostscript, freetype). And yes: windows user would hate me. ;)

I think I try to create a solution with qt only (runtime).
Let me try to play with http://qt-project.org/doc/qt-5.0/qtgui/qrawfont.html#alphaMapForGlyph.

Will push something soon.

@gmaxwell
Copy link
Copy Markdown
Contributor

meh. I love the image, but it seems like such a small thing to need to invoke imagemagick for... I'm sure that QT can be made to do this.

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 10, 2013

Agreed @ gmaxwell. Especially as Qt has a quite advanced rendering backend
(QPainter). I daresay it can do most that imagemagick can do,
rendering-wise.

Let's do this the proper way :)

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 10, 2013

@laanwj I've never heard of imagemagick, but as we want to do it the Qt way I won't even google it ^^.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

Just pushed some code which places the infos by Qt. In development, the version string is much longer and a smaller font will be used. Releases would look like this (1:1 screen from the splash screen drawing by qt):
Bildschirmfoto 2013-04-10 um 15 52 38

Question:

  • Where should we place the 2013 (© end year)?
  • Is there a nice way to get the app name dynamically?

Could someone test this on Qt4.7/4.8?

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 10, 2013

@jonasschnelli You could use QApplication::applicationName() for the name, but be careful, as it would be Bitcoin-Qt-testnet for testnet currently.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently we have ABOUTDIALOG_COPYRIGHT_YEAR in aboutdialog.cpp, which perhaps could be moved to another location for this to be usable.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. I saw it. Is there a nice location for this const?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps it could be added to clientversion.h, but I'm not sure if we should use that directly in bitcoin.cpp. @laanwj What do you think?
If we would include it, you also had options to generate the version string without the client model (which seems bad, because we HAVE it in clientmodel to not access that stuff directly AFAIK).

Edit: Is it possible to use tr("Copyright") + QString(" © ") + tr("2009-%1 The Bitcoin developers").arg(2013), because we should allow translation and had problems with that copyright sign, if we don't use the HTML tag for it :).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Clientversion.h sounds like the right place, then all the version
and year stuff can be updated in the same place.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jonas won't including two large splash images, grow the executable quite a
lot? If so, it's not really worth it for the testnet imo; and putting
"testnet" in the text is enough.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

  • App name is now dynamic ("-testnet" will be replaced with " (tn)" for a better style).
  • When on testnet, the splash screen contains also a "green" bitcoin logo.

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 10, 2013

@jonasschnelli We currently use [testnet] appended to Bitcoin-Qt to indicate testnet usage (see bitcoingui.cpp -> setWindowTitle(windowTitle() + QString(" ") + tr("[testnet]"));), which I would like to keep (with equality and translation stuff in my mind).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You also once more will need to mention them in the assets file :D.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh.. yeah. Comes also.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@laanwj the testnet splash png is 45.37kb. When you compare it against the blockchain size... but yes: it will increase the bin size. I still recommend to have it (the new testnet splash).

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 10, 2013

I also like the new testnet splash :) and 46KB is fine with me!

@sipa
Copy link
Copy Markdown
Member

sipa commented Apr 10, 2013

I'm fine with 46kB extra.

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 10, 2013

46k is much less than I had estimated, I'm fine with that.

@qubez
Copy link
Copy Markdown

qubez commented Apr 10, 2013

splash screen in <3k:
splash-3k
splash-3k-testnet

(I <3 Bitcoin)

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 11, 2013

@jonasschnelli Can you please squash all commits into one after we have the final ACK for this :).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you try if QString(" ") + _("[testnet]") instead of QString(" [testnet]") works please. We have [testnet] already translated [testnet] is a NEW string and for that reason currently untranslated.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure. " [testnet]" is a bad label. Will change that.

why:
- the current splash-screen has no referring to official images on https://en.bitcoin.it/wiki/Promotional_graphics
- the current splash screen only exists in a low res jpg
- current splash screen looks dark and "hackish"
- new splash screen should generate positive, "trust-emotions".
- new splash screen gives the user infos about the running client.
- new splash screen can handle long messages (in a lot of languages the text is cropped in current release)

- example: https://dl.dropbox.com/u/7383846/new_bitcoin_splash.png
- new size (x2) 400x312
- contains textual information about the client
- textinfos are dynamicly written to the image
- when -testnet is switch on, the splashscreen will show the bitcoin logo in testnet-color (as well as a text [testnet])

Signed-off-by: Jonas Schnelli <jonas.schnelli@include7.ch>
@jonasschnelli
Copy link
Copy Markdown
Contributor Author

squashed and ready to test on Qt4.8.
Anyone?

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

Pulltester might also do a check...

…lash_screen

Signed-off-by: Jonas Schnelli <jonas.schnelli@include7.ch>

Conflicts:
	doc/assets-attribution.txt
@fanquake
Copy link
Copy Markdown
Member

@jonasschnelli I can test for you. Have one comp running 10.7.5

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@fanquake do you can build from the source (take master and pull from jonasschnelli/bitcoin new_splash_screen)?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think \uXXXX will work in non-gcc compilers such as MSVC. Better use QChar(0xA9) + QString(" ...") .

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry for my lack of non-gcc experience. Fixed now.

Signed-off-by: Jonas Schnelli <jonas.schnelli@include7.ch>
@BitcoinPullTester
Copy link
Copy Markdown

Automatic sanity-testing: FAILED BUILD/TEST, see http://jenkins.bluematt.me/pull-tester/66fa5cbaefc7bbf0a5ac48303d72818088c9f04e for binaries and test log.

This could happen for one of several reasons:

  1. It chanages paths in makefile.linux-mingw or otherwise changes build scripts in a way that made them incompatible with the automated testing scripts (you can find the patches applied at test-time at http://jenkins.bluematt.me/pull-tester/files/patches/)
  2. It adds/modifies tests which test network rules (thanks for doing that), which conflicts with a patch applied at test time
  3. It does not build on either Linux i386 or Win32 (via MinGW cross compile)
  4. The test suite fails on either Linux i386 or Win32
  5. The block test-cases failed (lookup the first bNN identifier which failed in https://github.com/TheBlueMatt/test-scripts/blob/master/FullBlockTestGenerator.java)

If you believe this to be in error, please ping BlueMatt on freenode or TheBlueMatt here.

This test script verifies pulls every time they are updated. It, however, dies sometimes and fails to test properly. If you are waiting on a test, please check timestamps to verify that the test.log is moving at http://jenkins.bluematt.me/pull-tester/current/
Contact BlueMatt on freenode if something looks broken.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

Oh...
Hmm.. "src/qt/bitcoin.cpp:205: error: 'COPYRIGHT_YEAR' was not declared in this scope"
Wasn't it merged in a PR to the master in #2503?

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 11, 2013

You can rebase to current master and update this pull, perhaps @BitcoinPullTester was doing it's work with a not up-to-date version :).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like an indention via tab ;).

@sipa
Copy link
Copy Markdown
Member

sipa commented Apr 11, 2013

I like the splash screen image :)

@Diapolo
Copy link
Copy Markdown

Diapolo commented Apr 11, 2013

Same here, I really love it, great looking! Don't think my many comments lower that feeling :) @jonasschnelli .

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code-wise, I would prefer if you move this stuff to a function or class. The main is already pretty cluttered. Personally I prefer a main function that consists of function/method calls, not logic and rendering code in itself.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me inherit the QSplashScreen and write it more proper to reduce bitcoin.cpp size.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@Diapolo my contributions are for the blockchain and not for my ego. :) so keep on finding details to make it better!

@sipa
Copy link
Copy Markdown
Member

sipa commented Apr 12, 2013

Seems to work fine. I haven't checked the code changes, but can you at least squash them?

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@sipa: will finish the splash screen soon (1-2 days) then i try to squash. I once pulled/updates from master, ... i think i can't squash over the merge of the master? Can i?

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 13, 2013

@jonasschnelli it is possible, but more difficult, and not simply with git rebase -i (I think. That's why you should ideally not merge in these cases, but always rebase); easiest may be to start from a new branch with master, then git cherry-pick the non-merge commits.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

fresh and clean pull request is #2524

@sipa
Copy link
Copy Markdown
Member

sipa commented Apr 14, 2013

You can just do a force push to the branch associated with the old pullrequest. You don't have to create a new one.

@jonasschnelli
Copy link
Copy Markdown
Contributor Author

@sipa: i did a --force push but the "old commits" where still in the commit list. The branch on my github repo was completely different to what i had localy (and pushed with --force). That's why i then restarted the whole thing. Hope you excuse. :)

@laanwj
Copy link
Copy Markdown
Member

laanwj commented Apr 14, 2013

Yes it's not a problem, he's just saying that in general you never need to re-create a pull request. Force pushing something new will override anything that is currently in the pull request. Sometimes, the old commits stay there for a while ~ 5 minutes but that's just github in the process of updating.

@bitcoin bitcoin locked as resolved and limited conversation to collaborators Sep 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants