Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79268a61ff | ||
|
|
6c6ee120ce | ||
|
|
d07c32556b | ||
|
|
7c1da23da0 | ||
|
|
9fecd18519 | ||
|
|
f5708c6dc6 |
21
README.md
21
README.md
@@ -30,11 +30,32 @@ RadioDJViewer is a Windows Forms application for displaying song information and
|
||||
3. Output files will be saved in the selected output folder.
|
||||
4. If album art is missing, a fallback image will be used.
|
||||
|
||||
## Some info for you
|
||||
1. URL format follows the format from RadioDJ (http://{ip}:{port}/np?auth={password})
|
||||
2. The Variables that you see in the URL format like "{ip},{port} and {password}" They need to be present in format box which you would have typed out, If not the program cannot access the REST API
|
||||
|
||||
## License
|
||||
This project is licensed under the MIT License.
|
||||
|
||||
## Repository
|
||||
[https://git.smartcraft.me/minster586/RadioDJViewer](https://git.smartcraft.me/minster586/RadioDJViewer)
|
||||
|
||||
## My inspiration
|
||||
I was inspired to use this make this program by a few people as I use Radio DJ for pretty much everything music relatedwise.
|
||||
When I started this it originally was just a command line console based program written in Java which is still available and works on pretty much any OS you can think of
|
||||
This started off as a thing where I wanted my actual music playing program for streams playing video games to show what was playing
|
||||
A quick google search led to a bunch of things that I liked but were web based and I was trying to stick away from web based programs
|
||||
And I know that particular person that I'm about to mention is probably going to look at this and get a kick out of it
|
||||
It got me thinking that is there a way that I can get the information and parse that information and this program was born
|
||||
|
||||
[https://www.youtube.com/@RodericksRadioDJTutorials] Yes I put your Youtube channel
|
||||
|
||||
All things aside it works the way that I like there are a few more changes that I want to do to it
|
||||
For example debugging and what not but it should work on pretty much any system that has .NET framework 4.7.2 Obviously it says that in the requirements
|
||||
I will say the biggest thing that helped me was copilot I know it seems a little strange but as I am just learning how to do this I figured why not give it a shot
|
||||
|
||||
With that being said if you want to see it live in action you can find my links page here Pop into my streams ask me about it
|
||||
[https://links.smartcraft.me/@minster586]
|
||||
|
||||
---
|
||||
For questions or issues, please open an issue on the repository or contact the maintainer.
|
||||
103
RadioDJViewer/Main.Designer.cs
generated
103
RadioDJViewer/Main.Designer.cs
generated
@@ -53,6 +53,11 @@
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.uicolor = new System.Windows.Forms.Button();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.profile_drop_box = new System.Windows.Forms.ComboBox();
|
||||
this.profile_label = new System.Windows.Forms.Label();
|
||||
this.load_profile_button = new System.Windows.Forms.Button();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.menuStrip2.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
@@ -66,7 +71,7 @@
|
||||
this.toolStripStatusLabel2,
|
||||
this.toolStripStatusLabel4,
|
||||
this.toolStripStatusLabel3});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 268);
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 314);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(612, 25);
|
||||
this.statusStrip1.TabIndex = 0;
|
||||
@@ -137,7 +142,7 @@
|
||||
this.offToolStripMenuItem});
|
||||
this.loggingToolStripMenuItem.Enabled = false;
|
||||
this.loggingToolStripMenuItem.Name = "loggingToolStripMenuItem";
|
||||
this.loggingToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.loggingToolStripMenuItem.Size = new System.Drawing.Size(118, 22);
|
||||
this.loggingToolStripMenuItem.Text = "Logging";
|
||||
//
|
||||
// onToolStripMenuItem
|
||||
@@ -168,6 +173,8 @@
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.label8);
|
||||
this.groupBox1.Controls.Add(this.label7);
|
||||
this.groupBox1.Controls.Add(this.label6);
|
||||
this.groupBox1.Controls.Add(this.label5);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
@@ -184,61 +191,67 @@
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.Location = new System.Drawing.Point(99, 129);
|
||||
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label6.Location = new System.Drawing.Point(99, 140);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(266, 17);
|
||||
this.label6.TabIndex = 5;
|
||||
this.label6.Text = "No album";
|
||||
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.Location = new System.Drawing.Point(99, 83);
|
||||
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label5.Location = new System.Drawing.Point(99, 84);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(266, 17);
|
||||
this.label5.TabIndex = 4;
|
||||
this.label5.Text = "No artist";
|
||||
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Location = new System.Drawing.Point(99, 39);
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label4.Location = new System.Drawing.Point(99, 33);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(266, 16);
|
||||
this.label4.TabIndex = 3;
|
||||
this.label4.Text = "No title";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.Location = new System.Drawing.Point(23, 126);
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.Location = new System.Drawing.Point(23, 138);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(64, 20);
|
||||
this.label3.Size = new System.Drawing.Size(76, 24);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "Album:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label2.Location = new System.Drawing.Point(23, 80);
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label2.Location = new System.Drawing.Point(23, 82);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(57, 20);
|
||||
this.label2.Size = new System.Drawing.Size(62, 24);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Artist:";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(23, 35);
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(23, 29);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(48, 20);
|
||||
this.label1.Size = new System.Drawing.Size(56, 24);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Title:";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(250, 216);
|
||||
this.button1.Location = new System.Drawing.Point(62, 230);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(99, 42);
|
||||
this.button1.TabIndex = 5;
|
||||
@@ -248,7 +261,7 @@
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(392, 216);
|
||||
this.button2.Location = new System.Drawing.Point(180, 230);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(99, 42);
|
||||
this.button2.TabIndex = 6;
|
||||
@@ -259,7 +272,7 @@
|
||||
// uicolor
|
||||
//
|
||||
this.uicolor.Image = global::RadioDJViewer.Properties.Resources.MdiWeatherNight;
|
||||
this.uicolor.Location = new System.Drawing.Point(13, 234);
|
||||
this.uicolor.Location = new System.Drawing.Point(572, 276);
|
||||
this.uicolor.Name = "uicolor";
|
||||
this.uicolor.Size = new System.Drawing.Size(28, 23);
|
||||
this.uicolor.TabIndex = 7;
|
||||
@@ -273,11 +286,60 @@
|
||||
this.pictureBox1.TabIndex = 3;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// profile_drop_box
|
||||
//
|
||||
this.profile_drop_box.FormattingEnabled = true;
|
||||
this.profile_drop_box.Location = new System.Drawing.Point(62, 278);
|
||||
this.profile_drop_box.Name = "profile_drop_box";
|
||||
this.profile_drop_box.Size = new System.Drawing.Size(217, 21);
|
||||
this.profile_drop_box.TabIndex = 8;
|
||||
//
|
||||
// profile_label
|
||||
//
|
||||
this.profile_label.AutoSize = true;
|
||||
this.profile_label.Location = new System.Drawing.Point(12, 281);
|
||||
this.profile_label.Name = "profile_label";
|
||||
this.profile_label.Size = new System.Drawing.Size(44, 13);
|
||||
this.profile_label.TabIndex = 9;
|
||||
this.profile_label.Text = "Profiles:";
|
||||
this.profile_label.Click += new System.EventHandler(this.label7_Click);
|
||||
//
|
||||
// load_profile_button
|
||||
//
|
||||
this.load_profile_button.Location = new System.Drawing.Point(285, 276);
|
||||
this.load_profile_button.Name = "load_profile_button";
|
||||
this.load_profile_button.Size = new System.Drawing.Size(75, 23);
|
||||
this.load_profile_button.TabIndex = 10;
|
||||
this.load_profile_button.Text = "Load Profile";
|
||||
this.load_profile_button.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(19, 61);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(357, 16);
|
||||
this.label7.TabIndex = 6;
|
||||
this.label7.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(24, 118);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(357, 16);
|
||||
this.label8.TabIndex = 7;
|
||||
this.label8.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――";
|
||||
this.label8.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// Main
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(612, 293);
|
||||
this.ClientSize = new System.Drawing.Size(612, 339);
|
||||
this.Controls.Add(this.load_profile_button);
|
||||
this.Controls.Add(this.profile_label);
|
||||
this.Controls.Add(this.profile_drop_box);
|
||||
this.Controls.Add(this.uicolor);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
@@ -326,6 +388,11 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem onToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem offToolStripMenuItem;
|
||||
private System.Windows.Forms.Button uicolor;
|
||||
private System.Windows.Forms.ComboBox profile_drop_box;
|
||||
private System.Windows.Forms.Label profile_label;
|
||||
private System.Windows.Forms.Button load_profile_button;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,8 @@ namespace RadioDJViewer
|
||||
marqueeTimerAlbum.Tick += MarqueeTimerAlbum_Tick;
|
||||
// Wire up dark mode button
|
||||
this.uicolor.Click += Uicolor_Click;
|
||||
this.load_profile_button.Click += load_profile_button_Click;
|
||||
PopulateProfileDropBox();
|
||||
UpdateTheme();
|
||||
// Auto-load profiles if profiles.json exists
|
||||
AutoLoadProfiles();
|
||||
@@ -124,9 +126,28 @@ namespace RadioDJViewer
|
||||
catch { }
|
||||
}
|
||||
|
||||
private int GetVisibleChars(Label label)
|
||||
{
|
||||
// Use the label's actual width and font to estimate visible characters
|
||||
using (Graphics g = label.CreateGraphics())
|
||||
{
|
||||
// Use the full label width for measurement
|
||||
SizeF size = g.MeasureString("W", label.Font);
|
||||
int chars = (int)(label.Width / size.Width);
|
||||
// If the label is single-line, ensure we use the full width
|
||||
return Math.Max(chars, 1);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetLabelTextFull(Label label, string text)
|
||||
{
|
||||
// Always set the full text, and let marquee logic handle scrolling
|
||||
label.Text = text;
|
||||
}
|
||||
|
||||
private void MarqueeTimerTitle_Tick(object sender, EventArgs e)
|
||||
{
|
||||
int visibleChars = 30; // Adjust for label width
|
||||
int visibleChars = GetVisibleChars(label4);
|
||||
if (marqueeTextTitle.Length > visibleChars)
|
||||
{
|
||||
string separator = string.IsNullOrEmpty(marqueeSeparator) ? "" : marqueeSeparator;
|
||||
@@ -152,13 +173,13 @@ namespace RadioDJViewer
|
||||
}
|
||||
else
|
||||
{
|
||||
label4.Text = marqueeTextTitle;
|
||||
SetLabelTextFull(label4, marqueeTextTitle);
|
||||
}
|
||||
}
|
||||
|
||||
private void MarqueeTimerArtist_Tick(object sender, EventArgs e)
|
||||
{
|
||||
int visibleChars = 30;
|
||||
int visibleChars = GetVisibleChars(label5);
|
||||
if (marqueeTextArtist.Length > visibleChars)
|
||||
{
|
||||
string separator = string.IsNullOrEmpty(marqueeSeparator) ? "" : marqueeSeparator;
|
||||
@@ -184,13 +205,13 @@ namespace RadioDJViewer
|
||||
}
|
||||
else
|
||||
{
|
||||
label5.Text = marqueeTextArtist;
|
||||
SetLabelTextFull(label5, marqueeTextArtist);
|
||||
}
|
||||
}
|
||||
|
||||
private void MarqueeTimerAlbum_Tick(object sender, EventArgs e)
|
||||
{
|
||||
int visibleChars = 30;
|
||||
int visibleChars = GetVisibleChars(label6);
|
||||
if (marqueeTextAlbum.Length > visibleChars)
|
||||
{
|
||||
string separator = string.IsNullOrEmpty(marqueeSeparator) ? "" : marqueeSeparator;
|
||||
@@ -216,7 +237,7 @@ namespace RadioDJViewer
|
||||
}
|
||||
else
|
||||
{
|
||||
label6.Text = marqueeTextAlbum;
|
||||
SetLabelTextFull(label6, marqueeTextAlbum);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -525,11 +546,18 @@ namespace RadioDJViewer
|
||||
mainImagesFolderPath = profile.MainImagesFolder; // Update new field
|
||||
loadedProfile = profile; // Store loaded profile for REST API connection
|
||||
// Update polling rate when profile is loaded
|
||||
int pollingRate = loadedProfile?.PollingRateSeconds > 0 ? loadedProfile.PollingRateSeconds : 3;
|
||||
int pollingRate = profile.PollingRateSeconds > 0 ? profile.PollingRateSeconds : 3;
|
||||
apiTimer.Interval = pollingRate * 1000;
|
||||
SetMarqueeScrollSpeed(profile.MarqueeScrollSpeed ?? "Medium");
|
||||
SetMarqueePauseTime(profile.MarqueePauseTime > 0 ? profile.MarqueePauseTime : 6);
|
||||
SetMarqueeSeparator(profile.MarqueeSeparator ?? " | ");
|
||||
// Immediately apply marquee settings to timers
|
||||
if (pauseTimerTitle != null) pauseTimerTitle.Interval = marqueePauseTime;
|
||||
if (pauseTimerArtist != null) pauseTimerArtist.Interval = marqueePauseTime;
|
||||
if (pauseTimerAlbum != null) pauseTimerAlbum.Interval = marqueePauseTime;
|
||||
marqueeTimerTitle.Interval = marqueeScrollSpeed;
|
||||
marqueeTimerArtist.Interval = marqueeScrollSpeed;
|
||||
marqueeTimerAlbum.Interval = marqueeScrollSpeed;
|
||||
UpdateStatusBar();
|
||||
// You can add more logic to update other fields if needed
|
||||
}
|
||||
@@ -593,5 +621,42 @@ namespace RadioDJViewer
|
||||
ApplyThemeRecursive(child, backColor, foreColor);
|
||||
}
|
||||
}
|
||||
|
||||
private void label7_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string GetCurrentProfileName()
|
||||
{
|
||||
return currentProfile;
|
||||
}
|
||||
|
||||
private void PopulateProfileDropBox()
|
||||
{
|
||||
profile_drop_box.Items.Clear();
|
||||
var profileNames = ProfileStorage.GetProfileNames();
|
||||
profile_drop_box.Items.AddRange(profileNames.ToArray());
|
||||
// Set selected item to current profile if available
|
||||
string currentProfile = GetCurrentProfileName();
|
||||
if (!string.IsNullOrEmpty(currentProfile) && profileNames.Contains(currentProfile))
|
||||
profile_drop_box.SelectedItem = currentProfile;
|
||||
else if (profile_drop_box.Items.Count > 0)
|
||||
profile_drop_box.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void load_profile_button_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (profile_drop_box.SelectedItem != null)
|
||||
{
|
||||
var profile = ProfileStorage.LoadProfile(profile_drop_box.SelectedItem.ToString());
|
||||
if (profile != null)
|
||||
{
|
||||
LoadProfile(profile);
|
||||
UpdateStatusBar();
|
||||
MessageBox.Show($"Profile '{profile.Name}' loaded.", "Profile Loaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,9 @@ using System.Runtime.InteropServices;
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("RadioDJViewer")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyDescription("RadioDJ Metadata OBS Extractor")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyCompany("Smartcraft Media Group")]
|
||||
[assembly: AssemblyProduct("RadioDJViewer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2025")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.1.0")]
|
||||
[assembly: AssemblyFileVersion("1.1.0")]
|
||||
[assembly: AssemblyVersion("1.5.0")]
|
||||
[assembly: AssemblyFileVersion("1.5.0")]
|
||||
|
||||
@@ -13,6 +13,21 @@
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@@ -112,5 +127,17 @@
|
||||
<None Include="Resources\MdiWeatherSunny.png" />
|
||||
<None Include="Resources\MdiWeatherNight.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
56
RadioDJViewer/radiodj-restapi-template.Designer.cs
generated
56
RadioDJViewer/radiodj-restapi-template.Designer.cs
generated
@@ -32,7 +32,7 @@
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.ok_button_master = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
@@ -51,12 +51,12 @@
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.textBox6 = new System.Windows.Forms.TextBox();
|
||||
this.button5 = new System.Windows.Forms.Button();
|
||||
this.button6 = new System.Windows.Forms.Button();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.textBox7 = new System.Windows.Forms.TextBox();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.comboBoxScrollSpeed = new System.Windows.Forms.ComboBox();
|
||||
this.textBoxPauseTime = new System.Windows.Forms.TextBox();
|
||||
this.separatingcharacterformatbox = new System.Windows.Forms.TextBox();
|
||||
@@ -64,7 +64,6 @@
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
@@ -97,14 +96,14 @@
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "URL Format:";
|
||||
//
|
||||
// button1
|
||||
// ok_button_master
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(35, 584);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(157, 23);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "Save";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.ok_button_master.Location = new System.Drawing.Point(35, 584);
|
||||
this.ok_button_master.Name = "ok_button_master";
|
||||
this.ok_button_master.Size = new System.Drawing.Size(157, 23);
|
||||
this.ok_button_master.TabIndex = 1;
|
||||
this.ok_button_master.Text = "OK";
|
||||
this.ok_button_master.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
@@ -182,7 +181,7 @@
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Location = new System.Drawing.Point(60, 419);
|
||||
this.button3.Location = new System.Drawing.Point(90, 419);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(120, 30);
|
||||
this.button3.TabIndex = 8;
|
||||
@@ -191,7 +190,7 @@
|
||||
//
|
||||
// button4
|
||||
//
|
||||
this.button4.Location = new System.Drawing.Point(216, 419);
|
||||
this.button4.Location = new System.Drawing.Point(305, 419);
|
||||
this.button4.Name = "button4";
|
||||
this.button4.Size = new System.Drawing.Size(120, 30);
|
||||
this.button4.TabIndex = 9;
|
||||
@@ -261,15 +260,6 @@
|
||||
this.textBox6.Size = new System.Drawing.Size(290, 20);
|
||||
this.textBox6.TabIndex = 15;
|
||||
//
|
||||
// button5
|
||||
//
|
||||
this.button5.Location = new System.Drawing.Point(382, 419);
|
||||
this.button5.Name = "button5";
|
||||
this.button5.Size = new System.Drawing.Size(120, 30);
|
||||
this.button5.TabIndex = 16;
|
||||
this.button5.Text = "Load Profile";
|
||||
this.button5.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button6
|
||||
//
|
||||
this.button6.Location = new System.Drawing.Point(23, 269);
|
||||
@@ -319,7 +309,6 @@
|
||||
this.groupBox2.Controls.Add(this.label7);
|
||||
this.groupBox2.Controls.Add(this.label6);
|
||||
this.groupBox2.Controls.Add(this.button6);
|
||||
this.groupBox2.Controls.Add(this.button5);
|
||||
this.groupBox2.Controls.Add(this.groupBox3);
|
||||
this.groupBox2.Controls.Add(this.button4);
|
||||
this.groupBox2.Controls.Add(this.button3);
|
||||
@@ -338,6 +327,15 @@
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Profiles";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(20, 240);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(142, 13);
|
||||
this.label13.TabIndex = 32;
|
||||
this.label13.Text = "Separating Character Format";
|
||||
//
|
||||
// comboBoxScrollSpeed
|
||||
//
|
||||
this.comboBoxScrollSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
@@ -402,15 +400,6 @@
|
||||
this.label12.TabIndex = 27;
|
||||
this.label12.Text = "Separating character format";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(20, 240);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(142, 13);
|
||||
this.label13.TabIndex = 32;
|
||||
this.label13.Text = "Separating Character Format";
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@@ -418,7 +407,7 @@
|
||||
this.ClientSize = new System.Drawing.Size(543, 619);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.ok_button_master);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "Form1";
|
||||
@@ -438,7 +427,7 @@
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button ok_button_master;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
@@ -457,7 +446,6 @@
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private System.Windows.Forms.TextBox textBox6;
|
||||
private System.Windows.Forms.Button button5;
|
||||
private System.Windows.Forms.Button button6;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label7;
|
||||
|
||||
@@ -32,9 +32,8 @@ namespace RadioDJViewer
|
||||
this.buttonSelectOutputFolder.Click += ButtonSelectOutputFolder_Click;
|
||||
this.button6.Click += ButtonSelectMainImagesFolder_Click;
|
||||
this.button3.Click += button3_Click;
|
||||
this.button1.Click += button1_Click;
|
||||
this.ok_button_master.Click += button1_Click;
|
||||
this.button4.Click += button4_Click;
|
||||
this.button5.Click += button5_Click;
|
||||
this.button2.Click += button2_Click;
|
||||
// Populate profile list on open
|
||||
LoadProfileList();
|
||||
@@ -152,33 +151,6 @@ namespace RadioDJViewer
|
||||
}
|
||||
}
|
||||
|
||||
private void button5_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Load Profile (Load Profile button)
|
||||
if (comboBox1.SelectedItem != null)
|
||||
{
|
||||
var profile = ProfileStorage.LoadProfile(comboBox1.SelectedItem.ToString());
|
||||
if (profile != null)
|
||||
{
|
||||
textBox6.Text = profile.Name;
|
||||
textBox2.Text = profile.IP;
|
||||
textBox3.Text = profile.Port;
|
||||
textBox4.Text = profile.Password;
|
||||
outputFolderPath = profile.OutputFolder;
|
||||
mainImagesFolderPath = profile.MainImagesFolder;
|
||||
labelOutputFolderPath.Text = outputFolderPath;
|
||||
label6.Text = mainImagesFolderPath;
|
||||
textBox5.Text = profile.OutputImageName;
|
||||
textBox1.Text = profile.UrlFormat;
|
||||
Main mainForm = Application.OpenForms["Main"] as Main;
|
||||
if (mainForm != null)
|
||||
{
|
||||
mainForm.LoadProfile(profile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Save (bottom Save button) - save all fields to the currently selected or new profile
|
||||
|
||||
BIN
screenshots/Screenshot 2025-09-08 164704.png
Normal file
BIN
screenshots/Screenshot 2025-09-08 164704.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
BIN
screenshots/Screenshot 2025-09-08 165521.png
Normal file
BIN
screenshots/Screenshot 2025-09-08 165521.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
Reference in New Issue
Block a user