Logo KHGT Times

KHGT Times (Pro Edition) Windows

Aplikasi ini dikembangkan secara khusus sebagai perangkat lunak komprehensif dan mutakhir untuk perhitungan astrometri presisi tinggi, pemetaan visibilitas hilal global, dan penyatuan penanggalan Islam internasional.

⬇ Download Aplikasi Windows (.zip)

🌟 Informasi Rilis & Dokumentasi Sistem V7.5

Selamat datang di KHGT Times V7.5
Aplikasi ini dikembangkan secara khusus sebagai perangkat lunak komprehensif dan mutakhir untuk perhitungan astrometri presisi tinggi, pemetaan visibilitas hilal global, dan penyatuan penanggalan Islam internasional.

Melampaui Batas Pendahulunya (Beyond Accurate Times)

Selama bertahun-tahun, dunia falak Islam sangat bergantung pada perangkat lunak pionir pendahulu. Aplikasi tersebut sangat berjasa meletakkan standar dasar komputasi waktu salat dan peta hilal di era awal komputasi.

Namun, generasi pendahulu tersebut umumnya dibangun di atas teori analitik klasik (algoritma VSOP87), menggunakan arsitektur single-thread yang lambat, dan dikonsep murni untuk rukyatul hilal lokal/zonal, bukan untuk integrasi kalender global.

Mengapa KHGT Times Hadir dan Sangat Penting?

KHGT Times hadir sebagai Quantum Leap (Lompatan Besar) komputasi untuk menjawab tantangan astronomi modern dan urgensi implementasi Kalender Hijriah Global Tunggal (KHGT) di seluruh dunia. Keunggulan absolut sistem ini meliputi:



Dengan arsitektur ini, KHGT Times adalah sebuah karya kontemporer Falak Digital yang didedikasikan untuk observatorium, lembaga riset akademik, dan pengambil kebijakan syariah di era modern.

1. REQUIREMENTS LIBRARY & ENGINE ASTROMETRI

Sistem ini menggabungkan berbagai pustaka (library) saintifik standar industri untuk mencapai keseimbangan antara akurasi tingkat tinggi (High Precision) dan kecepatan pemrosesan (High Performance).


2. KONSEP DASAR, PRINSIP & FORMULASI KHGT

Kalender Hijriah Global Tunggal (KHGT) merupakan tonggak peradaban sistem penanggalan Islam unifikatif hasil Muktamar Internasional Turki 2016. Berbeda dengan sistem lokal/zonal, KHGT bertujuan menyatukan umat Islam di bawah satu sistem waktu global.

3 Prinsip Utama KHGT:

Parameter Kriteria (Imkanur Rukyat Istanbul 2016):

1. Tinggi Hilal Geosentris (Geocentric Altitude) minimal 5 derajat (Alt >= 5Β°).
2. Sudut Elongasi Geosentris (Geocentric Elongation) minimal 8 derajat (Elong >= 8Β°).

Mekanisme Eksekusi (Parameter Kalender Global / PKG):

1) [PKG 1] Kondisi Normal (Wilayah Timur hingga Tengah Bumi):
Sistem memindai apakah kriteria visibilitas (Alt >= 5Β° & Elong >= 8Β°) terpenuhi di daratan mana pun di bumi SEBELUM pukul 00:00 UTC. Jika terpenuhi, maka besok adalah awal bulan baru secara global.
2) [PKG 2] Kondisi Kritis (Wilayah Ekstrem Barat / Benua Amerika):
Jika kriteria visibilitas baru terpenuhi SETELAH pukul 00:00 UTC, maka sistem otomatis membandingkan waktu Ijtimak (Konjungsi) terhadap Terbit Fajar di Gisborne, Selandia Baru.

β€’ Jika Ijtimak SEBELUM fajar Gisborne: Maka besok tetap masuk bulan baru.
β€’ Jika Ijtimak SETELAH fajar Gisborne: Maka masuk bulan baru DITUNDA lusa (Lihat hasil hitung pada tanggal = ijtimak + 1) agar wilayah Timur bumi tidak berpuasa sebelum ijtimak terjadi.

3. MANUAL BOOK: PENJELASAN 39 MODUL MENU V7.5

(Untuk tampilan yang lebih detail dan interaktif, silakan buka tab "Daftar Fitur" di atas).

4. HIGHLIGHT PEMBARUAN EKSKLUSIF (VERSI 7.5)

5. PANDUAN OPERASIONAL & EXPORT

Daftar Fitur Lengkap & Komprehensif (Versi 7.5)

Jelajahi 39 modul kemampuan penuh dari mesin analisis astronomis KHGT Times. Setiap modul dirancang untuk presisi, kecepatan, dan visualisasi data yang memukau.

1) Visibility Hilal (KHGT)

Analisis komprehensif visibilitas hilal berdasarkan multi-kriteria global. Modul ini melakukan perhitungan astrometri presisi tinggi untuk membandingkan posisi Bulan dan Matahari saat terbenam. Sistem mengevaluasi data dari dua sudut pandang: Geosentrik (pusat bumi) dan Toposentrik (permukaan bumi/lokasi pengamat), guna memberikan akurasi data yang sesuai dengan standar hisab internasional.

  • Sub-Menu Input: Tanggal Observasi (Y/M/D), Titik Koordinat Pengamat (Lat, Lon, Elevasi, TZ), dan Kondisi Atmosfer.
  • Aksi & Output: Menghitung umur bulan sejak ijtimak dan memisahkan nilai Altitude/Elongasi ke dalam wujud Geosentris dan Toposentris. Mengevaluasi langsung terhadap 5 kriteria sekaligus (KHGT, MABIMS, Ilyas, Danjon, Yallop).

2) Crescent Visibility Map

Pemindaian peta visibilitas hilal global dalam resolusi tinggi (HD). Menggunakan mesin iterasi spasial untuk memetakan visibilitas hilal ke seluruh permukaan bumi. Modul ini mendukung pemetaan berbagai lapisan data astronomi (layers) secara seamless, mulai dari ketinggian hilal hingga area interseksi kriteria fisis tertentu.

  • Sub-Menu Input: Tanggal Observasi, Mode Fase Bulan, Target Pemetaan (Sunset/Moonset/Best Time).
  • Aksi & Output: Window grafik interaktif yang menampilkan peta dunia dengan gradien warna visibilitas. Output dapat diekspor ke PNG/SVG resolusi tinggi untuk kebutuhan publikasi ilmiah.

3) Analisis Hilal Global

Pelacakan visibilitas hilal di seluruh zona waktu dunia secara kronologis. Algoritma ini melakukan iterasi per menit pada garis tanggal internasional untuk mendeteksi di mana dan kapan kriteria hilal pertama kali terpenuhi di muka bumi. Fokus utamanya adalah memvalidasi prinsip kesatuan matlak global.

  • Sub-Menu Input: Tanggal Referensi dan Waktu Acuan UTC.
  • Aksi & Output: Mencetak tabel raksasa yang men-sorting 300+ Kota di database dari nilai umur bulan dan ketinggian hilal (Geosentris & Toposentris). Membantu pengguna melihat negara mana yang lebih dulu berpeluang merukyat.

4) Altitude Chart Analyser

Visualisasi kurva ketinggian harian benda langit. Modul ini merelasikan pergerakan semu harian Matahari dan Bulan dalam sebuah grafik sinusoida. Berguna untuk melihat titik puncak (transit), waktu terbit-terbenam, serta gap ketinggian antara Matahari dan Bulan sepanjang 24 jam penuh di lokasi tertentu.

  • Sub-Menu Input: Tanggal, Titik Koordinat.
  • Aksi & Output: Menggambar grafik garis yang memotong Sumbu Nol (Garis Ufuk). Pengguna dapat melihat secara matematis jam berapa titik temu kedua benda langit terjadi, lengkap dengan penanda interaktif 'Waktu Sekarang' (Real-time).

5) Kota Pertama KHGT (Mainland)

Melacak titik daratan utama (Mainland) pertama di dunia yang masuk bulan baru. Merupakan fitur krusial dalam Kalender Hijriah Global Tunggal untuk menentukan dimulainya hari pertama bulan Hijriah. Sistem secara otomatis mengabaikan pulau-pulau kecil di Pasifik dan fokus pada daratan utama benua yang memenuhi syarat 5-8 (Tinggi 5Β°, Elongasi 8Β°).

  • Sub-Menu Input: Tanggal Konjungsi/Ijtima'.
  • Aksi & Output: Laporan teks dan peta topografi global yang menandai lokasi spesifik (bintang emas) lengkap dengan analisis PKG 1 dan PKG 2 (Kriteria Gisborne).

6) Fase Bulan (Moonphase)

Prediktor siklus fase bulan bulanan dan tahunan. Menghitung fraksi iluminasi dan sudut fase untuk menentukan bentuk bulan yang tampak dari bumi, mulai dari New Moon, First Quarter, Full Moon, hingga Last Quarter.

  • Sub-Menu Input: Tahun Masehi (Mendukung tahun 0 M s/d 3000 M).
  • Aksi & Output: Mencetak matriks tabel 4 Fase Utama (New Moon/Ijtimak, First Quarter, Full Moon/Purnama, Last Quarter) secara berurutan beserta Jam:Menit-nya.

7) Moon Times

Jadwal terbit, transit, dan terbenam Bulan selama satu bulan penuh. Menghitung dinamika harian Bulan dengan mempertimbangkan koreksi refraksi atmosfer dan paralaks. Data ini sangat penting bagi pengamat langit malam dan astronom.

  • Sub-Menu Input: Bulan, Tahun, Titik Koordinat.
  • Aksi & Output: Mencetak tabel Waktu Terbit (Moonrise), Titik Puncak/Kulminasi (Transit), dan Waktu Terbenam (Moonset) dengan efek refraksi atmosfer lokal.

8) Sun Times

Jadwal harian Matahari (Sunrise, Transit, Sunset). Menyediakan data presisi mengenai waktu fajar, tengah hari, dan terbenamnya matahari. Modul ini menjadi dasar perhitungan waktu-waktu fenomena siang hari.

  • Sub-Menu Input: Bulan, Tahun, Titik Koordinat.
  • Aksi & Output: Tabel bulanan waktu matahari terbit hingga terbenam (Sunrise, Transit Zawal, Sunset).

9) Sun Moon Ephemeris

Ekstraksi data koordinat langit (RA/Dec) secara detail. Menyediakan data posisi murni objek (ephemeris) per interval waktu tertentu (detik/menit/jam). Data mencakup Right Ascension, Declination, Azimuth, Altitude, hingga jarak benda langit ke bumi (Distance).

  • Sub-Menu Input: Target (Sun/Moon), Ref Waktu (UT1/TDT), Lokasi (Geosentris/Toposentris), dan Set Waktu Interval.
  • Aksi & Output: Tabel raksasa data saintifik murni berisi parameter R.A, Deklinasi, Altitude, Azimuth, Jarak Aktual, Semi-Diameter, dan Delta-T.

10) Qibla Time (Rashdul Lokal)

