Git Product home page Git Product logo

Comments (16)

ra3xdh avatar ra3xdh commented on May 24, 2024 2

Hello all,

I have recently started the porting of Qucs-S to Qt5. I have imported the necessary compatibility classes from the Qt3Support module of the Qt4. This is not a good way to implement Qt5 support, but it will allow to compile Qucs-S on modern distributions and build the packages in the near future instead of usage AppImage. The code could be found in the https://github.com/ra3xdh/qucs_s/tree/qt5 branch. The proxy classes are located in the qucs/qt3_compat subdirectory. Currently only qucs-s application (sources located in qucs subdirectory) compiles with Qt5, but it is 90% of work. The basic features of schematic editor, simulation, and vizualization are operational. It remains to port utilities and fix bugs. I hope to finish work within next months and prepare 0.0.23 release. The attached screenshot shows the main window of the Qucs-S application compiled with Qt5.

image

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024 2

The master and current branches are switched to Qt5 now. The qt5 branch is not in use anymore. The legacy Qt4 code could be found in legacy_qt4 branch. I am closing this issue. Refer to #72 to track the remaining Qt5 migration tasks.

from qucs_s.

zcx2020 avatar zcx2020 commented on May 24, 2024

Have you tried to compile and run qucs-s-0.0.22 with Qt5.x?

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024

@zcx2020 Qucs-S will not compile using Qt5. Qucs-S shares a Qucs code, which depends on Qt3Support classes. These Qt3Support was dropped in Qt5, and compilation of such projects fails on Qt5. So, currently it is not clear how to port Qucs and Qucs-S to Qt5.

from qucs_s.

zcx2020 avatar zcx2020 commented on May 24, 2024

Thanks for the explanation.

1 Current Status

https://github.com/Qucs/qucs.github.io/wiki/Qt3GUISupport

says "manual work is needed to replace Qt3Support by newer classes".
and "This manual work has been ongoing since ~end of 2012 and is mostly complete"
and "One big issue is the widespread use of the Qt3Support class Q3PtrList "

https://github.com/Qucs/qucs.github.io/wiki/remove_Qt3PtrList

says "The status is that all the Qt3PtlList references were removed. The code is capable of loading schematics. The creation of schematics was not yet migrated."

So there is some work outstanding before qucs/qucs-s can use Qt5.

2 Future Compatibility

Qt4 is still available here

http://download.qt.io/archive/qt/

although you would have to build it from source on linux.

https://ra3xdh.github.io/

says "AppImage already includes Qt4 libraries and you don't need to install them explicitly."

So this does not seem to be a pressing issue even if future linux distros drop Qt4, provided the AppImage is maintained.

Unless of course future versions of qucs-s need Qt5 to support new features.

from qucs_s.

cederom avatar cederom commented on May 24, 2024

+1 to move to QT5 and maybe even QT6 as its already out. That would allow bring this amazing software back to FreeBSD :-)

Is Quc-S direct dependant on Qucs in a way that when Qucs gets ported to QT5 Qucs-S will also work straight away? :-)

from qucs_s.

sizeofvoid avatar sizeofvoid commented on May 24, 2024

+1 to move to QT5 and maybe even QT6 as its already out. That would allow bring this amazing software back to FreeBSD :-)

... not only FreeBSD. All other Linux Distrubtion would start to package this software.

from qucs_s.

kmihaylov avatar kmihaylov commented on May 24, 2024

+1 for Qt5 since I just tried to build qucs-s on FreeBSD and I got the dependency error. Sure we don't need to force the creator of qucs-s to do this, but my coding abilities are limited.

from qucs_s.

kwmartin avatar kwmartin commented on May 24, 2024

I have an interest in helping on the port to Qt5. I have never previously helped on an open-source github based development. I have experience with PyQt and have ported some of my Gui's from PyQt4 to PyQt5. I have experience with C, very little with C++.
Question: can someone give me instructions on how best to get started to help out and not "re-invent the wheel" since it looks like a lot of the heavy lifting has already been done? I'm assuming I need to pull a particular github branch and work on a local copy? If so, I probably just need to know which branch? Thanks.

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024

@kwmartin , thank you for the interest in project! The best way is to unfork Qucs-S and merge it with the main Qucs project. There exists so-called "modular Qucs" https://github.com/Qucs/qucs/tree/modular It already compiles with Qt5, but many things still be missing. The Qucs-S part is intended to be a plugin for basic Qucs. The most probably this approach will be accepted for future releases.

Unfortunatelly Qucs-S is not fully compatible with new modular architecture of the Qucs. Qucs-S was started a long tome before the modular architecture was introduced in the main project. It will be needed to port a code from Qucs-S to Qucs plugins manually and probably rewrite some parts from scratch. It is not possible to simple copy-paste the code responsible for netlisting and result processing from Qucs-S to modular Qucs. If you would like to help you may start from the learning of the "modular" branch in the main Qucs repository.

I am also considering to take this branch https://github.com/Qucs/qucs/tree/qt5-19 as the base for Qucs-S porting to Qt5.

from qucs_s.

kwmartin avatar kwmartin commented on May 24, 2024

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024

Hello Kenneth,

Finally, is there any chance you tell me the flags cmake requires to compile for debug?

you should pass the -DCMAKE_BUILD_TYPE=Debug key to cmake to ensure debug-mode. This options will activate the necessary flags for GCC. Also I recommend to open the CMakeLists.txt in QtCreator where you can activate Debug mode and set installation prefix etc.

can you point to the file and function where the net-lister is entered that I need to set up a gdb breakpoint to start stepping my way through the netlister

The spice-related code is located in the followind subdirectories:

  • qucs/extsimkernels -- the netlisters and result parsers
  • qucs/spicecomponents/ -- specific devices

The entry point for the netlister is Ngspice::createNetlist(). The simulator is started from Ngspice::slotSimulate(). Both methods are defined in the ngspice.cpp file. The same for Xyce, but defined in xyce.cpp. The ExternSimDialog::slotProcessOutput is responsible for SPICE raw file (simulation result) processing. Some netlisitng routines common for all SPICE simulators are placed in AbstractSpiceKernel class.

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024

I have recently evaluated the "modular" and latest "non-modular" Qucs branches that could be compiled with Qt5. Now I am more inclined to take the non-modular https://github.com/Qucs/qucs/tree/qt5-19 as the base for Qucs-S porting. This approach will allow to directly copy the SPICE specific code in the source tree and provide some operational application in the near future.

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024

@kwmartin You can use the https://github.com/ra3xdh/qucs_s/tree/qt5 branch as the reference for your work. Currently it could be compiled and run with Qt5. The utilities are not ported to Qt5 yet. Your contribution is welcome.

from qucs_s.

ra3xdh avatar ra3xdh commented on May 24, 2024

See also #72 to track the progress and report issues

from qucs_s.

cederom avatar cederom commented on May 24, 2024

Quick test confirms master build and run fine on FreeBSD :-)
THANK YOU @ra3xdh !! :-)

from qucs_s.

Related Issues (20)

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.