Giter VIP home page Giter VIP logo

darefl's People

Contributors

alexanderschober avatar rbeerwerth avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

darefl's Issues

Implement SimulationOptions widget

It should be located on SimulationView, under graph canvas. It will serve as a place to set up beam parameters.

  • Setup of fixed bin axes in Q-space.
  • Beam intensity.
  • Attach live simulation to SpecularBeamItem change.
  • Alternative selector to simulate according to imported data.

Modify the behavior of `import action` in `ImportDataEditor'.

Currently, when the user clicks on Import button in Data view, the import dialog appears.
Then the user has to locate the button Add further files..., and click it to start selecting files.
This makes it two clicks in total, plus some time to locate the Add further files button.

Suggested behavior:

When the user clicks on Import button, file selector dialog appears. After files have been selected and OK pressed, ImportDataEditor should be shown with user selection already in place.

Replace inheritance from `EditorWidget` with composition.

  • Make LayerEditor, MaterialEditor, GraphEditor, QuickSimEditor, SLDEditor derived from QWidget.
  • Make EditorWidget a wrapper around user widget.

The main idea is that adding any widget to a new docking system should be done with EditorWidget::setWidget. Here, EditorWidget will simply show user content, and will take care of all necessary resizing.

Consider deriving EditorWidget from QDockWidget class.

Refactor ImportDataEditor

  • Remove graph's hiding on other graph selection.
  • Refactor ExperimentalDataModel: addGraph, removeGraph
  • Implement methods to retrieve selected canvas and selected models.
  • Provide unit tests for ImportDataEditorActions
  • Repair graph merge functionality.
  • Provide line style change on graph selection.
  • Fix crash on item deletion when order of DataItem/GraphItem changes in ExperimentalDataModel::removeGraph
  • Refactor RealDataStruct, provide names propagation to GraphItem and axis.
  • Enable/disable menu actions on graph selection.
  • Allow programmatically change canvas+graph simultaneous selection in DataSelectionModel to extend unit testing scenarios
  • Refactor DataViewModel in the part of merging/dropping, provide unit tests.
  • Provide reasonable names for graphs and their editing.

Segfault on an attempt to open an existing project.

segfault on open from startpage depending on current state
    (open new darefl, import data default, simulate default sample, add data to plot, go to project page and open saved project and do not save current one (it should crash, the project trying to open works otherwise, happens also when saved))

Bug in axis tick's slabels

Sometimes shows [0, 1, 1, 2, 2] instead of [0, 0.5, 1.0, 1.5, 2.0, 2.5] etc.

  • Y-axis on SLD editor
  • X-axis on quick simulation editor

Rework the data loader to match the general GUI style

  • Rename RealDataModel -> ExperimentalDataModel.
  • Rename RealDataContainerItem -> ExperimentalDataContainerItem.
  • Move selector tree into dedicated DataSelectorWidget.
  • Move GraphCanvas into dedicated GraphCanvasWidget.
  • Make DataSelectorWidget occupying 1/3 of space, GraphCanvasWidget 2/3 of space.
  • Port from BornAgain DetailsWidget.
  • Place 3 views in DataSelectorWidget: list of canvas and graphs to select, current canvas property editor, current graph property editor.
  • Make Log scale default for y-axis.
  • Make max x-range for imported graph +10% to real maximum
  • Better alignment of InfoLabel in GraphCanvas
  • After importing graph, current canvas has to be selected, all graphs on it visible.

Minor UI improvement round following user review.

  • Data loader: line numbering should start from 1
  • Disable undo/redo.
  • Default Si value wrong -> 2.0704e-06
  • Make tree menu expanded on InstrumentEditor
  • Number representation: 100 instead of 1e2
  • Show units nm (or angstroms) in layer editor.

Add imported curve to canvas with simulation results

  • If the user simulates based on data, the data curve should be displayed together with the simulated curve.
  • Provide controller updating graph canvas in the case of a change in ExperimentalModel.
  • Switch live simulation OFF by default.
  • Propagate intensity value to the simulation

Polish data loader

  • Provide import choice: new/existing canvas.
  • Open file-selection-dialog before DataLoader dialog.
  • Provide a selection of several files simultaneously.
  • Enable remove-file-button
  • Provide busy-cursor on batch file loading.
  • Provide busy-cursor on batch file processing.
  • Add QSplitter between the list of files and parser settings.
  • Write/load splitter position and dialog size to/from QSettings.
  • Throw on empty separator in utils function (move empty separator handling part of ParserPropertyWidget).
  • Remove line highlight in text view.
  • Select the last canvas with import results.
  • Remove old data loader.
  • Remove all tests of an old data loader.
  • Move parsing utils into qt-mvvm.
  • Add validator to QLineEdit for line-number-pattern.
  • Provide a catch of exceptions while loading/parsing files.
  • Try to load binary files.
  • Write/load ParserPropertyWidget settings to/from QSettings.
  • Ignore by default all columns with index > 1.
  • On remove-files cleanup table and text view.
  • Simplify ParserInterface and DefaultParser.
  • Move logic from DataLoader dialog to DataHandler.
  • Write/load ImportTableHeader status to/from QSettings.
  • Provide automatic guess for a separator.
  • Move all loader's classes to DataLoader namespace.

Implement TechView

TechView is the last tab on the application showing all content in all models as it is. It allows getting an overview of all model layout and even change the data directly, without going to particular widget.

Implement DifferenceGraph widget

It should be located on SimulationView, under graph canvas. It will show a collection of graphs after their subtraction.

  • Provide difference graph replot with +-10% to ymin, ymax range
  • Syncronize margins

Implement InstrumentModel

  • Implement InstrumentModel
  • Implement SpecularBeamItem
  • Implement AngularSpecScanItem
  • Implement QSpecScanItem
  • Implement ExperimentalDataScanItem

Remove inheritance from `EditorToolBar`.

For the moment I can't align icons on GraphCanvas as I want. Particularly, I would like to place the Replot icon in the right corner to have it consistently in the same place (for multiple widgets having replot functionality). For the moment it is not possible since it conflicts with the reach functionality of EditorToolBar itself.

I suggest dropping completely fluid way icons appearing/disappearing on EditorToolBar. It would be great to have there only the title and navigation elements.

The normal LayerEditorToolbar will appear on the collapsible part. It will also allow keeping the style text-besides-icon.

Provide LayerEditor with MultiLayer selection

The main question is where to put the possibility to create second, third, etc MultiLayers.

The current suggestion is to put a simple combo box in the corner of the LayerEditor. It will serve simultaneously as a widget to create a new MultiLayer, and as a selector between multi-layers.

Alternatively, it can be QTabWidget in the same LayerEditor.

The more complex way should wait until first user reviews.

  • Return back toolbar style text-besides icons
  • Enable true LogZ for simulation window

ImportLogicTest failing occasionally when executed multi-threaded

[ RUN      ] ImportLogicTest.lineFiltersHeaderTest
/home/runner/work/DaRefl/DaRefl/tests/testdareflcore/importlogic.test.cpp:193: Failure
Expected equality of these values:
  file_input.header
    Which is: { ("Header_0", 0), ("Header_1", 1), ("Header_2", 2), ("Header_3", 3) }
  import_logic.getHeader(i++)
    Which is: {}

Also ImportLogicTest.lineFiltersDataTest is failing

This happens normally when different tests are writing in file with same name. It works, when tests are executed sequentially, and fails in parallel.

Replace two filters in FamousLoader with a single widget.

The concept of separate filters (one for comments, and another for columns) is over-engineered and not intuitive for an average user. Filters might be behind the scene but shouldn't appear in UI.

UI should contain:

  • Selection of starting characters to mark the comment section.
  • Selection of column separators.
  • Additional empty text field for patterns like1-32,45 to ignore corresponding lines.

Enhance SLD Editor

The SLD editor could benefit from more overlay information on hover on different objects. This would go hand in hand with refactoring the LayerComponents.

Other possible improvements:

  • Make the color of SLD elements semi-transparent to reveal the SLD curve beneath.
  • Make roughness handles visible when sigma=0.0
  • Cleanup LayerElementItem from P_SIDE_THICKNESS and similar. They can be simple member variables.
  • Consider accumulating constants appearing in expression P_TOP_PEN_WIDTH=5 in single place and make them dependent on WidthOfLetterM method for better High DPI experience.
  • While reploting, make min/max of SLD editor +/- 10%. Introduce SLDCanvasItem solely for that purpose. See CanvasItem as an example.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.