101 lines
3.2 KiB
Ruby
101 lines
3.2 KiB
Ruby
class SpatialiteGui < Formula
|
|
desc "GUI tool supporting SpatiaLite"
|
|
homepage "https://www.gaia-gis.it/fossil/spatialite_gui/index"
|
|
url "https://www.gaia-gis.it/gaia-sins/spatialite-gui-sources/spatialite_gui-1.7.1.tar.gz"
|
|
sha256 "cb9cb1ede7f83a5fc5f52c83437e556ab9cb54d6ace3c545d31b317fd36f05e4"
|
|
revision 5
|
|
|
|
bottle do
|
|
cellar :any
|
|
sha256 "710535191ed36706ca21142396f9134b27fcdf556e2fb4c7496d4b42c0629538" => :catalina
|
|
sha256 "f1540e6cb0e8565039043767ba8e4d15de2068054832570456cb10760ffddd30" => :mojave
|
|
sha256 "f8821bf0bc2b6e1aed35937cd6a3d94a9208828a961dea9308ba25d78ddf14b8" => :high_sierra
|
|
sha256 "f6531922f0cb1d731f8450e55469990ba8e0dde3451d51560522c853f8c4a345" => :sierra
|
|
end
|
|
|
|
depends_on "pkg-config" => :build
|
|
depends_on "freexl"
|
|
depends_on "geos"
|
|
depends_on "libgaiagraphics"
|
|
depends_on "libspatialite"
|
|
depends_on "proj"
|
|
depends_on "sqlite"
|
|
depends_on "wxmac"
|
|
|
|
patch :DATA
|
|
|
|
def install
|
|
# Link flags for sqlite don't seem to get passed to make, which
|
|
# causes builds to fatally error out on linking.
|
|
# https://github.com/Homebrew/homebrew/issues/44003
|
|
sqlite = Formula["sqlite"]
|
|
ENV.prepend "LDFLAGS", "-L#{sqlite.opt_lib} -lsqlite3"
|
|
ENV.prepend "CFLAGS", "-I#{sqlite.opt_include}"
|
|
|
|
# Use Proj 6.0.0 compatibility headers
|
|
# https://www.gaia-gis.it/fossil/spatialite_gui/tktview?name=8349866db6
|
|
ENV.append_to_cflags "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"
|
|
|
|
# Add aui library; reported upstream multiple times:
|
|
# https://groups.google.com/forum/#!searchin/spatialite-users/aui/spatialite-users/wnkjK9pde2E/hVCpcndUP_wJ
|
|
inreplace "configure", "WX_LIBS=\"$(wx-config --libs)\"", "WX_LIBS=\"$(wx-config --libs std,aui)\""
|
|
system "./configure", "--prefix=#{prefix}"
|
|
system "make", "install"
|
|
end
|
|
end
|
|
|
|
__END__
|
|
For some strange reason, wxWidgets does not take the required steps to register
|
|
programs as GUI apps like other toolkits do. This necessitates the creation of
|
|
an app bundle on OS X.
|
|
|
|
This clever hack sidesteps the headache of packing simple programs into app
|
|
bundles:
|
|
|
|
https://www.miscdebris.net/blog/2010/03/30/
|
|
solution-for-my-mac-os-x-gui-program-doesnt-get-focus-if-its-outside-an-application-bundle
|
|
---
|
|
Main.cpp | 21 +++++++++++++++++++++
|
|
1 files changed, 21 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/Main.cpp b/Main.cpp
|
|
index a857e8a..9c90afb 100644
|
|
--- a/Main.cpp
|
|
+++ b/Main.cpp
|
|
@@ -71,6 +71,12 @@
|
|
#define unlink _unlink
|
|
#endif
|
|
|
|
+#ifdef __WXMAC__
|
|
+// Allow the program to run and recieve focus without creating an app bundle.
|
|
+#include <Carbon/Carbon.h>
|
|
+extern "C" { void CPSEnableForegroundOperation(ProcessSerialNumber* psn); }
|
|
+#endif
|
|
+
|
|
IMPLEMENT_APP(MyApp)
|
|
bool MyApp::OnInit()
|
|
{
|
|
@@ -86,6 +92,21 @@ IMPLEMENT_APP(MyApp)
|
|
frame->Show(true);
|
|
SetTopWindow(frame);
|
|
frame->LoadConfig(path);
|
|
+
|
|
+#ifdef __WXMAC__
|
|
+ // Acquire the necessary resources to run as a GUI app without being inside
|
|
+ // an app bundle.
|
|
+ //
|
|
+ // Credit for this hack goes to:
|
|
+ //
|
|
+ // https://www.miscdebris.net/blog/2010/03/30/solution-for-my-mac-os-x-gui-program-doesnt-get-focus-if-its-outside-an-application-bundle
|
|
+ ProcessSerialNumber psn;
|
|
+
|
|
+ GetCurrentProcess( &psn );
|
|
+ CPSEnableForegroundOperation( &psn );
|
|
+ SetFrontProcess( &psn );
|
|
+#endif
|
|
+
|
|
return true;
|
|
}
|
|
|
|
--
|
|
1.7.9
|