forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge bitcoin-core/gui#139: doc: Improve gui/src/qt README.md
5d1f260 Improve gui/src/qt README.md (Jarol Rodriguez) Pull request description: **Master/Before:** [Render of Master](https://github.com/bitcoin-core/gui/blob/master/src/qt/README.md) **PR/After:** [Render of PR](https://github.com/bitcoin-core/gui/blob/5d1f260713f9f1d29c0db68f2917dfe7368d4ba0/src/qt/README.md) **Changes:** The README.md found in `gui/src/qt` seems to not have gotten any love in a while. This PR fixes some grammatical errors, makes it easier to follow, and modernizes the logic of using Qt Creator. 1. Makes several sections more informative 2. Directories under `Files and Directories` now end with a forward slash denoting that they are a directory 3. Modernize the Qt Creator Logic for the current setup flow 4. Add UNIX Qt Creator Setup Instructions (Ubuntu & Debian) ACKs for top commit: RandyMcMillan: ACK 5d1f260 👍🏼 jonatack: ACK 5d1f260 Tree-SHA512: bd5cc24b95460f34a1efa489a6acc10d7632c84eabdcdc5729ef077d8303cf037ed664aae033af8883252433ea0999d8ec7d92e8b03d03a873d32b041a94f813
- Loading branch information
Showing
1 changed file
with
75 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,95 +1,125 @@ | ||
This directory contains the DashQT graphical user interface (GUI). It uses the cross-platform framework [Qt](https://www1.qt.io/developers/). | ||
This directory contains the source code for the Dash Core graphical user interface (GUI). It uses the [Qt](https://www1.qt.io/developers/) cross-platform framework. | ||
|
||
The current precise version for Qt 5 is specified in [qt.mk](/depends/packages/qt.mk). Qt 4 is not supported. | ||
|
||
## Compile and run | ||
|
||
See build instructions ([macOS](/doc/build-osx.md), [Windows](/doc/build-windows.md), [Unix](/doc/build-unix.md), etc). | ||
See build instructions: [Unix](/doc/build-unix.md), [macOS](/doc/build-osx.md), [Windows](/doc/build-windows.md), [FreeBSD](/doc/build-freebsd.md), [NetBSD](/doc/build-netbsd.md), [OpenBSD](/doc/build-openbsd.md) | ||
|
||
When following your systems build instructions, make sure to install the `Qt` dependencies. | ||
|
||
To run: | ||
|
||
```sh | ||
./src/qt/dash-qt | ||
``` | ||
|
||
## Files and directories | ||
|
||
### forms | ||
## Files and Directories | ||
|
||
Contains [Designer UI](http://doc.qt.io/qt-5.9/designer-using-a-ui-file.html) files. They are created with [Qt Creator](#using-qt-creator-as-ide), but can be edited using any text editor. | ||
#### forms/ | ||
|
||
### locale | ||
- A directory that contains [Designer UI](https://doc.qt.io/qt-5.9/designer-using-a-ui-file.html) files. These files specify the characteristics of form elements in XML. Qt UI files can be edited with [Qt Creator](#using-qt-creator-as-ide) or using any text editor. | ||
|
||
Contains translations. They are periodically updated. The process is described [here](/doc/translation_process.md). | ||
#### locale/ | ||
|
||
### res | ||
- Contains translations. They are periodically updated and an effort is made to support as many languages as possible. The process of contributing translations is described in [doc/translation_process.md](/doc/translation_process.md). | ||
|
||
Resources such as the icon. | ||
#### res/ | ||
|
||
### test | ||
- Contains graphical resources used to enhance the UI experience. | ||
|
||
Tests. | ||
#### test/ | ||
|
||
### bitcoingui.(h/cpp) | ||
- Functional tests used to ensure proper functionality of the GUI. Significant changes to the GUI code normally require new or updated tests. | ||
|
||
Represents the main window of the Dash UI. | ||
#### bitcoingui.(h/cpp) | ||
|
||
### \*model.(h/cpp) | ||
- Represents the main window of the Dash UI. | ||
|
||
The model. When it has a corresponding controller, it generally inherits from [QAbstractTableModel](http://doc.qt.io/qt-5/qabstracttablemodel.html). Models that are used by controllers as helpers inherit from other Qt classes like [QValidator](http://doc.qt.io/qt-5/qvalidator.html). | ||
#### \*model.(h/cpp) | ||
|
||
ClientModel is used by the main application `bitcoingui` and several models like `peertablemodel`. | ||
- The model. When it has a corresponding controller, it generally inherits from [QAbstractTableModel](https://doc.qt.io/qt-5/qabstracttablemodel.html). Models that are used by controllers as helpers inherit from other Qt classes like [QValidator](https://doc.qt.io/qt-5/qvalidator.html). | ||
- ClientModel is used by the main application `dashgui` and several models like `peertablemodel`. | ||
|
||
### \*page.(h/cpp) | ||
#### \*page.(h/cpp) | ||
|
||
A controller. `:NAMEpage.cpp` generally includes `:NAMEmodel.h` and `forms/:NAME.page.ui` with a similar `:NAME`. | ||
- A controller. `:NAMEpage.cpp` generally includes `:NAMEmodel.h` and `forms/:NAME.page.ui` with a similar `:NAME`. | ||
|
||
### \*dialog.(h/cpp) | ||
#### \*dialog.(h/cpp) | ||
|
||
Various dialogs, e.g. to open a URL. Inherit from [QDialog](http://doc.qt.io/qt-4.8/qdialog.html). | ||
- Various dialogs, e.g. to open a URL. Inherit from [QDialog](https://doc.qt.io/qt-5/qdialog.html). | ||
|
||
### paymentserver.(h/cpp) | ||
#### paymentserver.(h/cpp) | ||
- (Deprecated) Used to process BIP21 payment URI requests. Also handles URI-based application switching (e.g. when following a dash:... link from a browser). | ||
|
||
Used to process BIP21 payment URI requests. Also handles URI based application switching (e.g. when following a dash:... link from a browser). | ||
|
||
### walletview.(h/cpp) | ||
#### walletview.(h/cpp) | ||
|
||
Represents the view to a single wallet. | ||
- Represents the view to a single wallet. | ||
|
||
### Other .h/cpp files | ||
#### Other .h/cpp files | ||
|
||
* UI elements like BitcoinAmountField, which inherit from QWidget. | ||
* `bitcoinstrings.cpp`: automatically generated | ||
* `bitcoinunits.(h/cpp)`: BTC / mBTC / etc handling | ||
* `bitcoinunits.(h/cpp)`: BTC / mBTC / etc. handling | ||
* `callback.h` | ||
* `guiconstants.h`: UI colors, app name, etc | ||
* `guiconstants.h`: UI colors, app name, etc. | ||
* `guiutil.h`: several helper functions | ||
* `macdockiconhandler.(h/mm)`: macOS dock icon handler | ||
* `macnotificationhandler.(h/mm)`: display notifications in macOS | ||
|
||
## Contribute | ||
|
||
See [CONTRIBUTING.md](/CONTRIBUTING.md) for general guidelines. Specifically for Qt: | ||
See [CONTRIBUTING.md](/CONTRIBUTING.md) for general guidelines. | ||
|
||
**Note:** Do not change `local/dash_en.ts`. It is updated [automatically](/doc/translation_process.md#writing-code-with-translations). | ||
|
||
## Using Qt Creator as an IDE | ||
|
||
[Qt Creator](https://www.qt.io/product/development-tools) is a powerful tool which packages a UI designer tool (Qt Designer) and a C++ IDE into one application. This is especially useful if you want to change the UI layout. | ||
|
||
#### Download Qt Creator | ||
|
||
On Unix and macOS, Qt Creator can be installed through your package manager. Alternatively, you can download a binary from the [Qt Website](https://www.qt.io/download/). | ||
|
||
**Note:** If installing from a binary grabbed from the Qt Website: During the installation process, uncheck everything except for `Qt Creator`. | ||
|
||
##### macOS | ||
|
||
```sh | ||
brew install qt-creator | ||
``` | ||
|
||
##### Ubuntu & Debian | ||
|
||
```sh | ||
sudo apt-get install qtcreator | ||
``` | ||
|
||
#### Setup Qt Creator | ||
|
||
* don't change `local/dash_en.ts`; this happens [automatically](/doc/translation_process.md#writing-code-with-translations) | ||
1. Make sure you've installed all dependencies specified in your systems build instructions | ||
2. Follow the compile instructions for your system, run `./configure` with the `--enable-debug` flag | ||
3. Start Qt Creator. At the start page, do: `New` -> `Import Project` -> `Import Existing Project` | ||
4. Enter `dash-qt` as the Project Name and enter the absolute path to `src/qt` as Location | ||
5. Check over the file selection, you may need to select the `forms` directory (necessary if you intend to edit *.ui files) | ||
6. Confirm the `Summary` page | ||
7. In the `Projects` tab, select `Manage Kits...` | ||
|
||
## Using Qt Creator as IDE | ||
**macOS** | ||
- Under `Kits`: select the default "Desktop" kit | ||
- Under `Compilers`: select `"Clang (x86 64bit in /usr/bin)"` | ||
- Under `Debuggers`: select `"LLDB"` as debugger (you might need to set the path to your LLDB installation) | ||
|
||
You can use Qt Creator as an IDE. This is especially useful if you want to change | ||
the UI layout. | ||
**Ubuntu & Debian** | ||
|
||
Download and install the community edition of [Qt Creator](https://www.qt.io/download/). | ||
Uncheck everything except Qt Creator during the installation process. | ||
Note: Some of these options may already be set | ||
|
||
Instructions for macOS: | ||
- Under `Kits`: select the default "Desktop" kit | ||
- Under `Compilers`: select `"GCC (x86 64bit in /usr/bin)"` | ||
- Under `Debuggers`: select `"GDB"` as debugger | ||
|
||
1. Make sure you installed everything through Homebrew mentioned in the [macOS build instructions](/doc/build-osx.md) | ||
2. Use `./configure` with the `--enable-debug` flag | ||
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project | ||
4. Enter "dash-qt" as project name, enter src/qt as location | ||
5. Leave the file selection as it is | ||
6. Confirm the "summary page" | ||
7. In the "Projects" tab select "Manage Kits..." | ||
8. Select the default "Desktop" kit and select "Clang (x86 64bit in /usr/bin)" as compiler | ||
9. Select LLDB as debugger (you might need to set the path to your installation) | ||
10. Start debugging with Qt Creator (you might need to the executable to "dash-qt" under "Run", which is where you can also add command line arguments) | ||
8. While in the `Projects` tab, ensure that you have the `dash-qt` executable specified under `Run` | ||
- If the executable is not specified: click `"Choose..."`, navigate to `src/qt`, and select `dash-qt` | ||
9. You're all set! Start developing, building, and debugging the Dash Core GUI |