Menentukan waktu saat matahari berada tepat di atas arah kiblat suatu lokasi. Menggunakan algoritma segitiga bola (Spherical Trigonometry) untuk mencari waktu harian di mana azimuth matahari berhimpit dengan azimuth kiblat lokasi tersebut, sehingga bayangan benda tegak dapat digunakan untuk verifikasi arah Ka'bah secara manual.

  • Sub-Menu Input: Tanggal Observasi, Titik Koordinat.
  • Aksi & Output: Mencetak Waktu Pertama dan Waktu Kedua terjadinya fenomena Rashdul Kiblat lokal.

11) Qiblah Direction & Times

Kalkulator arah kiblat dan peta navigasi Ka'bah. Selain menghitung sudut derajat arah kiblat dari arah Utara-Barat menggunakan model Bumi Ellipsoid WGS84, modul ini menyediakan visualisasi garis kiblat pada peta dunia untuk memastikan jalur terpendek (Great Circle) menuju Makkah.

  • Sub-Menu Input: Titik Koordinat.
  • Aksi & Output: Menampilkan derajat sudut Ka'bah dari Utara Sejati dan proyeksi Garis Lengkung Great Circle di peta topografi Dunia.

12) Prayer Times

Jadwal salat 5 waktu dan fenomena senja (Twilight). Modul ini menghitung waktu Subuh, Terbit, Duha, Zuhur, Asar, Magrib, dan Isya. Mendukung berbagai standar otoritas internasional dan metode khusus untuk wilayah lintang tinggi.

  • Sub-Menu Input: Tanggal, Koordinat Lokasi, Parameter Suhu dan Ketinggian tempat, Mazhab, dan Metode Lembaga.
  • Aksi & Output: Menghasilkan Tabel Jadwal harian/bulanan lengkap dengan Midnight. Mendukung ekspor ke Gambar (Jadwal Dinding).

13) Konversi Kalender (0 M s/d 3000 M)

Transformasi tanggal antara Masehi (Gregorian/Julian) dan Hijriah (KHGT). Melakukan konversi tanggal dengan akurasi tinggi menggunakan database KHGT yang sudah terintegrasi. Menghitung secara astronomis jatuhnya fase bulan baru (bukan rumus pembagian hari manual).

  • Sub-Menu Input: Mode Konversi (M2H / H2M), Input Tanggal, Koreksi Hari Ikhtiyat.
  • Aksi & Output: Tampilan tanggal hasil konversi lengkap dengan nama hari dan hari pasaran.

14) Analisis Gerhana

Pemindaian otomatis fenomena Gerhana Matahari dan Gerhana Bulan. Menggunakan pustaka mesin pelacak otonom fenomena Syzygy untuk mendeteksi waktu puncak gerhana, jenis gerhana (Total, Cincin, Penumbra), serta visibilitasnya di wilayah Indonesia dan global.

  • Sub-Menu Input: Tahun Kalkulasi (1 M hingga 2999 M).
  • Aksi & Output: Tabel daftar gerhana setahun. Tersedia tombol untuk mengekspor Jalur Totalitas Gerhana Matahari ke format Google Earth (KML).

15) Live Animasi

Simulator posisi benda langit secara real-time. Menampilkan visualisasi pergerakan Matahari dan Bulan di atas cakrawala pengamat secara dinamis. Berguna untuk memonitor posisi hilal sesaat setelah matahari terbenam dengan rotasi derajat kemiringan cahaya sabit yang akurat.

  • Sub-Menu Input: Waktu Simulasi (Tanggal & Jam), atau biarkan di Mode LIVE.
  • Aksi & Output: Melukis garis ufuk dan memproyeksikan Gambar Matahari dan Bulan. Dilengkapi tombol 'Zoom Hilal' untuk observasi jarak dekat.

16) Sistem Sun Moon Earth

Visualisasi 3D sistem tata surya geosentrik sederhana. Menampilkan model 3D interaktif yang menunjukkan posisi Bulan dan Matahari dalam mengelilingi Bumi sebagai pusat pengamatan (Geosentrik). Termasuk proyeksi kerucut bayangan bumi (Umbra).

  • Sub-Menu Input: Set Tanggal Simulasi 3D.
  • Aksi & Output: Kanvas 3D interaktif yang menunjukkan orientasi orbit benda langit. Bisa di-Rotasi dan di-Zoom menggunakan mouse.

17) Equinox & Solstice

Menghitung waktu pergantian musim astronomis. Mendeteksi waktu presisi saat matahari melintasi ekuator langit (Equinox) dan saat mencapai deklinasi maksimum/minimum (Solstice).

  • Sub-Menu Input: Tahun.
  • Aksi & Output: Tanggal dan jam terjadinya Musim Semi, Panas, Gugur, dan Dingin.

18) Planetary Times

Jadwal visibilitas 7 planet utama (Merkurius s/d Neptunus). Menghitung waktu terbit, kulminasi, dan terbenam setiap planet untuk membantu observasi astronomi planetari selama sebulan penuh.

  • Sub-Menu Input: Pemilihan Target Planet, Bulan, dan Tahun.
  • Aksi & Output: Tabel waktu penampakan planet di langit malam (Rise/Set).

19) Simulasi Ephemeris 3D

Simulator pergerakan benda langit 3D menggunakan mesin Matplotlib. Memberikan pengalaman visual yang lebih ilmiah dan presisi. Pengguna dapat melihat posisi aktual bintang, matahari, dan bulan dalam koordinat bola langit dengan grid yang dapat diputar secara bebas.

  • Sub-Menu Input: Slider Kontrol Waktu (Tahun, Bulan, Tgl, Jam) dan Tombol Cari Sunset Otomatis.
  • Aksi & Output: Grafik 3D bola langit dengan garis ekuator dan ufuk, melukis titik objek pada koordinat Toposentrik.

20) Komparasi 50 Tahun (Ramadhan)

Studi perbandingan penentuan awal bulan antara KHGT dan kriteria lokal (MABIMS). Melakukan simulasi hisab selama 5 dekade ke depan untuk melihat sinkronisasi atau perbedaan tanggal antara standar global (KHGT) dan standar regional Asia Tenggara (MABIMS) di titik Sabang.

  • Sub-Menu Input: Hanya dieksekusi sekali jalan (1447 H - 1496 H).
  • Aksi & Output: Tabel laporan komparasi per tahun dengan status 'Serentak' atau 'Beda (Mundur 1 Hari)'.

21) Komparasi 50 Tahun (Syawal)

Analisis potensi beda Hari Raya Idul Fitri umat Islam masa depan. Identik dengan modul 20, namun dikhususkan sepenuhnya untuk melacak tanggal masuknya 1 Syawal selama 50 tahun ke depan menggunakan algoritma KHGT vs MABIMS.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Laporan matriks perbandingan 50 tahun.

22) Komparasi 50 Tahun (Zulhijah)

Analisis potensi beda Hari Raya Idul Adha umat Islam masa depan. Modul ini mensimulasikan data 5 dekade ke depan untuk melihat sinkronisasi atau perbedaan tanggal masuknya 1 Zulhijah (Idul Adha) antara standar KHGT vs MABIMS Sabang.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Laporan matriks perbandingan 50 tahun untuk bulan Zulhijah.

23) Komparasi 50 Tahun (12 Bulan)

Analisis probabilitas sinkronisasi global KHGT vs MABIMS. Mengekstrak dan membandingkan data awal bulan Hijriah selama 50 tahun penuh (12 bulan x 50 tahun = 600 bulan) untuk menghitung statistik keseragaman secara menyeluruh.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel komprehensif 600 bulan beserta ringkasan persentase probabilitas keseragaman global.

24) Tabel Tinggi Hilal 50 Thn (Ramadhan)

Ekstraksi data mentah Tinggi Hilal (Altitude) untuk 1 Ramadhan selama 50 tahun. Menyajikan data statistik ketinggian hilal jangka panjang, baik secara geosentrik maupun toposentrik.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel.

25) Tabel Elongasi Hilal 50 Thn (Ramadhan)

Ekstraksi data mentah Sudut Elongasi untuk 1 Ramadhan selama 50 tahun. Menyajikan data statistik elongasi hilal jangka panjang, baik secara geosentrik maupun toposentrik.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel.

26) Tabel Tinggi Hilal 50 Thn (Syawal)

Ekstraksi data mentah Tinggi Hilal (Altitude) untuk 1 Syawal selama 50 tahun. Menyajikan data statistik ketinggian hilal jangka panjang, khusus untuk penentuan Idul Fitri.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel.

27) Tabel Elongasi Hilal 50 Thn (Syawal)

Ekstraksi data mentah Sudut Elongasi untuk 1 Syawal selama 50 tahun. Menyajikan data statistik elongasi hilal jangka panjang, khusus untuk penentuan Idul Fitri.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel.

28) Tabel Tinggi Hilal 50 Thn (Zulhijah)

Ekstraksi data mentah Tinggi Hilal (Altitude) untuk 1 Zulhijah selama 50 tahun. Menyajikan data statistik ketinggian hilal jangka panjang, khusus untuk penentuan Idul Adha.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel.

29) Tabel Elongasi Hilal 50 Thn (Zulhijah)

Ekstraksi data mentah Sudut Elongasi untuk 1 Zulhijah selama 50 tahun. Menyajikan data statistik elongasi hilal jangka panjang, khusus untuk penentuan Idul Adha.

  • Sub-Menu Input: Eksekusi Otomatis.
  • Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel.

30) Kalender Hijriah Berjalan

Kalender visual interaktif yang terintegrasi dengan database KHGT. Menyajikan tampilan kalender bulanan yang dinamis. Dilengkapi dengan penanda hari penting Islam, puasa sunnah, serta informasi astronomi hilal (umur, elongasi, iluminasi, tinggi) yang dihitung otomatis saat maghrib.

  • Sub-Menu Input: Pilih Bulan dan Tahun Hijriah.
  • Aksi & Output: Grid visual kalender HD dengan sistem navigasi offset otomatis. Dilengkapi tombol cetak PDF / PNG Resolusi Tinggi.

31) Kalender Masehi Berjalan

Kalender visual penanggalan sipil internasional. Menampilkan matriks kalender Gregorian dengan penyematan tanggal KHGT sebagai pelengkap. Menghitung rotasi fase bulan visual untuk setiap harinya.

  • Sub-Menu Input: Pilih Bulan dan Tahun Masehi.
  • Aksi & Output: Mesin render grafis kalender yang mendukung ekspor dokumen cetak.

32) WinAI: Aplikasi AI Windows

Asisten cerdas berbasis kecerdasan buatan (AI) untuk konsultasi astronomi dan fikih. Mengintegrasikan model bahasa besar (Gemini) yang terhubung dengan konteks aplikasi. AI mampu membaca kueri internet dan merujuk dokumen Tarjih secara offline.

  • Sub-Menu Input: Kotak Chat untuk mengetik Prompt.
  • Aksi & Output: Jawaban teks cerdas dan kemampuan menjalankan fitur aplikasi secara background (Smart Interceptor).

33) Kalkulator Mizwala (Bayangan)

Simulator instrumen tongkat istiwa' atau Mizwala. Menghitung panjang dan arah bayangan benda tegak sepanjang hari. Sangat berguna untuk penentuan arah kiblat manual dan praktikum falak di lapangan.

  • Sub-Menu Input: Tinggi Tongkat (cm), dan Waktu Simulasi (Live/Kustom).
  • Aksi & Output: Tabel harian pergerakan bayangan dan visualisasi kompas Polar 2D yang berputar selaras dengan matahari.

34) Status Kriteria Batas

Simulator Anatomi Kriteria Imkanur Rukyat (KHGT). Instrumen edukasi untuk membedah parameter fisis kriteria KHGT (5-8). Pengguna dapat melihat bagaimana posisi bulan berinteraksi dengan zona kritis seperti Batas Danjon dan Bias Cahaya Senja.

  • Sub-Menu Input: Tanggal, Lokasi, dan dua buah Slider Interaktif (Parameter Elongasi & Ketinggian).
  • Aksi & Output: Sistem akan menaruh titik Bintang hasil kalkulasi astrometri aktual pada grafik Kuadran 2D. Jika pengguna menggeser slider secara manual, letak titik Bintang akan berpindah ke zona-zona pembatas (Zona Merah Danjon, Zona Jingga Bias Senja, atau Zona Hijau KHGT). Status Kelulusan Teks di bawah grafik akan ikut berubah-ubah menjelaskan alasan saintifik kegagalan/kelolosan posisi Bintang tersebut.

35) Astrofotografi & Kontras Visibilitas

Analisis teknis untuk pengambilan foto hilal (imaging). Modul ini menghitung peluang hilal terekam kamera CCD/CMOS dengan menganalisis jendela kontras (contrast window) antara kecerahan hilal dan latar belakang langit senja.

  • Sub-Menu Input: Tanggal dan Koordinat Lokasi.
  • Aksi & Output: Rekomendasi waktu terbaik pemotretan dan status kontras visibilitas fisis.

36) Prediktor Pasang Surut Gravitasi

Memprediksi fenomena pasang surut air laut akibat gaya gravitasi Bulan dan Matahari. Memberikan estimasi waktu pasang tertinggi dan terendah berdasarkan posisi relatif benda langit untuk membantu keamanan observasi di pesisir.

  • Sub-Menu Input: Tanggal dan Koordinat Pantai.
  • Aksi & Output: Laporan prediksi fluktuasi gravitasi dan estimasi waktu pasang harian.

37) Evaluasi Fajar Shadiq & SQM

Analisis fajar fisis dan kegelapan langit (Sky Quality). Modul ini mengevaluasi kemunculan fajar shadiq berdasarkan sudut depresi matahari dan estimasi teoritis nilai SQM (Sky Quality Meter).

  • Sub-Menu Input: Tanggal dan Lokasi.
  • Aksi & Output: Nilai SQM estimasi dan grafik waktu kemunculan fajar secara fisis-astronomis.

38) Generator Analemma Matahari

Pemetaan lintasan analemma Matahari dalam satu tahun. Memvisualisasikan lintasan 'angka 8' yang dibentuk oleh posisi matahari di jam yang sama sepanjang tahun akibat kemiringan sumbu bumi dan orbit elips.

  • Sub-Menu Input: Tahun Analisis, Jam Pengamatan (Lokal), dan Lokasi.
  • Aksi & Output: Laporan titik ekstrem analemma (solstice/equinox) dan grafik lintasan analemma tahunan.

39) HIJRI_DB Auto-Builder (Admin)

Fitur khusus Developer untuk merakit fondasi Kalender Aplikasi (Siklus Pembuatan Data JSON). Modul tingkat lanjut untuk membangun file database penanggalan KHGT secara otomatis dari iterasi ribuan tahun mesin Ephemeris NASA.

  • Sub-Menu Input: Tahun Awal Hijriah s/d Tahun Akhir Hijriah (Memerlukan Otorisasi Admin).
  • Aksi & Output: Menulis seluruh hasilnya menjadi File 'db_hijriah.json' baru yang secara otomatis dimuat ulang ke dalam memori aplikasi.

Python Source Code (Engine Core V7.5)

Kode sumber lengkap prosedur rilis untuk versi 7.5 yang merender fitur secara terpusat.

TAG BARU UNTUK CENTER WINDOW <--- tb.tag_configure("center_window", justify="center") # Tambahkan baris ini di area konfigurasi tag tb.tag_config("welcome_title", font=("Segoe UI", 22, "bold"), foreground="#00E676", justify="center", spacing1=15, spacing3=10) # Pembatas Garis Proporsional (Anti Terpotong Saat Toggle Layar Sempit) garis_sama = "=" * 74 garis_strip = "-" * 74 # ===================== HEADER ===================== t1 = "πŸŒ‘ πŸŒ’ πŸŒ“ πŸŒ” πŸŒ• πŸŒ– πŸŒ— 🌘 πŸŒ‘\n" t2 = "INFORMASI RILIS & DOKUMENTASI SISTEM KHGT TIMES V7.5\n" self.textbox.insert("end", t1, "emoji_header") self.textbox.insert("end", t2, "title") # ======================================================= # ---> SISIPAN DASHBOARD EXECUTIVE SUMMARY <--- # ======================================================= self.textbox.insert("end", "\n") pos_dash = self.textbox.index("end-1c") self.dashboard_widget = self.build_home_dashboard() tb.window_create("end", window=self.dashboard_widget) tb.tag_add("center_window", pos_dash, "end") self.textbox.insert("end", "\n\n") # ======================================================= # ---> 1. KONFIGURASI TAG LINK UNTUK HEADER <--- import webbrowser tb = self.textbox._textbox tb.tag_config("link_aktif_header", foreground="#00B0FF", underline=True) tb.tag_bind("link_aktif_header", "", lambda e: webbrowser.open("https://hisabmu.com/khgttimes/")) tb.tag_bind("link_aktif_header", "", lambda e: self.textbox.configure(cursor="hand2")) tb.tag_bind("link_aktif_header", "", lambda e: self.textbox.configure(cursor="xterm")) # ---> 2. MASUKKAN TEKS SEBELUM LINK <--- self.textbox.insert("end", "Akses dan download melalui link: ", "link_white") # ---> 3. MASUKKAN LINK-NYA (Warna Biru & Bisa Diklik) <--- self.textbox.insert("end", "https://hisabmu.com/khgttimes/", ("link_white", "link_aktif_header")) # ---> 4. MASUKKAN GARIS BARU (Enter) <--- self.textbox.insert("end", "\n\n", "link_white") # ===================== INTEGRASI WIDGET KALENDER HIJRIAH INTERAKTIF ===================== # State Kalender Preview (Deteksi Otomatis Berdasarkan Bulan Masehi Saat Ini) import datetime today = datetime.date.today() self.demo_h_year = 1447 # Nilai fallback (cadangan) self.demo_h_month = 9 # Nilai fallback (cadangan) # Mencari bulan Hijriah di HIJRI_DB yang beririsan dengan hari ini is_found = False for y, months in HIJRI_DB.items(): for m, m_data in enumerate(months): nama_bulan, _, start_date_str, jumlah_hari = m_data parts = start_date_str.split('-') bulan_map = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10, "Nov":11, "Dec":12} start_date = datetime.date(int(parts[2]), bulan_map.get(parts[1], 1), int(parts[0])) end_date = start_date + datetime.timedelta(days=jumlah_hari - 1) # Jika tanggal hari ini berada dalam rentang bulan Hijriah tersebut if start_date <= today <= end_date: self.demo_h_year = y self.demo_h_month = m is_found = True break if is_found: break self.demo_cal_wrapper = ctk.CTkFrame(self.textbox, fg_color="transparent") # Header Navigasi Kalender (Tengah) demo_header = ctk.CTkFrame(self.demo_cal_wrapper, fg_color="transparent") demo_header.pack(pady=(5, 15)) def demo_prev(): self.demo_h_month -= 1 if self.demo_h_month < 0: self.demo_h_month = 11 self.demo_h_year -= 1 if self.demo_h_year not in HIJRI_DB: self.demo_h_year += 1 self.demo_h_month = 0 return render_demo() def demo_next(): self.demo_h_month += 1 if self.demo_h_month > 11: self.demo_h_month = 0 self.demo_h_year += 1 if self.demo_h_year not in HIJRI_DB: self.demo_h_year -= 1 self.demo_h_month = 11 return render_demo() btn_prev = ctk.CTkButton(demo_header, text="β—€ Sebelumnya", font=("Segoe UI", 12, "bold"), width=110, fg_color="#1F1F1F", hover_color="#333333", command=demo_prev) btn_prev.pack(side="left", padx=10) self.lbl_demo_title = ctk.CTkLabel(demo_header, text="MEMUAT...", font=("Segoe UI", 18, "bold"), text_color="#FFD54F", justify="center") self.lbl_demo_title.pack(side="left", expand=True) btn_next = ctk.CTkButton(demo_header, text="Berikutnya β–Ά", font=("Segoe UI", 12, "bold"), width=110, fg_color="#1F1F1F", hover_color="#333333", command=demo_next) btn_next.pack(side="right", padx=10) self.demo_cal_grid = ctk.CTkFrame(self.demo_cal_wrapper, fg_color="#050510", corner_radius=10, border_width=1, border_color="#333333") self.demo_cal_grid.pack(padx=10, pady=(0, 10)) # --- TAMBAHAN: Frame Legend Hari Penting Islam --- self.demo_frame_legend = ctk.CTkFrame(self.demo_cal_wrapper, fg_color="#1E1E1E", corner_radius=8) self.demo_frame_legend.pack(pady=(5, 5)) ctk.CTkLabel(self.demo_frame_legend, text="Legenda:", font=("Segoe UI", 12, "bold"), text_color="#FFD54F").pack(side="left", padx=15, pady=10) # Helper function untuk menambah item legend def add_legend_item(parent, color, text): container = ctk.CTkFrame(parent, fg_color="transparent") container.pack(side="left", padx=10, pady=10) dot = ctk.CTkFrame(container, width=12, height=12, corner_radius=6, fg_color=color) dot.pack(side="left", padx=(0, 5)) ctk.CTkLabel(container, text=text, font=("Segoe UI", 11)).pack(side="left") add_legend_item(self.demo_frame_legend, "#FF5252", "Hari Haram Puasa / Hari Raya") add_legend_item(self.demo_frame_legend, "#00E676", "Puasa Sunnah Utama") add_legend_item(self.demo_frame_legend, "#00B0FF", "Puasa Ayyamul Bidh") add_legend_item(self.demo_frame_legend, "#FFA000", "Puasa Senin Kamis") add_legend_item(self.demo_frame_legend, "#8BC34A", "Ramadhan") add_legend_item(self.demo_frame_legend, "#E040FB", "Hari Besar Islam") # ---> TAMBAHAN: KETERANGAN PARAMETER ASTRONOMI & LOKASI <--- self.demo_frame_keterangan = ctk.CTkFrame(self.demo_cal_wrapper, fg_color="transparent") self.demo_frame_keterangan.pack(pady=(0, 10)) teks_ket = "* Kiri: Umur Bulan (Atas), Elongasi Geo (Bawah) | Kanan: Fraksi Iluminasi (Atas), Tinggi Hilal Geo (Bawah). Dihitung saat Maghrib." ctk.CTkLabel(self.demo_frame_keterangan, text=teks_ket, font=("Segoe UI", 13, "italic"), text_color="#ffffff").pack() # Label Dinamis untuk Tanggal, Kota, dan Koordinat self.lbl_demo_lokasi = ctk.CTkLabel(self.demo_frame_keterangan, text="πŸ“ Memuat data lokasi dan tanggal...", font=("Segoe UI", 14, "bold"), text_color="#00E5FF") self.lbl_demo_lokasi.pack(pady=(5, 0)) # ========================================================= # ---> TAMBAHAN FITUR PRINT (EKSPORT) KHUSUS DEMO KALENDER # ========================================================= self.demo_frame_export = ctk.CTkFrame(self.demo_cal_wrapper, fg_color="transparent") self.demo_frame_export.pack(pady=(15, 5)) btn_demo_pdf = ctk.CTkButton(self.demo_frame_export, text="πŸ“„ Cetak PDF (Portrait)", font=("Segoe UI", 13, "bold"), command=lambda: self.export_demo_kalender("pdf"), fg_color="#D32F2F", hover_color="#B71C1C") btn_demo_pdf.pack(side="left", padx=10) btn_demo_png = ctk.CTkButton(self.demo_frame_export, text="πŸ“Έ Simpan PNG (Portrait)", font=("Segoe UI", 13, "bold"), command=lambda: self.export_demo_kalender("png"), fg_color="#F57C00", hover_color="#E65100") btn_demo_png.pack(side="left", padx=10) # ========================================================= if not hasattr(self, '_demo_moon_imgs'): self._demo_moon_imgs = [] def render_demo(): # --- PENGAMAN STARTUP: TUNGGU EPHEMERIS SELESAI DIMUAT DARI BACKGROUND THREAD --- if getattr(self, 'eph', None) is None: for w in self.demo_cal_grid.winfo_children(): w.destroy() ctk.CTkLabel(self.demo_cal_grid, text="⏳ Sedang Memuat Mesin Ephemeris NASA, harap tunggu...", font=("Segoe UI", 14, "italic"), text_color="#FFD54F").grid(row=0, column=0, padx=50, pady=50) self.after(500, render_demo) # Ulangi / Cek lagi 0.5 detik kemudian return # ------------------------------------------------------------------------------- for w in self.demo_cal_grid.winfo_children(): w.destroy() y = self.demo_h_year m = self.demo_h_month if y not in HIJRI_DB: return m_data = HIJRI_DB[y][m] nama_bulan, _, start_date_str, jumlah_hari = m_data parts = start_date_str.split('-') bulan_map = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10, "Nov":11, "Dec":12} start_date = datetime.date(int(parts[2]), bulan_map.get(parts[1], 1), int(parts[0])) end_date = start_date + datetime.timedelta(days=jumlah_hari-1) hijri_t = f"{nama_bulan.upper()} {y} H" greg_t = f"{BULAN_MASEHI[start_date.month-1].upper()} {start_date.year}" if start_date.month != end_date.month: greg_t += f" - {BULAN_MASEHI[end_date.month-1].upper()} {end_date.year}" self.lbl_demo_title.configure(text=f"{hijri_t}\n({greg_t})") # ---> UPDATE INFORMASI TANGGAL, KOTA, DAN KOORDINAT KE LAYAR <--- try: lat_val = float(self.entry_vlat.get()) lon_val = float(self.entry_vlon.get()) elev_val = float(self.entry_velev.get()) tz_val = float(self.entry_vtz.get()) nama_kota = self.opt_city.get() nama_prov = self.opt_prov.get() except: lat_val, lon_val, elev_val, tz_val = -7.0667, 110.4100, 230.0, 7.0 nama_kota = "Semarang" nama_prov = "Jawa Tengah" teks_info_bawah = f"πŸ“ Kota: {nama_kota}, {nama_prov} | Koordinat: (Lat: {lat_val}, Lon: {lon_val})" self.lbl_demo_lokasi.configure(text=teks_info_bawah) # ----------------------------------------------------------------- days_header = ["AHAD", "SENIN", "SELASA", "RABU", "KAMIS", "JUMAT", "SABTU"] for col, day_name in enumerate(days_header): txt_color = "#FF5252" if col == 0 else ("#00E676" if col == 5 else "#FFFFFF") lbl = ctk.CTkLabel(self.demo_cal_grid, text=day_name, font=("Segoe UI", 14, "bold"), text_color=txt_color) lbl.grid(row=0, column=col, padx=4, pady=(5, 2), sticky="nsew") offset = (start_date.weekday() + 1) % 7 row_cal, col_cal = 1, offset current_g_date = start_date self._demo_moon_imgs.clear() import ephem import math import pytz from skyfield import almanac obs_ephem = ephem.Observer() obs_ephem.lat = str(lat_val) obs_ephem.lon = str(lon_val) obs_ephem.elevation = elev_val obs_ephem.pressure = 1010 obs_ephem.temp = 25 matahari_ephem = ephem.Sun() # Persiapkan objek Skyfield untuk akurasi tertinggi earth_sf = self.eph['earth'] sun_sf = self.eph['sun'] moon_sf = self.eph['moon'] for h_day in range(1, jumlah_hari + 1): # --- 1. PENANDA HARI INI (CURRENT DAY HIGHLIGHT) --- is_today = (current_g_date == datetime.date.today()) if is_today: b_color = "#FFEA00" b_width = 2 else: b_color = "#FF5252" if col_cal == 0 else ("#00E676" if col_cal == 5 else "#555555") b_width = 1.0 if (col_cal == 0 or col_cal == 5) else 1 cell = ctk.CTkFrame(self.demo_cal_grid, fg_color="#0F172A", corner_radius=6, border_width=b_width, border_color=b_color, width=200, height=75) cell.grid(row=row_cal, column=col_cal, padx=10, pady=2, sticky="nsew") cell.grid_propagate(False) frame_top = ctk.CTkFrame(cell, fg_color="transparent") frame_top.pack(fill="x", padx=10, pady=(5, 0)) # --- KALKULASI DATA ASTRONOMI SAAT MAGHRIB (SUNSET) LOKAL --- dt_noon_local = datetime.datetime(current_g_date.year, current_g_date.month, current_g_date.day, 12, 0, 0) dt_noon_utc = dt_noon_local - datetime.timedelta(hours=tz_val) obs_ephem.date = ephem.Date(dt_noon_utc.strftime("%Y/%m/%d %H:%M:%S")) try: waktu_sunset_ephem = obs_ephem.next_setting(matahari_ephem) except: waktu_sunset_ephem = obs_ephem.date + 0.25 dt_sunset_utc = waktu_sunset_ephem.datetime().replace(tzinfo=pytz.utc) t_sunset = self.ts.from_datetime(dt_sunset_utc) geo_earth = earth_sf.at(t_sunset) app_moon_geo = geo_earth.observe(moon_sf).apparent() app_sun_geo = geo_earth.observe(sun_sf).apparent() sep_deg = app_sun_geo.separation_from(app_moon_geo).degrees elongasi = sep_deg.item() if hasattr(sep_deg, 'item') else sep_deg ra_moon, dec_moon, _ = app_moon_geo.radec(epoch=t_sunset) gast = t_sunset.gast lst_deg = (gast * 15.0) + lon_val ra_h = ra_moon.hours.item() if hasattr(ra_moon.hours, 'item') else ra_moon.hours dec_r = dec_moon.radians.item() if hasattr(dec_moon.radians, 'item') else dec_moon.radians ha_deg = lst_deg - (ra_h * 15.0) lat_rad, ha_rad = math.radians(lat_val), math.radians(ha_deg) sin_alt = math.sin(dec_r) * math.sin(lat_rad) + math.cos(dec_r) * math.cos(lat_rad) * math.cos(ha_rad) tinggi_hilal = math.degrees(math.asin(max(-1.0, min(1.0, sin_alt)))) try: prev_nm = ephem.previous_new_moon(waktu_sunset_ephem) umur_bulan = waktu_sunset_ephem - prev_nm except: umur_bulan = 0.0 illum_val = almanac.fraction_illuminated(self.eph, 'moon', t_sunset) iluminasi = (illum_val.item() if hasattr(illum_val, 'item') else illum_val) * 100.0 box_kiri = ctk.CTkFrame(frame_top, fg_color="transparent") box_kiri.pack(side="left", anchor="nw") lbl_h = ctk.CTkLabel(box_kiri, text=str(h_day), font=("Segoe UI", 24, "bold"), text_color="#FFFFFF") lbl_h.pack(anchor="w") lbl_age = ctk.CTkLabel(box_kiri, text=f"{umur_bulan:.1f}", font=("Consolas", 9, "bold"), text_color="#FFFFFF") lbl_age.pack(anchor="w", pady=(0, 0)) lbl_elong = ctk.CTkLabel(box_kiri, text=f"{elongasi:.1f}Β°", font=("Consolas", 9, "bold"), text_color="#FFFFFF") lbl_elong.pack(anchor="w", pady=(0, 0)) box_kanan = ctk.CTkFrame(frame_top, fg_color="transparent") box_kanan.pack(side="right", anchor="ne") try: angle = (h_day / 29.53059) * 360.0 moon_idx = int(angle) % 360 filepath = os.path.join(BASE_DIR, "moon", f"m{moon_idx:03d}.png") if os.path.exists(filepath): img = Image.open(filepath).convert("RGBA") mask = Image.new('L', img.size, 0) draw = ImageDraw.Draw(mask) draw.ellipse((0, 0) + img.size, fill=255) img.putalpha(mask) ctk_img = ctk.CTkImage(img, size=(24, 24)) self._demo_moon_imgs.append(ctk_img) lbl_moon = ctk.CTkLabel(box_kanan, image=ctk_img, text="") else: lbl_moon = ctk.CTkLabel(box_kanan, text="πŸŒ™", font=("Segoe UI", 14)) except: lbl_moon = ctk.CTkLabel(box_kanan, text="πŸŒ™", font=("Segoe UI", 14)) lbl_moon.pack(anchor="e", pady=(2, 0)) lbl_ilu = ctk.CTkLabel(box_kanan, text=f"{iluminasi:.1f}%", font=("Consolas", 9, "bold"), text_color="#FFFFFF") lbl_ilu.pack(anchor="e", pady=(0, 0)) lbl_alt = ctk.CTkLabel(box_kanan, text=f"{tinggi_hilal:.1f}Β°", font=("Consolas", 9, "bold"), text_color="#FFFFFF") lbl_alt.pack(anchor="e", pady=(0, 0)) frame_bottom = ctk.CTkFrame(cell, fg_color="transparent") frame_bottom.pack(expand=True, fill="both", padx=10, pady=(2, 8)) m_str = f"{current_g_date.day} {BULAN_MASEHI[current_g_date.month-1].upper()} {current_g_date.year}" lbl_g = ctk.CTkLabel(frame_bottom, text=m_str, font=("Segoe UI", 10, "bold"), text_color="#FFD54F") lbl_g.pack(expand=True, anchor="center") event_color, _ = self._get_islamic_event(h_day, m + 1, current_g_date.weekday()) if event_color: dot = ctk.CTkFrame(frame_bottom, width=6, height=6, corner_radius=3, fg_color=event_color) dot.pack(side="bottom", pady=(0, 2)) col_cal += 1 if col_cal > 6: col_cal = 0 row_cal += 1 current_g_date += datetime.timedelta(days=1) for i in range(7): self.demo_cal_grid.grid_columnconfigure(i, weight=1) render_demo() # --- CARA MEMBUAT WIDGET CENTER DI DALAM TEXTBOX --- self.textbox.insert("end", "\n") pos_awal = self.textbox.index("end-1c") tb.window_create("end", window=self.demo_cal_wrapper) self.textbox.insert("end", "\n\n") # Menerapkan tag agar rata tengah (Center) tb.tag_add("center_window", pos_awal, "end") # =================================================================================== # ===================== INTRO ===================== welcome_text = "Selamat datang di KHGT Times V7.5\n" intro_1 = ("Aplikasi ini dikembangkan secara khusus sebagai perangkat lunak " "komprehensif dan mutakhir untuk perhitungan astrometri presisi tinggi, pemetaan visibilitas hilal global, " "dan penyatuan penanggalan Islam internasional serta menjadi sarana edukasi publik terkait ilmu falak Islami dan transisi penerapan KHGT di masa depan.\n") self.textbox.insert("end", welcome_text, "welcome_title") self.textbox.insert("end", intro_1, "body") self.textbox.insert("end", "Melampaui Batas Pendahulunya (Beyond Accurate Times)\n", "h4") intro_2 = ("Selama bertahun-tahun, dunia falak Islam sangat bergantung pada perangkat lunak pionir pendahulu. Aplikasi tersebut sangat berjasa meletakkan standar dasar komputasi waktu salat dan peta hilal di era awal komputasi.\n" "Namun, generasi pendahulu tersebut umumnya dibangun di atas teori analitik klasik (algoritma VSOP87), menggunakan arsitektur single-thread yang lambat, dan dikonsep murni untuk rukyatul hilal lokal/zonal, bukan untuk integrasi kalender global.\n") self.textbox.insert("end", intro_2, "body") self.textbox.insert("end", "Mengapa KHGT Times Hadir dan Sangat Penting?\n", "h4") intro_3 = ("KHGT Times hadir sebagai Quantum Leap (Lompatan Besar) komputasi untuk menjawab tantangan astronomi modern dan urgensi implementasi Kalender Hijriah Global Tunggal (KHGT) di seluruh dunia. Keunggulan absolut sistem ini meliputi:\n") self.textbox.insert("end", intro_3, "body") self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", "[1] Presisi Ephemeris JPL NASA: ", "tech") self.textbox.insert("end", "Meninggalkan kalkulasi rumus hampiran matematika klasik, beralih penuh ke integrasi numerik orbit astronomis real-time dari Development Ephemeris (DE) NASA.\n", "list_item") self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", "[2] Pemindai Kesatuan Matlak Global: ", "tech") self.textbox.insert("end", "Sistem memindai (scanning) ratusan kota di seluruh benua dalam hitungan detik untuk melacak Titik Pertama pemenuhan kriteria KHGT (PKG 1 & PKG 2) di daratan utama bumi.\n", "list_item") self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", "[3] Pemisahan Ruang Geosentris & Toposentris: ", "tech") self.textbox.insert("end", "Menghitung secara simultan dan independen parameter dari inti bumi (Geosentris) yang disyaratkan KHGT, dan dari mata pengamat (Toposentris) yang disyaratkan MABIMS.\n", "list_item") intro_4 = ("\nDengan arsitektur ini, KHGT Times adalah sebuah karya kontemporer Falak Digital yang didedikasikan untuk observatorium, lembaga riset akademik, dan pengambil kebijakan syariah di era modern.\n") self.textbox.insert("end", intro_4, "body") # ===================== BAGIAN 1: TEKNOLOGI & ENGINE ===================== self.textbox.insert("end", "\n" + garis_strip + "\n[ 1. REQUIREMENTS LIBRARY & ENGINE ASTROMETRI ]\n" + garis_strip + "\n", "subtitle") intro_tech = ("Sistem ini menggabungkan berbagai pustaka (library) saintifik standar industri untuk mencapai keseimbangan antara akurasi tingkat tinggi (High Precision) dan kecepatan pemrosesan (High Performance).\n") self.textbox.insert("end", intro_tech, "body") techs = [ ("Skyfield API", "Library Python astronomi modern. Bertugas menghitung posisi benda langit dengan akurasi setara USNO. Mengeksekusi rotasi koordinat Geosentrik (pusat bumi) maupun Toposentrik (permukaan bumi) dengan koreksi refraksi, nutasi, presesi, dan aberrasi cahaya."), ("JPL Ephemeris", "Bukan library kode, melainkan Basis Data fisik (.bsp) dari NASA. Sistem mengekstrak file de441-new.bsp (rentang waktu 0 M s/d 3000 M) untuk mendapatkan posisi absolut vektor Tata Surya (X, Y, Z)."), ("PyEphem (ephem)", "Library engine C-based turunan XEphem. Dipakai khusus sebagai akselerator kalkulasi brutal (Brute-Force), seperti iterasi mencari Waktu Terbenam (Sunset) dan Ijtimak Global di ratusan kota pada Modul 3 dan Modul 5 secara instan."), ("SciPy (scipy.interpolate)", "Library komputasi matematika kompleks. Bertugas menggunakan algoritma 'Bicubic Griddata' untuk merajut puluhan titik data kasar (Latitude/Longitude) menjadi Peta Heatmap Visual (Crescent Visibility HD Map) yang mulus (Seamless) di Modul 2."), ("NumPy", "Library manipulasi matriks. Digunakan berdampingan dengan SciPy dan Matplotlib untuk memproses Array Kalkulasi 50 Tahun serta data Linspace (pengiris waktu per detik) tanpa membebani RAM CPU."), ("Matplotlib", "Engine rendering visual grafis. Membangun ruang kanvas 3D Spasial, kurva garis ketinggian harian (Altitude Chart), dan instrumen kompas bayangan kutub (Mizwala)."), ("CustomTkinter & Tk", "Framework Graphical User Interface (GUI). Menyulap kode terminal Python menjadi aplikasi Desktop yang modern, memiliki Dark-Mode, Sidebar interaktif, dan Frame yang dinamis."), ("Pillow (PIL)", "Engine pemroses gambar raster digital. Bertugas me-render dan melukis (ImageDraw) secara internal pada modul Generator Gambar Jadwal Shalat, Kalender Hijriah/Masehi beresolusi tinggi, serta kalkulasi masking rotasi fase bulan."), ("Requests & Bs4", "Library koneksi HTTP. Digunakan pada Modul WinAI untuk menjangkau API Gemini Google, sekaligus melakukan 'Scraping' otomatis (Google Search/DuckDuckGo) secara Real-time saat AI butuh fakta terbaru di luar database."), ("FPDF & CSV", "Library manajemen format data. FPDF mencetak String text dari terminal ke file dokumen PDF yang terstruktur, sementara CSV memecah string tabel komparasi 50 tahun menjadi pemisah titik-koma (;) agar siap dibuka di Microsoft Excel.") ] for name, desc in techs: self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", f"{name} : ", "tech") self.textbox.insert("end", f"{desc}\n\n", "list_item") # ===================== BAGIAN 2: KONSEP DASAR KHGT ===================== self.textbox.insert("end", "\n" + garis_strip + "\n[ 2. KONSEP DASAR, PRINSIP & FORMULASI KHGT ]\n" + garis_strip + "\n\n", "subtitle") b2_intro = ("Kalender Hijriah Global Tunggal (KHGT) merupakan tonggak peradaban sistem penanggalan Islam unifikatif hasil Muktamar Internasional Turki 2016. Berbeda dengan sistem lokal/zonal, KHGT bertujuan menyatukan umat Islam di bawah satu sistem waktu global.\n\n") self.textbox.insert("end", b2_intro, "body") self.textbox.insert("end", "3 Prinsip Utama KHGT:\n", "h4") self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", "Kesatuan Matlak (Ittihad al-Matali'): ", "tech") self.textbox.insert("end", "Seluruh bumi dianggap sebagai satu kesatuan zona wilayah.\n", "list_item") self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", "Kaidah Transfer Visibilitas (Naql al-Rukyat): ", "tech") self.textbox.insert("end", "Jika hilal secara astronomis mungkin dirukyat di SATU titik daratan di bumi, maka visibilitas tersebut sah dan berlaku untuk SELURUH dunia.\n", "list_item") self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", "Keterpaduan Hari: ", "tech") self.textbox.insert("end", "Bulan Hijriah dimulai serentak di seluruh dunia tanpa ada negara yang berbeda tanggal.\n\n", "list_item") self.textbox.insert("end", "Parameter Kriteria (Imkanur Rukyat Istanbul 2016):\n", "h4") self.textbox.insert("end", "1. Tinggi Hilal Geosentris (Geocentric Altitude) minimal 5 derajat (Alt >= 5Β°).\n", "box_info") self.textbox.insert("end", "2. Sudut Elongasi Geosentris (Geocentric Elongation) minimal 8 derajat (Elong >= 8Β°).\n\n", "box_info") self.textbox.insert("end", "Mekanisme Eksekusi (Parameter Kalender Global / PKG):\n", "h4") self.textbox.insert("end", " 1) [PKG 1] Kondisi Normal (Wilayah Timur hingga Tengah Bumi):\n", "highlight") self.textbox.insert("end", "Sistem memindai apakah kriteria visibilitas (Alt >= 5Β° & Elong >= 8Β°) terpenuhi di daratan mana pun di bumi SEBELUM pukul 00:00 UTC. Jika terpenuhi, maka besok adalah awal bulan baru secara global.\n\n", "box_info") self.textbox.insert("end", " 2) [PKG 2] Kondisi Kritis (Wilayah Ekstrem Barat / Benua Amerika):\n", "highlight") self.textbox.insert("end", "Jika kriteria visibilitas baru terpenuhi SETELAH pukul 00:00 UTC, maka sistem otomatis membandingkan waktu Ijtimak (Konjungsi) terhadap Terbit Fajar di Gisborne, Selandia Baru.\n", "box_warn") self.textbox.insert("end", "β€’ Jika Ijtimak SEBELUM fajar Gisborne: Maka besok tetap masuk bulan baru.\n", "list_item") self.textbox.insert("end", "β€’ Jika Ijtimak SETELAH fajar Gisborne: Maka masuk bulan baru DITUNDA lusa (Lihat hasil hitung pada tanggal = ijtimak + 1) agar wilayah Timur bumi tidak berpuasa sebelum ijtimak terjadi.\n", "list_item") # ===================== BAGIAN 3: DAFTAR FITUR LENGKAP (39 MENU) ===================== self.textbox.insert("end", "\n" + garis_strip + "\n[ 3. MANUAL BOOK: PENJELASAN 39 MODUL MENU V7.5 ]\n" + garis_strip + "\n", "subtitle") self.textbox.insert("end", "Gunakan Dropdown Menu di Sidebar Kiri untuk berpindah antar modul. Berikut rinciannya:\n", "body") detailed_features = [ ("1) Visibility Hilal (KHGT)", "β€’ Kegunaan: Analisis komprehensif visibilitas hilal berdasarkan multi-kriteria global.\n" "Modul ini melakukan perhitungan astrometri presisi tinggi untuk membandingkan posisi Bulan dan Matahari saat terbenam. Sistem mengevaluasi data dari dua sudut pandang: Geosentrik (pusat bumi) dan Toposentrik (permukaan bumi/lokasi pengamat), guna memberikan akurasi data yang sesuai dengan standar hisab internasional.\n" "β€’ Sub-Menu Input: Tanggal Observasi (Y/M/D), Titik Koordinat Pengamat (Lat, Lon, Elevasi, TZ), dan Kondisi Atmosfer.\n" "β€’ Aksi & Output: Menghitung umur bulan sejak ijtimak dan memisahkan nilai Altitude/Elongasi ke dalam wujud Geosentris dan Toposentris. Mengevaluasi langsung terhadap 5 kriteria sekaligus (KHGT, MABIMS, Ilyas, Danjon, Yallop)."), ("2) Crescent Visibility Map", "β€’ Kegunaan: Pemindaian peta visibilitas hilal global dalam resolusi tinggi (HD).\n" "Menggunakan mesin iterasi spasial untuk memetakan visibilitas hilal ke seluruh permukaan bumi. Modul ini mendukung pemetaan berbagai lapisan data astronomi (layers) secara seamless, mulai dari ketinggian hilal hingga area interseksi kriteria fisis tertentu.\n" "β€’ Sub-Menu Input: Tanggal Observasi, Mode Fase Bulan, Target Pemetaan (Sunset/Moonset/Best Time).\n" "β€’ Aksi & Output: Window grafik interaktif yang menampilkan peta dunia dengan gradien warna visibilitas. Output dapat diekspor ke PNG/SVG resolusi tinggi untuk kebutuhan publikasi ilmiah."), ("3) Analisis Hilal Global", "β€’ Kegunaan: Pelacakan visibilitas hilal di seluruh zona waktu dunia secara kronologis.\n" "Algoritma ini melakukan iterasi per menit pada garis tanggal internasional untuk mendeteksi di mana dan kapan kriteria hilal pertama kali terpenuhi di muka bumi. Fokus utamanya adalah memvalidasi prinsip kesatuan matlak global.\n" "β€’ Sub-Menu Input: Tanggal Referensi dan Waktu Acuan UTC.\n" "β€’ Aksi & Output: Mencetak tabel raksasa yang men-sorting 300+ Kota di database dari nilai umur bulan dan ketinggian hilal (Geosentris & Toposentris). Membantu pengguna melihat negara mana yang lebih dulu berpeluang merukyat."), ("4) Altitude Chart Analyser", "β€’ Kegunaan: Visualisasi kurva ketinggian harian benda langit.\n" "Modul ini merelasikan pergerakan semu harian Matahari dan Bulan dalam sebuah grafik sinusoida. Berguna untuk melihat titik puncak (transit), waktu terbit-terbenam, serta gap ketinggian antara Matahari dan Bulan sepanjang 24 jam penuh di lokasi tertentu.\n" "β€’ Sub-Menu Input: Tanggal, Titik Koordinat.\n" "β€’ Aksi & Output: Menggambar grafik garis yang memotong Sumbu Nol (Garis Ufuk). Pengguna dapat melihat secara matematis jam berapa titik temu kedua benda langit terjadi, lengkap dengan penanda interaktif 'Waktu Sekarang' (Real-time)."), ("5) Kota Pertama KHGT (Mainland)", "β€’ Kegunaan: Melacak titik daratan utama (Mainland) pertama di dunia yang masuk bulan baru.\n" "Merupakan fitur krusial dalam Kalender Hijriah Global Tunggal untuk menentukan dimulainya hari pertama bulan Hijriah. Sistem secara otomatis mengabaikan pulau-pulau kecil di Pasifik dan fokus pada daratan utama benua yang memenuhi syarat 5-8 (Tinggi 5Β°, Elongasi 8Β°).\n" "β€’ Sub-Menu Input: Tanggal Konjungsi/Ijtima'.\n" "β€’ Aksi & Output: Laporan teks dan peta topografi global yang menandai lokasi spesifik (bintang emas) lengkap dengan analisis PKG 1 dan PKG 2 (Kriteria Gisborne)."), ("6) Fase Bulan (Moonphase)", "β€’ Kegunaan: Prediktor siklus fase bulan bulanan dan tahunan.\n" "Menghitung fraksi iluminasi dan sudut fase untuk menentukan bentuk bulan yang tampak dari bumi, mulai dari New Moon, First Quarter, Full Moon, hingga Last Quarter.\n" "β€’ Sub-Menu Input: Tahun Masehi (Mendukung tahun 0 M s/d 3000 M).\n" "β€’ Aksi & Output: Mencetak matriks tabel 4 Fase Utama (New Moon/Ijtimak, First Quarter, Full Moon/Purnama, Last Quarter) secara berurutan beserta Jam:Menit-nya."), ("7) Moon Times", "β€’ Kegunaan: Jadwal terbit, transit, dan terbenam Bulan selama satu bulan penuh.\n" "Menghitung dinamika harian Bulan dengan mempertimbangkan koreksi refraksi atmosfer dan paralaks. Data ini sangat penting bagi pengamat langit malam dan astronom.\n" "β€’ Sub-Menu Input: Bulan, Tahun, Titik Koordinat.\n" "β€’ Aksi & Output: Mencetak tabel Waktu Terbit (Moonrise), Titik Puncak/Kulminasi (Transit), dan Waktu Terbenam (Moonset) dengan efek refraksi atmosfer lokal."), ("8) Sun Times", "β€’ Kegunaan: Jadwal harian Matahari (Sunrise, Transit, Sunset).\n" "Menyediakan data presisi mengenai waktu fajar, tengah hari, dan terbenamnya matahari. Modul ini menjadi dasar perhitungan waktu-waktu fenomena siang hari.\n" "β€’ Sub-Menu Input: Bulan, Tahun, Titik Koordinat.\n" "β€’ Aksi & Output: Tabel bulanan waktu matahari terbit hingga terbenam (Sunrise, Transit Zawal, Sunset)."), ("9) Sun Moon Ephemeris", "β€’ Kegunaan: Ekstraksi data koordinat langit (RA/Dec) secara detail.\n" "Menyediakan data posisi murni objek (ephemeris) per interval waktu tertentu (detik/menit/jam). Data mencakup Right Ascension, Declination, Azimuth, Altitude, hingga jarak benda langit ke bumi (Distance).\n" "β€’ Sub-Menu Input: Target (Sun/Moon), Ref Waktu (UT1/TDT), Lokasi (Geosentris/Toposentris), dan Set Waktu Interval.\n" "β€’ Aksi & Output: Tabel raksasa data saintifik murni berisi parameter R.A, Deklinasi, Altitude, Azimuth, Jarak Aktual, Semi-Diameter, dan Delta-T."), ("10) Qibla Time (Rashdul Lokal)", "β€’ Kegunaan: Menentukan waktu saat matahari berada tepat di atas arah kiblat suatu lokasi.\n" "Menggunakan algoritma segitiga bola (Spherical Trigonometry) untuk mencari waktu harian di mana azimuth matahari berhimpit dengan azimuth kiblat lokasi tersebut, sehingga bayangan benda tegak dapat digunakan untuk verifikasi arah Ka'bah secara manual.\n" "β€’ Sub-Menu Input: Tanggal Observasi, Titik Koordinat.\n" "β€’ Aksi & Output: Mencetak Waktu Pertama dan Waktu Kedua terjadinya fenomena Rashdul Kiblat lokal."), ("11) Qiblah Direction & Times", "β€’ Kegunaan: Kalkulator arah kiblat dan peta navigasi Ka'bah.\n" "Selain menghitung sudut derajat arah kiblat dari arah Utara-Barat menggunakan model Bumi Ellipsoid WGS84, modul ini menyediakan visualisasi garis kiblat pada peta dunia untuk memastikan jalur terpendek (Great Circle) menuju Makkah.\n" "β€’ Sub-Menu Input: Titik Koordinat.\n" "β€’ Aksi & Output: Menampilkan derajat sudut Ka'bah dari Utara Sejati dan proyeksi Garis Lengkung Great Circle di peta topografi Dunia."), ("12) Prayer Times", "β€’ Kegunaan: Jadwal salat 5 waktu dan fenomena senja (Twilight).\n" "Modul ini menghitung waktu Subuh, Terbit, Duha, Zuhur, Asar, Magrib, dan Isya. Mendukung berbagai standar otoritas internasional dan metode khusus untuk wilayah lintang tinggi.\n" "β€’ Sub-Menu Input: Tanggal, Koordinat Lokasi, Parameter Suhu dan Ketinggian tempat, Mazhab, dan Metode Lembaga.\n" "β€’ Aksi & Output: Menghasilkan Tabel Jadwal harian/bulanan lengkap dengan Midnight. Mendukung ekspor ke Gambar (Jadwal Dinding)."), ("13) Konversi Kalender (0 M s/d 3000 M)", "β€’ Kegunaan: Transformasi tanggal antara Masehi (Gregorian/Julian) dan Hijriah (KHGT).\n" "Melakukan konversi tanggal dengan akurasi tinggi menggunakan database KHGT yang sudah terintegrasi. Menghitung secara astronomis jatuhnya fase bulan baru (bukan rumus pembagian hari manual).\n" "β€’ Sub-Menu Input: Mode Konversi (M2H / H2M), Input Tanggal, Koreksi Hari Ikhtiyat.\n" "β€’ Aksi & Output: Tampilan tanggal hasil konversi lengkap dengan nama hari dan hari pasaran."), ("14) Analisis Gerhana", "β€’ Kegunaan: Pemindaian otomatis fenomena Gerhana Matahari dan Gerhana Bulan.\n" "Menggunakan pustaka mesin pelacak otonom fenomena Syzygy untuk mendeteksi waktu puncak gerhana, jenis gerhana (Total, Cincin, Penumbra), serta visibilitasnya di wilayah Indonesia dan global.\n" "β€’ Sub-Menu Input: Tahun Kalkulasi (1 M hingga 2999 M).\n" "β€’ Aksi & Output: Tabel daftar gerhana setahun. Tersedia tombol untuk mengekspor Jalur Totalitas Gerhana Matahari ke format Google Earth (KML)."), ("15) Live Animasi", "β€’ Kegunaan: Simulator posisi benda langit secara real-time.\n" "Menampilkan visualisasi pergerakan Matahari dan Bulan di atas cakrawala pengamat secara dinamis. Berguna untuk memonitor posisi hilal sesaat setelah matahari terbenam dengan rotasi derajat kemiringan cahaya sabit yang akurat.\n" "β€’ Sub-Menu Input: Waktu Simulasi (Tanggal & Jam), atau biarkan di Mode LIVE.\n" "β€’ Aksi & Output: Melukis garis ufuk dan memproyeksikan Gambar Matahari dan Bulan. Dilengkapi tombol 'Zoom Hilal' untuk observasi jarak dekat."), ("16) Sistem Sun Moon Earth", "β€’ Kegunaan: Visualisasi 3D sistem tata surya geosentrik sederhana.\n" "Menampilkan model 3D interaktif yang menunjukkan posisi Bulan dan Matahari dalam mengelilingi Bumi sebagai pusat pengamatan (Geosentrik). Termasuk proyeksi kerucut bayangan bumi (Umbra).\n" "β€’ Sub-Menu Input: Set Tanggal Simulasi 3D.\n" "β€’ Aksi & Output: Kanvas 3D interaktif yang menunjukkan orientasi orbit benda langit. Bisa di-Rotasi dan di-Zoom menggunakan mouse."), ("17) Equinox & Solstice", "β€’ Kegunaan: Menghitung waktu pergantian musim astronomis.\n" "Mendeteksi waktu presisi saat matahari melintasi ekuator langit (Equinox) dan saat mencapai deklinasi maksimum/minimum (Solstice).\n" "β€’ Sub-Menu Input: Tahun.\n" "β€’ Aksi & Output: Tanggal dan jam terjadinya Musim Semi, Panas, Gugur, dan Dingin."), ("18) Planetary Times", "β€’ Kegunaan: Jadwal visibilitas 7 planet utama (Merkurius s/d Neptunus).\n" "Menghitung waktu terbit, kulminasi, dan terbenam setiap planet untuk membantu observasi astronomi planetari selama sebulan penuh.\n" "β€’ Sub-Menu Input: Pemilihan Target Planet, Bulan, dan Tahun.\n" "β€’ Aksi & Output: Tabel waktu penampakan planet di langit malam (Rise/Set)."), ("19) Simulasi Ephemeris 3D", "β€’ Kegunaan: Simulator pergerakan benda langit 3D menggunakan mesin Matplotlib.\n" "Memberikan pengalaman visual yang lebih ilmiah dan presisi. Pengguna dapat melihat posisi aktual bintang, matahari, dan bulan dalam koordinat bola langit dengan grid yang dapat diputar secara bebas.\n" "β€’ Sub-Menu Input: Slider Kontrol Waktu (Tahun, Bulan, Tgl, Jam) dan Tombol Cari Sunset Otomatis.\n" "β€’ Aksi & Output: Grafik 3D bola langit dengan garis ekuator dan ufuk, melukis titik objek pada koordinat Toposentrik."), ("20) Komparasi 50 Tahun (Ramadhan)", "β€’ Kegunaan: Studi perbandingan penentuan awal bulan antara KHGT dan kriteria lokal (MABIMS).\n" "Melakukan simulasi hisab selama 5 dekade ke depan untuk melihat sinkronisasi atau perbedaan tanggal antara standar global (KHGT) dan standar regional Asia Tenggara (MABIMS) di titik Sabang.\n" "β€’ Sub-Menu Input: Hanya dieksekusi sekali jalan (1447 H - 1496 H).\n" "β€’ Aksi & Output: Tabel laporan komparasi per tahun dengan status 'Serentak' atau 'Beda (Mundur 1 Hari)'."), ("21) Komparasi 50 Tahun (Syawal)", "β€’ Kegunaan: Analisis potensi beda Hari Raya Idul Fitri umat Islam masa depan.\n" "Identik dengan modul 20, namun dikhususkan sepenuhnya untuk melacak tanggal masuknya 1 Syawal selama 50 tahun ke depan menggunakan algoritma KHGT vs MABIMS.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Laporan matriks perbandingan 50 tahun."), ("22) Komparasi 50 Tahun (Zulhijah)", "β€’ Kegunaan: Analisis potensi beda Hari Raya Idul Adha umat Islam masa depan.\n" "Modul ini mensimulasikan data 5 dekade ke depan untuk melihat sinkronisasi atau perbedaan tanggal masuknya 1 Zulhijah (Idul Adha) antara standar KHGT vs MABIMS Sabang.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Laporan matriks perbandingan 50 tahun untuk bulan Zulhijah."), ("23) Komparasi 50 Tahun (12 Bulan)", "β€’ Kegunaan: Analisis probabilitas sinkronisasi global KHGT vs MABIMS.\n" "Mengekstrak dan membandingkan data awal bulan Hijriah selama 50 tahun penuh (12 bulan x 50 tahun = 600 bulan) untuk menghitung statistik keseragaman secara menyeluruh.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel komprehensif 600 bulan beserta ringkasan persentase probabilitas keseragaman global."), ("24) Tabel Tinggi Hilal 50 Thn (Ramadhan)", "β€’ Kegunaan: Ekstraksi data mentah Tinggi Hilal (Altitude) untuk 1 Ramadhan selama 50 tahun.\n" "Menyajikan data statistik ketinggian hilal jangka panjang, baik secara geosentrik maupun toposentrik.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel."), ("25) Tabel Elongasi Hilal 50 Thn (Ramadhan)", "β€’ Kegunaan: Ekstraksi data mentah Sudut Elongasi untuk 1 Ramadhan selama 50 tahun.\n" "Menyajikan data statistik elongasi hilal jangka panjang, baik secara geosentrik maupun toposentrik.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel."), ("26) Tabel Tinggi Hilal 50 Thn (Syawal)", "β€’ Kegunaan: Ekstraksi data mentah Tinggi Hilal (Altitude) untuk 1 Syawal selama 50 tahun.\n" "Menyajikan data statistik ketinggian hilal jangka panjang, khusus untuk penentuan Idul Fitri.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel."), ("27) Tabel Elongasi Hilal 50 Thn (Syawal)", "β€’ Kegunaan: Ekstraksi data mentah Sudut Elongasi untuk 1 Syawal selama 50 tahun.\n" "Menyajikan data statistik elongasi hilal jangka panjang, khusus untuk penentuan Idul Fitri.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel."), ("28) Tabel Tinggi Hilal 50 Thn (Zulhijah)", "β€’ Kegunaan: Ekstraksi data mentah Tinggi Hilal (Altitude) untuk 1 Zulhijah selama 50 tahun.\n" "Menyajikan data statistik ketinggian hilal jangka panjang, khusus untuk penentuan Idul Adha.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel."), ("29) Tabel Elongasi Hilal 50 Thn (Zulhijah)", "β€’ Kegunaan: Ekstraksi data mentah Sudut Elongasi untuk 1 Zulhijah selama 50 tahun.\n" "Menyajikan data statistik elongasi hilal jangka panjang, khusus untuk penentuan Idul Adha.\n" "β€’ Sub-Menu Input: Eksekusi Otomatis.\n" "β€’ Aksi & Output: Tabel nilai saintifik 50 tahun ke depan yang kompatibel diekspor ke CSV Excel."), ("30) Kalender Hijriah Berjalan", "β€’ Kegunaan: Kalender visual interaktif yang terintegrasi dengan database KHGT.\n" "Menyajikan tampilan kalender bulanan yang dinamis. Dilengkapi dengan penanda hari penting Islam, puasa sunnah, serta informasi astronomi hilal (umur, elongasi, iluminasi, tinggi) yang dihitung otomatis saat maghrib.\n" "β€’ Sub-Menu Input: Pilih Bulan dan Tahun Hijriah.\n" "β€’ Aksi & Output: Grid visual kalender HD dengan sistem navigasi offset otomatis. Dilengkapi tombol cetak PDF / PNG Resolusi Tinggi."), ("31) Kalender Masehi Berjalan", "β€’ Kegunaan: Kalender visual penanggalan sipil internasional.\n" "Menampilkan matriks kalender Gregorian dengan penyematan tanggal KHGT sebagai pelengkap. Menghitung rotasi fase bulan visual untuk setiap harinya.\n" "β€’ Sub-Menu Input: Pilih Bulan dan Tahun Masehi.\n" "β€’ Aksi & Output: Mesin render grafis kalender yang mendukung ekspor dokumen cetak."), ("32) WinAI: Aplikasi AI Windows", "β€’ Kegunaan: Asisten cerdas berbasis kecerdasan buatan (AI) untuk konsultasi astronomi dan fikih.\n" "Mengintegrasikan model bahasa besar (Gemini) yang terhubung dengan konteks aplikasi. AI mampu membaca kueri internet dan merujuk dokumen Tarjih secara offline.\n" "β€’ Sub-Menu Input: Kotak Chat untuk mengetik Prompt.\n" "β€’ Aksi & Output: Jawaban teks cerdas dan kemampuan menjalankan fitur aplikasi secara background (Smart Interceptor)."), ("33) Kalkulator Mizwala (Bayangan)", "β€’ Kegunaan: Simulator instrumen tongkat istiwa' atau Mizwala.\n" "Menghitung panjang dan arah bayangan benda tegak sepanjang hari. Sangat berguna untuk penentuan arah kiblat manual dan praktikum falak di lapangan.\n" "β€’ Sub-Menu Input: Tinggi Tongkat (cm), dan Waktu Simulasi (Live/Kustom).\n" "β€’ Aksi & Output: Tabel harian pergerakan bayangan dan visualisasi kompas Polar 2D yang berputar selaras dengan matahari."), ("34) Status Kriteria Batas", "β€’ Kegunaan: Simulator Anatomi Kriteria Imkanur Rukyat (KHGT).\n" "Instrumen edukasi untuk membedah parameter fisis kriteria KHGT (5-8). Pengguna dapat melihat bagaimana posisi bulan berinteraksi dengan zona kritis seperti Batas Danjon dan Bias Cahaya Senja.\n" "β€’ Sub-Menu Input: Tanggal, Lokasi, dan dua buah Slider Interaktif (Parameter Elongasi & Ketinggian).\n" "β€’ Aksi & Output: Sistem akan menaruh titik Bintang hasil kalkulasi astrometri aktual pada grafik Kuadran 2D. Jika pengguna menggeser slider secara manual, letak titik Bintang akan berpindah ke zona-zona pembatas (Zona Merah Danjon, Zona Jingga Bias Senja, atau Zona Hijau KHGT). Status Kelulusan Teks di bawah grafik akan ikut berubah-ubah menjelaskan alasan saintifik kegagalan/kelolosan posisi Bintang tersebut."), ("35) Astrofotografi & Kontras Visibilitas", "β€’ Kegunaan: Analisis teknis untuk pengambilan foto hilal (imaging).\n" "Modul ini menghitung peluang hilal terekam kamera CCD/CMOS dengan menganalisis jendela kontras (contrast window) antara kecerahan hilal dan latar belakang langit senja.\n" "β€’ Sub-Menu Input: Tanggal dan Koordinat Lokasi.\n" "β€’ Aksi & Output: Rekomendasi waktu terbaik pemotretan dan status kontras visibilitas fisis."), ("36) Prediktor Pasang Surut Gravitasi", "β€’ Kegunaan: Memprediksi fenomena pasang surut air laut akibat gaya gravitasi Bulan dan Matahari.\n" "Memberikan estimasi waktu pasang tertinggi dan terendah berdasarkan posisi relatif benda langit untuk membantu keamanan observasi di pesisir.\n" "β€’ Sub-Menu Input: Tanggal dan Koordinat Pantai.\n" "β€’ Aksi & Output: Laporan prediksi fluktuasi gravitasi dan estimasi waktu pasang harian."), ("37) Evaluasi Fajar Shadiq & SQM", "β€’ Kegunaan: Analisis fajar fisis dan kegelapan langit (Sky Quality).\n" "Modul ini mengevaluasi kemunculan fajar shadiq berdasarkan sudut depresi matahari dan estimasi teoritis nilai SQM (Sky Quality Meter).\n" "β€’ Sub-Menu Input: Tanggal dan Lokasi.\n" "β€’ Aksi & Output: Nilai SQM estimasi dan grafik waktu kemunculan fajar secara fisis-astronomis."), ("38) Generator Analemma Matahari", "β€’ Kegunaan: Pemetaan lintasan analemma Matahari dalam satu tahun.\n" "Memvisualisasikan lintasan 'angka 8' yang dibentuk oleh posisi matahari di jam yang sama sepanjang tahun akibat kemiringan sumbu bumi dan orbit elips.\n" "β€’ Sub-Menu Input: Tahun Analisis, Jam Pengamatan (Lokal), dan Lokasi.\n" "β€’ Aksi & Output: Laporan titik ekstrem analemma (solstice/equinox) dan grafik lintasan analemma tahunan."), ("39) HIJRI_DB Auto-Builder (Admin)", "β€’ Kegunaan: Fitur khusus Developer untuk merakit fondasi Kalender Aplikasi (Siklus Pembuatan Data JSON).\n" "Modul tingkat lanjut untuk membangun file database penanggalan KHGT secara otomatis dari iterasi ribuan tahun mesin Ephemeris NASA.\n" "β€’ Sub-Menu Input: Tahun Awal Hijriah s/d Tahun Akhir Hijriah (Memerlukan Otorisasi Admin).\n" "β€’ Aksi & Output: Menulis seluruh hasilnya menjadi File 'db_hijriah.json' baru yang secara otomatis dimuat ulang ke dalam memori aplikasi.") ] # Render list menu dengan dua tag berbeda agar berwarna dan rapi for title, desc in detailed_features: self.textbox.insert("end", f"β–Ά {title}\n", "menu_title") self.textbox.insert("end", f"{desc}\n\n", "menu_desc") # ===================== BAGIAN 4: HIGHLIGHT PEMBARUAN ===================== self.textbox.insert("end", "\n" + garis_strip + "\n[ 4. HIGHLIGHT PEMBARUAN EKSKLUSIF (VERSI 7.5) ]\n" + garis_strip + "\n", "subtitle") updates = [ ("[V7.5 - MENUS] Ekspansi Modul Ekstraksi & Komparasi", "Penambahan modul analisis komparasi 12 Bulan (Probabilitas Global) serta pemisahan ekstraktor tabel Tinggi & Elongasi 50 Tahun untuk Ramadhan, Syawal, dan Zulhijah, menjadikan total 39 Modul."), ("[V7.4 - ENGINE] Penyederhanaan Ephemeris DE441", "Sistem kini HANYA menggunakan satu file ephemeris mutakhir yaitu 'de441-new.bsp' untuk seluruh kalkulasi pada rentang waktu 1 s/d 2999 Masehi. File .bsp lainnya tidak lagi digunakan dan dapat dihapus dari folder aplikasi untuk menghemat penyimpanan."), ("[V7.3 - MODUL 31-34] Modul Analisis Fisis Baru", "Penambahan fitur Astrofotografi, Pasang Surut, Evaluasi SQM Fajar, dan Generator Analemma Matahari untuk riset yang lebih mendalam."), ("[V7.3 - MODUL 35] HIJRI_DB Auto-Builder", "Tool khusus Admin/Developer untuk merekonstruksi dan merender ulang seluruh siklus penanggalan KHGT selama ratusan tahun secara otomatis."), ("[V7.3 - WINAI] Optimasi Engine Gemini", "Asisten AI kini lebih stabil dalam melakukan kueri pencarian internet otonom dan rujukan dokumen fikih/tarjih."), ("[V7.3 - UI/UX] Refinement Kalender", "Penyempurnaan tata letak matriks kalender visual dan perbaikan engine Pillow (PIL) agar hasil ekspor PNG/PDF tetap tajam pada resolusi tinggi."), ("[V7.3 - ENGINE] Akurasi JPL DE4xx", "Optimalisasi penanganan data ephemeris NASA untuk mendukung perhitungan tahun-tahun ekstrem tanpa hambatan sistem.") ] for key, val in updates: self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", f"{key}: ", "highlight") self.textbox.insert("end", f"{val}\n", "list_item") # ===================== BAGIAN 5: PANDUAN PENGGUNAAN ===================== self.textbox.insert("end", garis_strip + "\n[ 5. PANDUAN OPERASIONAL & EXPORT ]\n" + garis_strip + "\n", "subtitle") # ---> 1. TAMBAHKAN KONFIGURASI TAG LINK DI SINI <--- import webbrowser tb = self.textbox._textbox # HANYA gunakan link_aktif untuk styling (warna dan garis bawah) # JANGAN tambahkan tag_bind di sini agar tidak dobel klik tb.tag_config("link_aktif", foreground="#00B0FF", underline=True) # --------------------------------------------------- guides = [ ("DOWNLOAD BUKU KHGT TIMES", "Silahkan download aplikasi KHGT Times melalui link: https://s.id/buku-khgttimes"), ("PYTHON MASTERY (TUTORIAL)", "Akses tutorial Python dasar melalui link: https://kasmui.cloud/python/"), ("NAVIGASI MODUL", "Gunakan menu dropdown scrollable 'KHGT ENGINE' di sidebar kiri untuk beralih antar 39 modul perhitungan saintifik. Masing-masing modul akan menyembunyikan form input yang tidak relevan agar layar selalu rapi dan fokus."), ("INPUT LOKASI", "Tersedia dua opsi. Anda bisa menyeleksi dari Dropdown Provinsi/Kota bawaan aplikasi, atau gunakan tombol 'πŸ“ Deteksi Lokasi Otomatis' untuk memanggil API Geolocation IP agar sistem melacak titik GPS dan mendeteksi Timezone otomatis."), ("EKSEKUSI DATA", "Pada sebagian besar modul berbasis teks dan grafik, Anda cukup mengisi parameter lalu klik tombol biru besar 'β–Ά PROSES DATA' di panel bawah. Tombol ini otomatis bersembunyi jika Anda sedang memasuki modul Live/Real-time."), ("INTERAKSI GRAFIS", "Khusus pada kanvas 3D Matplotlib dan Simulasi 3D Spasial, biasakan diri menggunakan klik Kiri Mouse (tahan dan geser) untuk Merotasi orientasi kamera/sudut pandang, serta Roda Mouse (Scroll) untuk melakukan perbesaran (Zoom In/Out)."), ("SISTEM EXPORT", "Terdapat panel aksi (Action Bar) melayang di sudut kanan atas layar (atau di bawah tabel/kanvas): \n [πŸ’Ύ TXT] Menyimpan data tabel saat ini ke file Notepad.\n [πŸ“Έ PNG] Menyimpan kanvas visual / laporan ke gambar PNG.\n [πŸ“„ PDF] Mencetak dokumen laporan standar akademik fpdf.\n [πŸ“Š CSV] Mengekstrak data komparasi 50 Tahun ke Excel.\n [🏠 RILIS] Tombol reset darurat kembali ke Dokumentasi.") ] # ---> 2. PERBAIKAN LOOPING AGAR TIAP LINK BERBEDA & BISA DIKLIK <--- for i, (key, val) in enumerate(guides): self.textbox.insert("end", "β–Ή ", "highlight") self.textbox.insert("end", f"{key} : ", "tech") # Deteksi jika ada link URL di dalam teks if "https://" in val: start_idx = val.find("https://") end_idx = val.find(" ", start_idx) if end_idx == -1: end_idx = len(val) link_url = val[start_idx:end_idx] bagian = val.split(link_url) # Buat nama TAG UNIK untuk setiap link (contoh: url_0, url_1) tag_unik = f"url_{i}" # Teks sebelum link self.textbox.insert("end", bagian[0], "list_item") # Teks link yang disisipkan dengan TAG UNIK dan styling "link_aktif" self.textbox.insert("end", link_url, ("list_item", tag_unik, "link_aktif")) # Binding event klik kiri () KHUSUS untuk tag unik ini menuju URL aslinya self.textbox.tag_bind(tag_unik, "", lambda event, url=link_url: webbrowser.open(url)) # Mengubah kursor jadi tangan saat di-hover KHUSUS untuk tag unik ini tb.tag_bind(tag_unik, "", lambda e: tb.configure(cursor="hand2")) tb.tag_bind(tag_unik, "", lambda e: tb.configure(cursor="xterm")) # Teks setelah link self.textbox.insert("end", bagian[1] + "\n", "list_item") else: self.textbox.insert("end", f"{val}\n", "list_item") # --------------------------------------------------- # ===================== FOOTER COPYLEFT ===================== footer_text = "\n\n" + garis_sama + "\n" footer_text += "Copyleft (Ι”) Kasmui, 2026. All Left Reserved.\n" footer_text += "Perangkat lunak ini didedikasikan secara penuh untuk kemajuan sains dan astronomi Islam global.\n" footer_text += garis_sama + "\n" self.textbox.insert("end", footer_text, "footer") # 4. Kunci Textbox dan update judul layar utama self.textbox.configure(state="disabled") self.lbl_main_title.configure(text="KHGT Times V7.5") def create_input_row(self, parent, label_text, default_val): row = ctk.CTkFrame(parent, fg_color="transparent") row.pack(fill="x", padx=10, pady=2) ctk.CTkLabel(row, text=label_text, font=("Segoe UI", 12)).pack(side="left") entry = ctk.CTkEntry(row, width=80, justify="right") entry.delete(0, 'end') entry.insert(0, default_val) entry.pack(side="right") return entry EOT; echo "
" . htmlspecialchars($python_code) . "
"; ?>